Image URL is giving blank page in Laravel

298 Views Asked by At

EmployeeController

<?php

namespace App\Http\Controllers;

use App\Http\Resources\EmployeeListResource;
use App\Talent\Employee\Requests\EmployeeCreateRequest;
use App\Talent\Employee\EmployeeManager;
use Illuminate\Http\Response;
use App\Talent\User\UserManager;
use App\Talent\Documents\DocumentManager;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
use App\Talent\Employee\Model\Employee;


class EmployeeController extends Controller
{
    public function __construct(private EmployeeManager $employeeManager,private Employee $employee,private UserManager $userManager,private DocumentManager $documentManager)
    {

    }

    public function store(EmployeeCreateRequest $request){
        $validated = $request->validated();
        $userArray=[
            'name'=>$validated['first_name']." ".$validated['last_name'],
            'email'=>$validated['email'],
            'password'=>Hash::make("Introcept@123"),
            'role'=>'user'
         ];
             $userCreate=$this->userManager->store($userArray);
             return $this->employeeStore($validated,$userCreate);
    }

    public function employeeStore($validated,$userCreate){
        if(empty($validated['avatar'])){
            $validated['avatar']=null;
        }
        else{
            $validated['avatar']=$validated['avatar']->store('employeeimages','public');
        }
        $userId=$userCreate->id;
        $userIdArray=[
             'user_id'=>$userId,
             'status'=>'Active',
            ];
        $employeeArray=array_merge($validated,$userIdArray);
        $employeeCreate=$this->employeeManager->store($employeeArray);
        $employeeId=$employeeCreate->id;

            foreach($validated['documents'] as $document){
            $name=$document->getClientOriginalName();
            $type=$document->getClientMimeType();
            $path=$document->store('employeedocuments','public');
            $documentArray=[
                'employee_id'=>$employeeId,
                'original_name'=>$name,
                'type'=>$type,
                'path'=>$path,
            ];
            $documentCreate=$this->documentManager->store($documentArray);
            }

        return response([
            'userId'=>$userId,
            'employeeId'=>$employeeId,
            'message'=>'Personal detail added successfully',
        ],Response::HTTP_OK);
    }

    public function index(Request $request)
    {
        $search=$request->query('search');
        $perpage=$request->query('perPage');
        $filter=$request->query('filter');
        $employeeList=$this->employeeManager->employeeList($perpage,$search,$filter);
        return EmployeeListResource::collection($employeeList);
    }
    
}

EmployeeManager

<?php
namespace App\Talent\Employee;
use App\Talent\Employee\Model\Employee;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;

class EmployeeManager
{
    public function __construct(private Employee $employee)
    {

    }

    public function store(array $employeeArray):Employee
    {
        $employee= $this->employee->create($employeeArray);
        return $employee;
    }
    public function employeeList(?int $perPage=10, ?string $search=null, ?string $filter=null):LengthAwarePaginator
    {
        return $this->employee->with('employment:employee_id,current_position,work_schedule,team')
        ->when(!empty($search),function($query) use ($search)
        {
        $query->where('first_name','LIKE','%'.$search.'%')->orWhere('last_name','LIKE','%'.$search.'%')
        ->orWhere('email','LIKE','%'.$search.'%');
        })
        ->when(!empty($filter),function($query) use ($filter)
        {
        $query->where('status',$filter)->orWhereRelation('employment','team',$filter);
        })
        ->select(['id','first_name','last_name','email','status','avatar','contact_number'])
        ->paginate($perPage);
     }
}

api.php

Route::get('/',[EmployeeController::class,'index']);

I am creating listing API where it gives data of all the employees. Everything is working fine but my image URL(i.e. avatar) gives blank page whenever I load that URL in my browser. I have no idea why it is giving blank page any help or suggestion will be really appreciated. Thank you.

Here is my folder structure for images

0

There are 0 best solutions below