Edit File: HomeController.php
<?php namespace App\Http\Controllers\Api\User; use App\Http\Controllers\Controller; use App\Http\Requests\Api\User\Home\UpdateDeliveredAtLocationRequest; use App\Http\Resources\Api\BasicResource; use App\Http\Resources\Api\General\BasicResourceWithImage; use App\Http\Resources\Api\General\Settings\ImageResource; use App\Http\Resources\Api\User\LocationResource; use App\Http\Resources\Api\User\NeighborhoodResource; use App\Http\Resources\Api\User\ProviderCollectionResource; use App\Http\Resources\Api\User\SearchHistoryResource; use App\Models\Image; use App\Services\ClientService; use App\Services\NeighborhoodService; use App\Services\Provider\ProviderService; use App\Services\SettingService; use App\Services\User\CartService; use App\Traits\PaginationTrait; use App\Traits\ResponseTrait; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class HomeController extends Controller { use ResponseTrait, PaginationTrait; public function __construct( private SettingService $settingService, private NeighborhoodService $neighborhoodService, private ProviderService $ProviderService, private ClientService $clientService, ) {} public function home(Request $request): JsonResponse { $sliders = $this->settingService->getAppMenu(Image::class)['rows']; $neighborhoods = $this->neighborhoodService->getAccordingToCity(city: auth()->user()?->city)['rows']; return $this->successData([ 'cart_items_count' => auth()->check() ? (new CartService())->getCartItemsCount() : null, 'delivered_at_location' => auth()->check() ? new LocationResource(auth()->user()) : null, 'sliders' => ImageResource::collection($sliders), 'Neighborhoods' => NeighborhoodResource::collection($neighborhoods), 'best_closest_providers' => ProviderCollectionResource::collection($this->bestClosestProviders($request)), ]); } public function bestClosestProviders($request) { return $this->ProviderService->getBestClosestProviders(request: $request)['rows']; } public function updateDeliveredAtLocation(UpdateDeliveredAtLocationRequest $request): JsonResponse { $this->clientService->edit(request: $request->validated(), id: auth()->id()); return $this->successMsg(__('apis.updated')); } public function neighborhoods(): JsonResponse { $neighborhoods = $this->neighborhoodService->all(paginateNum: 20); return $this->successData( [ 'Neighborhoods' => NeighborhoodResource::collection($neighborhoods), 'pagination' => $this->paginationModel($neighborhoods) ] ); } public function getSearchHistory(): JsonResponse { $rows = auth()->user()?->searchHistory; return $this->successData(SearchHistoryResource::collection($rows)); } public function deleteSearchHistory($id): JsonResponse { try { auth()->user()?->searchHistory()->where('id', $id)->delete(); return $this->successMsg(__('apis.deleted')); } catch (\Exception $e) { return $this->failedMsg(__('apis.not_found')); } } public function categories(): JsonResponse { $rows = $this->settingService->getMainCategories()['rows']; return $this->successData(BasicResourceWithImage::collection($rows)); } }
Back to File Manager