<?php

namespace Modules\Employee\Repositories;

use Illuminate\Support\Facades\DB;
use Modules\Employee\Models\Employee;

class EmployeeRepository implements EmployeeInterface
{
    public function findAll()
    {
        return Employee::paginate(20);
    }

    public function getEmployeeById($employeeId)
    {
        return Employee::findOrFail($employeeId);
    }

    public function getEmployeeByEmail($email)
    {
        return Employee::where('email', $email)->first();
    }

    public function delete($employeeId)
    {
        Employee::destroy($employeeId);
    }

    public function create($employeeDetails)
    {
        return Employee::create($employeeDetails);
    }

    public function update($employeeId, array $newDetails)
    {
        return Employee::whereId($employeeId)->update($newDetails);
    }

    public function pluck()
    {
        return Employee::pluck(DB::raw('CONCAT(first_name," ", middle_name , " ",last_name) AS full_name'), 'id');
    }

    // public function uploadImage($file)
    // {
    //     if ($req->file()) {
    //         $fileName = time() . '_' . $req->file->getClientOriginalName();
    //         $filePath = $req->file('file')->storeAs('uploads', $fileName, 'public');
    //         $fileModel->name = time() . '_' . $req->file->getClientOriginalName();
    //         $fileModel->file_path = '/storage/' . $filePath;
    //         $fileModel->save();
    //         return back()
    //             ->with('success', 'File has been uploaded.')
    //             ->with('file', $fileName);
    //     }
    // }

}