Example #1
0
 public function ProcessSaleRequest($Input)
 {
     // Get logged user, or register as guest
     $objUser = \Auth::User() ?: \App\User::GetGuestAccount();
     // TODO:  Nice error handling would be nice
     if (!$objUser) {
         App::abort('500', 'Invalid form request:  Could not determine user account to submit form');
     }
     // Create invoice
     $objInvoice = new \App\Invoice();
     $objInvoice->user_id = $objUser->id;
     $objInvoice->type = $Input['RequestType'];
     $objInvoice->company_name = $Input['CompanyName'];
     $objInvoice->first_name = $Input['FirstName'];
     $objInvoice->last_name = $Input['LastName'];
     $objInvoice->email = $Input['EmailAddress'];
     $objInvoice->phone = $Input['PhoneNumber'];
     $objInvoice->status = \App\Invoice::STATUS_NEW;
     $objInvoice->comments = $Input['Comments'];
     if (!$objInvoice->save()) {
         App::abort('500', 'Master invoice could not save.  Breaking page.  Not saving invoice items.');
     }
     // Invoice Items
     $tInvoiceItemFields = ['Brand', 'Environment', 'MotivePower', 'Capacity', 'Attachment', 'OperatingHours', 'Accessories' => ['LP Tank', 'Opportunity Charger', 'Seat Belt', 'Strobe Light', 'Fire Extinguisher', 'Side Shifter']];
     if ($Input['RequestType'] == static::REQUEST_TYPE_RENTAL) {
         unset($tInvoiceItemFields[0]);
     }
     // Brand
     foreach ($tInvoiceItemFields as $Item) {
         if (is_array($Item)) {
             foreach ($Item as $Accessory) {
                 if (in_array($Accessory, $Input['Accessories'])) {
                     $objInvoiceItem = new \App\InvoiceItem();
                     $objInvoiceItem->invoice_id = $objInvoice->id;
                     $objInvoiceItem->type = 'Accessory';
                     $objInvoiceItem->title = "{$Accessory}";
                     $objInvoiceItem->status = \App\InvoiceItem::STATUS_ACTIVE;
                     $objInvoiceItem->save();
                 }
             }
         } else {
             if ($Input[$Item]) {
                 $objInvoiceItem = new \App\InvoiceItem();
                 $objInvoiceItem->invoice_id = $objInvoice->id;
                 $objInvoiceItem->type = $Item;
                 $objInvoiceItem->title = $Input[$Item];
                 $objInvoiceItem->status = \App\InvoiceItem::STATUS_ACTIVE;
                 $objInvoiceItem->save();
             }
         }
     }
     EmailController::sendSalesEmail($Input);
     return redirect('/forms/success');
 }