Edit File: OrderController.php
<?php namespace App\Http\Controllers\Api\Delegate; use App\Enums\NotificationTypeEnum; use App\Enums\OrderPayStatus; use App\Http\Controllers\Controller; use App\Http\Requests\Api\Delegate\Order\{ConfirmPaymentCashRequest, DeliveredFromProviderRequest, OnClientLocationRequest, OnMyWayToClientRequest, OnMyWayToProviderRequest, OrderDeliveredToClientRequest}; use App\Http\Resources\Api\Delegate\Orders\{OrderDetailsResource, OrdersResource, OrderUserDetailsResource}; use App\Notifications\OrderNotification; use App\Services\Api\OrderService; use App\Services\ClientService; use App\Traits\{OrderTrait, PaginationTrait, ResponseTrait}; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Notification; class OrderController extends Controller { use ResponseTrait, PaginationTrait, OrderTrait; public function __construct(private OrderService $orderService, private ClientService $clientService) { } public function index($status): JsonResponse { $isCancelled = $status === 'cancelled'; $orderStatus = $this->orderStatusesForDelegate($status); $orders = $isCancelled && empty($orderStatus) ? $this->orderService->getIgnoredOrderForDelegate(): $this->orderService->getOrderAccordingToStatus(user: 'delegate_id', statuses: $orderStatus); return $this->successData([ 'orders' => OrdersResource::collection($orders), 'pagination' => $this->paginationModel($orders), ]); } public function show($id): JsonResponse { $result = $this->orderService->detailsForDelegates($id); return $this->response($result['key'], $result['msg'], OrderDetailsResource::make($result['data'])); } public function getUserDetails($user_id): JsonResponse { $user = $this->clientService->find(id: $user_id); return $this->successData(OrderUserDetailsResource::make($user)); } public function onMyWayToProvider(OnMyWayToProviderRequest $request): JsonResponse { $result = $this->orderService->changeOrderStatus(request: $request); Notification::send($request->order?->user, new OrderNotification(order: $request->order, type: NotificationTypeEnum::On_my_way_to_provider->value)); return $this->response($result['key'], $result['msg']); } public function deliveredFromProvider(DeliveredFromProviderRequest $request): JsonResponse { $result = $this->orderService->changeOrderStatus(request: $request); Notification::send($request->order?->user, new OrderNotification(order: $request->order, type: NotificationTypeEnum::Delivered_to_delegate->value)); return $this->response($result['key'], $result['msg']); } public function onMyWayToClient(OnMyWayToClientRequest $request): JsonResponse { $result = $this->orderService->changeOrderStatus(request: $request); Notification::send($request->order?->user, new OrderNotification(order: $request->order, type: NotificationTypeEnum::On_the_way_to_client->value)); return $this->response($result['key'], $result['msg']); } public function onClientLocation(OnClientLocationRequest $request): JsonResponse { $result = $this->orderService->changeOrderStatus(request: $request); Notification::send($request->order?->user, new OrderNotification(order: $request->order, type: NotificationTypeEnum::Delegate_at_location->value)); return $this->response($result['key'], $result['msg']); } public function confirmPaymentCash(ConfirmPaymentCashRequest $request): JsonResponse { $result = $this->orderService->updateOrder(order: $request->order, updated_data: ['pay_status' => OrderPayStatus::PAID->value]); return $this->response($result['key'], __('apis.cash_payment_confirmed')); } public function orderDeliveredToClient(OrderDeliveredToClientRequest $request): JsonResponse { $result = $this->orderService->changeOrderStatus(request: $request); // Notification::send([$request->order?->user,$request->order?->provider], new OrderNotification(order: $request->order, type: NotificationTypeEnum::Delegate_delivered_to_client->value)); Notification::send([$request->order?->user, $request->order?->provider], new OrderNotification(order: $request->order, type: NotificationTypeEnum::Client_delivered->value)); return $this->response($result['key'], $result['msg']); } }
Back to File Manager