<?php

namespace App\Traits;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Log;
use App\Models\WorkerFile;
trait ValidatorTraits
{
    public function validateRequest(Request $request, $rules)
    {
        $error = Validator::make($request->all(), $rules);
        if($error->fails())
        {
            return response()->json(['errors' => $error->errors()->all()])->setStatusCode(200);
        }
    }


    public function validateCertificateFiles(Request $payload){
        $messages = array('files_names.*.max' => 'File name should not exceed 200 characters.', 'files_names.*.min' => 'File name should atleast has 1 character.');
        $rules = array('files_names.*' => 'required|min:1|max:200');
        $validator = Validator::make($payload->all(), $rules, $messages);

        if ($validator->fails()){
            return response()->json(['errors' =>$validator->errors()->first()])->setStatusCode(200);
        }
    }

    public function validateCerficatesName($payload, $workerID){
        
        $fileList = $payload->files_names;
        $indexCount = 0;
        foreach($fileList as $name){
            $filePayloadName = 'files.'. $indexCount;
            $resumeExtension = $payload->file($filePayloadName)->extension(); //get the extension

            $newName = str_replace ( '.'.$resumeExtension, '', $name);  // remove the extension on the file name, to be validated

            $validateDuplicate = WorkerFile::where('name', $newName)
            ->where('worker_id', $workerID)
            ->first();

            if($validateDuplicate){
                return response()->json(['errors' => 'The file `'. $name .'` is already uploaded. Remove the existing one to replace it.'])->setStatusCode(201);
            }   
            $indexCount++;
        }
    }

}