invoice = $invoice; } public function toArray() { $returnData = []; $returnData['invoiceType'] = $this->invoice->invoiceType()->name; if ($this->invoice->invoiceType()->slug === InvoiceType::INVOICE_TYPE_OTHER) { $returnData['invoiceType'] .= ' (' . $this->invoice->type_other . ')'; } $returnData['costUnitName'] = $this->invoice->costUnit()->first()->name; $returnData['invoiceNumber'] = $this->invoice->invoice_number; $returnData['contactName'] = $this->invoice->contact_name; $returnData['contactEmail'] = $this->invoice->contact_email ?? '--'; $returnData['contactPhone'] = $this->invoice->contact_phone ?? '--'; $returnData['amount'] = Amount::fromString($this->invoice->amount, ' Euro')->toString(); $returnData['id'] = $this->invoice->id; $returnData['donation'] = $this->invoice->donation; $returnData['alreadyPaid'] = !$this->invoice->donation && null === $this->invoice->contact_bank_iban; $returnData['accountOwner'] = $this->invoice->contact_bank_owner ?? '--'; $returnData['accountIban'] = $this->invoice->contact_bank_iban ?? '--'; $returnData['status'] = $this->invoice->status; $returnData['documentFilename'] = $this->invoice->document_filename; $returnData['readableStatus'] = $this->getReadableStatus(); $returnData['comment'] = $this->invoice->comment ?? '--'; $returnData['changes'] = $this->invoice->changes ?? '--'; $returnData['deniedReason'] = $this->invoice->denied_reason ?? '--'; $returnData['travelDirection'] = $this->invoice->travel_direction ?? '--'; $returnData['distance'] = $this->invoice->distance; $returnData['distanceAllowance'] = new Amount($this->invoice->costUnit()->first()->distance_allowance, '')->toString(); $returnData['passengers'] = $this->invoice->passengers ? 'Ja' : 'Nein'; $returnData['transportation'] = $this->invoice->transportation ? 'Ja' : 'Nein'; $returnData['travelRoute'] = $this->invoice->travel_direction; $returnData['costUnitId'] = $this->invoice->cost_unit_id; $returnData['amountPlain'] = new Amount($this->invoice->amount, '')->toString(); $returnData['internalType'] = $this->invoice->type; return $returnData; } private function getReadableStatus() : string { switch ($this->invoice->status) { case InvoiceStatus::INVOICE_STATUS_NEW: return 'Unbearbeitet'; case InvoiceStatus::INVOICE_STATUS_APPROVED: return 'Nicht exportiert'; case InvoiceStatus::INVOICE_STATUS_DENIED: return 'Abgelehnt'; case InvoiceStatus::INVOICE_STATUS_EXPORTED: return 'Exportiert'; } return $this->invoice->status; } }