Example #1
0
 public function store()
 {
     $Input = Request::all();
     $objInvoice = \App\Invoice::findorFail($Input['InvoiceID']);
     if (!$this->objLoggedInUser->HasPermission("Edit/{$objInvoice->type}")) {
         abort('404');
     }
     $tWarnings = [];
     foreach ($Input['InvoiceItem'] as $ID => $tItem) {
         if ($ID == 'new') {
             foreach ($tItem as $tNewItem) {
                 if (trim($tNewItem['Title']) || trim($tNewItem['Type'])) {
                     $objInvoiceItem = new \App\InvoiceItem();
                     $objInvoiceItem->title = trim($tNewItem['Title']);
                     $objInvoiceItem->type = trim($tNewItem['Type']);
                     $objInvoiceItem->invoice_id = $objInvoice->id;
                     $objInvoiceItem->save();
                 }
             }
             continue;
         }
         $objInvoiceItem = \App\InvoiceItem::find($ID);
         // Precautionary check to make sure we are not modifying other order items
         if (!$objInvoiceItem || $objInvoiceItem->invoice_id != $objInvoice->id) {
             $tWarnings[] = 'Order Item (id=' . $objInvoiceItem->id . ') could not be saved properly.  Did not match parent order id.';
             continue;
         }
         if (trim(strtolower($objInvoiceItem->title)) != trim(strtolower($tItem['Title'])) || trim(strtolower($objInvoiceItem->type)) != trim(strtolower($tItem['Type']))) {
             $objInvoiceItem->status = \App\InvoiceItem::STATUS_MODIFIED;
         }
         $objInvoiceItem->title = $tItem['Title'];
         $objInvoiceItem->type = $tItem['Type'];
         $objInvoiceItem->save();
     }
     $objInvoice->first_name = Request::get('InvoiceFirstName');
     $objInvoice->last_name = Request::get('InvoiceLastName');
     $objInvoice->type = Request::get('InvoiceType');
     $objInvoice->email = Request::get('InvoiceEmail');
     $objInvoice->phone = Request::get('InvoicePhone');
     $objInvoice->company_name = Request::get('InvoiceCompany');
     $objInvoice->minitrac_invoice_number = Request::get('MinitracInvoiceNumber');
     $objInvoice->comments = $Input['Comments'];
     $objInvoice->assigned_to = $Input['AssignTo'];
     if ($objInvoice->status != \App\Invoice::STATUS_REVIEWED && $Input['Status'] == \App\Invoice::STATUS_REVIEWED) {
         $objInvoice->reviewed_by = $this->objLoggedInUser->id;
     }
     $objInvoice->status = $Input['Status'];
     $objInvoice->save();
     if ($tWarnings) {
         return redirect('admin/invoices/edit/' . $objInvoice->id)->with('FormResponse', ['ResponseType' => static::MESSAGE_WARNING, 'Content' => implode('<br />', $tWarnings) . ' <br />Contact Administrator']);
     }
     if (Request::get('Submit') == 'Save') {
         $Path = $Input['ReturnTo'] == 'Dashboard' ? '' : '/invoices';
     } else {
         $Path = '/invoices/edit/' . $objInvoice->id;
     }
     return redirect("admin{$Path}")->with('FormResponse', ['ResponseType' => static::MESSAGE_SUCCESS, 'Content' => 'Invoice saved successfully']);
 }