'Generate E-Invoices', 'message' => sprintf( 'You have successfully submitted %d transaction%s for E-Invoices processing.', $this->processedCount, $this->processedCount === 1 ? '' : 's' ), ]; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ public function logic(Request $request): JsonResponse { $validated = $request->validate([ 'startDate' => 'nullable|date_format:d-m-Y', 'endDate' => 'nullable|date_format:d-m-Y|after_or_equal:startDate', ]); $startDate = null; $endDate = null; $startDate = isset($validated['startDate']) && $validated['startDate'] ? Carbon::createFromFormat('d-m-Y', $validated['startDate'])->startOfDay() : Carbon::now()->startOfMonth()->startOfDay(); $endDate = isset($validated['endDate']) && $validated['endDate'] ? Carbon::createFromFormat('d-m-Y', $validated['endDate'])->endOfDay() : Carbon::now()->endOfMonth()->endOfDay(); $query = Transaction::query(); $query->whereIn('type', [TransactionType::SHIPPING_INVOICE, TransactionType::STORAGE_INVOICE]) ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]); // $transactions = $query->whereHas('transactions', function($transaction) use ($startDate, $endDate) { // $transaction->where('type', TransactionType::PAYMENT) // ->whereBetween('updated_at', [$startDate, $endDate]) // ->whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]); // })->get(); $transactions = $query->whereBetween('created_at', [$startDate, $endDate])->get(); $count = 0; foreach ($transactions as $transaction) { ProcessTransactionForEInvoiceV2CommandJob::dispatch($transaction); // $count = $count + 1; // if($count > 15){ // break; // } } $this->processedCount = count($transactions); return $this->resourceResponse(JsonResource::collection(collect([]))); } }