Edit File: NegotiationOrderController.php
<?php namespace App\Http\Controllers\Api\User; use App\Models\Message; use App\Models\MessageNotification; use App\Traits\ResponseTrait; use App\Traits\PaginationTrait; use App\Models\NegotiationOrder; use App\Services\CallService; use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use App\Enums\NegotiationOrderStatusEnum; use App\Services\User\NegotiationOrderService; use App\Http\Requests\Api\User\UnPricingOrders\StoreRequest; use App\Http\Resources\Api\User\UnPricingOrders\OrdersResource; use App\Http\Requests\Api\User\UnPricingOrders\PayInvoiceRequest; use App\Http\Resources\Api\User\UnPricingOrders\OrderDetailsResource; class NegotiationOrderController extends Controller { use ResponseTrait, PaginationTrait; public function __construct(private NegotiationOrderService $negotiationOrderService) {} public function store(StoreRequest $request): JsonResponse { $request = $this->negotiationOrderService->create(request: $request->validated()); return $this->successMsg($request['msg']); } public function orders(): JsonResponse { $conditions = ['user_id' => auth()->id()]; $orders = $this->negotiationOrderService->all(paginateNum: 20, conditions: $conditions)['rows']; return $this->successData([ 'orders' => OrdersResource::collection($orders), 'pagination' => $this->paginationModel($orders) ]); } public function details($id): JsonResponse { $order = $this->negotiationOrderService->find($id)['row']; return $this->successData(OrderDetailsResource::make($order)); } public function declineInvoice($order_id, $invoice_id, $message_id): JsonResponse { $notificationMsg = MessageNotification::find($message_id); if (!$notificationMsg) return $this->failMsg(__('apis.not_found')); $existsMessage = Message::where('type', 'invoice')->find($notificationMsg->message_id); if (!$existsMessage) return $this->failMsg(__('apis.not_found')); $result = $this->negotiationOrderService->declineInvoice(order_id: $order_id, invoice_id: $invoice_id, msg_id: $existsMessage->id); return $this->successMsg($result['msg']); } public function payInvoice($order_id, $invoice_id, PayInvoiceRequest $request): JsonResponse { $result = $this->negotiationOrderService->payInvoice(order_id: $order_id, invoice_id: $invoice_id, request: $request); return $this->response($result['key'], $result['msg']); } public function orderInvoiceView($order_num = null) { $order = $this->negotiationOrderService->displayOrderByOrderNumber( order_num: $order_num, conditions: ['status' => NegotiationOrderStatusEnum::Invoice_paid->value], ); abort_unless($order, 404); $invoice = $order->invoices()->first(); // dd($order, $invoice); return view('app.negotiation_order_invoice', compact('order', 'invoice')); } public function makeCall($order_id): JsonResponse { $result = (new CallService())->makeCall(NegotiationOrder::class, 'user_id', $order_id, 'negotiation'); return $this->response($result['key'], $result['msg'], $result['data']); } }
Back to File Manager