request = $request; } public function execute() : ChangeStatusResponse { $response = new ChangeStatusResponse(); switch ($this->request->status) { case InvoiceStatus::INVOICE_STATUS_APPROVED: $this->request->invoice->status = InvoiceStatus::INVOICE_STATUS_APPROVED; $this->request->invoice->approved_by = auth()->user()->id; $this->request->invoice->approved_at = now(); break; case InvoiceStatus::INVOICE_STATUS_DENIED: $this->request->invoice->status = InvoiceStatus::INVOICE_STATUS_DENIED; $this->request->invoice->denied_by = auth()->user()->id; $this->request->invoice->denied_at = now(); $this->request->invoice->denied_reason = $this->request->comment; break; case InvoiceStatus::INVOICE_STATUS_NEW: $this->request->invoice->status = InvoiceStatus::INVOICE_STATUS_NEW; $this->request->invoice->approved_by = null; $this->request->invoice->approved_at = null; $this->request->invoice->denied_by = null; $this->request->invoice->denied_at = null; $this->request->invoice->comment = $this->request->invoice->denied_reason; $this->request->invoice->denied_reason = null; break; case InvoiceStatus::INVOICE_STATUS_DELETED: $this->request->invoice->status = InvoiceStatus::INVOICE_STATUS_DELETED; break; case InvoiceStatus::INVOICE_STATUS_EXPORTED: //$this->request->invoice->status = InvoiceStatus::INVOICE_STATUS_EXPORTED; $this->request->invoice->upload_required = true; break; } if ($this->request->invoice->save()) { $response->success = true; } return $response; } }