'Regenerate Storage Invoice', 'message' => 'You have successfully regenerated storage invoice' ]; } /** @var FetchesTransaction */ private $fetchesTransaction; /** @var CreateStorageInvoiceTransactionDocProcessor */ private $createStorageInvoiceTransactionDocProcessor; /** @var CanRegenerateStorageInvoice */ private $canRegenerateStorageInvoice; /** * @param FetchesTransaction $fetchesTransaction * @param CreateStorageInvoiceTransactionDocProcessor $createStorageInvoiceTransactionDocProcessor * @param CanRegenerateStorageInvoice $canRegenerateStorageInvoice */ public function __construct(FetchesTransaction $fetchesTransaction, CreateStorageInvoiceTransactionDocProcessor $createStorageInvoiceTransactionDocProcessor, CanRegenerateStorageInvoice $canRegenerateStorageInvoice) { $this->fetchesTransaction = $fetchesTransaction; $this->createStorageInvoiceTransactionDocProcessor = $createStorageInvoiceTransactionDocProcessor; $this->canRegenerateStorageInvoice = $canRegenerateStorageInvoice; } public function logic(Request $request) : JsonResponse { $this->canRegenerateStorageInvoice->passes(); $invoice = $this->fetchesTransaction->execute(['id' => $request->route('invoice_id')]); $invoice->documents()->where('document_type', DocumentType::STORAGE_INVOICE)->delete(); /** @var Transaction $invoice_transaction */ // $invoice_transaction = $packingList->transactions()->where('transactions.type', TransactionType::STORAGE_INVOICE)->whereIn('status', [ApprovalStatus::COMPLETED])->first(); $this->createStorageInvoiceTransactionDocProcessor->execute($invoice); Log::info(Auth::user()->email." regenerate storage invoice for transaction with id ".$request->route('invoice_id')); return $this->response([]); } }