public function upload(Request $request)
 {
     $entityBody = file_get_contents('php://input');
     Log::debug($entityBody);
     $formController = new \Stratum\Controller\FormController();
     Log::debug("parsing input data");
     $formResult = $formController->parse($entityBody);
     Log::Debug("parsed input data");
     //form has updated mappings for each question
     $candidate = new \Stratum\Model\Candidate();
     $candidateController = new \Stratum\Controller\CandidateController();
     $candidate = $candidateController->populate($candidate, $formResult);
     Log::debug("Form Completed for " . $candidate->getName());
     $controller = new \Stratum\Controller\BullhornController();
     //upload files from WorldApp to Bullhorn
     $controller->submit_files($candidate);
     //update availability Note in Bullhorn
     $availability = $formResult->findByWorldApp("Call Availability");
     Log::debug($availability);
     if ($availability) {
         $note['comments'] = "Call Availability: " . $availability['Call Availability']['value'];
         $note['action'] = 'Availability';
         Log::debug($note);
         $candidate->set("Note", $note);
         $controller->submit_note($candidate);
     }
     $cc = new CanCon();
     $c3 = $cc->load($candidate->get("id"));
     //Bullhorn Candidate record, from cache if available
     $owner = $c3->get("owner");
     /*
     array (
       'id' => 10237,
       'firstName' => 'Stratum',
       'lastName' => 'API',
     )
     */
     $cuser = new \Stratum\Model\CorporateUser();
     $cuser->set("id", $owner['id']);
     $cuser = $controller->loadCorporateUser($cuser);
     $to_email = $cuser->get("email");
     if (!$to_email) {
         $to_email = "*****@*****.**";
     }
     Log::debug("sending email to " . $cuser->getName() . " at " . $to_email . " about Form Submission");
     $maildata['candidateName'] = $candidate->getName();
     $maildata['candidateID'] = $candidate->get("id");
     $maildata['date'] = date(DATE_RFC2822);
     Mail::send('email.form_uploaded', $maildata, function ($m) use($to_email, $candidate) {
         $m->from('*****@*****.**', 'Plum Data Integration Service');
         $m->to($to_email)->subject('Form Submission from ' . $candidate->getName() . ' ' . $candidate->get("id"));
     });
     $controller->updateCandidateStatus($candidate, "Form Completed");
     //Now to store form results in local storage
     $entityBody = Storage::disk('local')->put($candidate->get("id") . ".txt", $entityBody);
 }
 public function confirmValues(Request $request)
 {
     $id = $request->input("id");
     $fc = new \Stratum\Controller\FormController();
     $cc = new \Stratum\Controller\CandidateController();
     $cuc = new CorporateUserController();
     $entityBody = Storage::disk('local')->get($id . '.txt');
     $formResult = $fc->parse($entityBody);
     $c2 = new \Stratum\Model\Candidate();
     $c2 = $cc->populate($c2, $formResult);
     $form = $formResult->get("form");
     $candidate = new \Stratum\Model\Candidate();
     $candidate = $cc->populateFromRequest($candidate, $request->all(), $c2, $formResult);
     if ($candidate->get("validated") != 'true') {
         $data['errormessage']['message'] = "You must confirm that this form is correct and accurate.  Use the Browser Back button to avoid losing your edits.";
         $error['propertyName'] = "validated";
         $error['severity'] = 'Validation Failure';
         $error['type'] = 'Must Accept Form';
         $data['errormessage']['errors'][] = $error;
         $data['message'] = "Validation Failure: Data Not Uploaded";
     } else {
         if (!$candidate->get("customText16")) {
             $candidate->set("tier", $candidate->get("customText16"));
             //must transfer to human-readable attribute name
             $data['errormessage']['message'] = "You must assign a Tier to this Candidate.  Use the Browser Back button to avoid losing your edits.";
             $error['propertyName'] = "tier";
             $error['severity'] = 'Validation Failure';
             $error['type'] = 'Must Assign Tier';
             $data['errormessage']['errors'][] = $error;
             $data['message'] = "Validation Failure: Data Not Uploaded";
         } else {
             $now = new \DateTime();
             $stamp = $now->format("U") * 1000;
             $candidate->set("customDate1", $stamp);
             $candidate->set("customDate2", $stamp);
             //$data['message'] = 'Debugging only, nothing uploaded to Bullhorn';
             $bc = new \Stratum\Controller\BullhornController();
             $c1 = new \Stratum\Model\Candidate();
             $c1->set("id", $id);
             $c1 = $bc->loadFully($c1);
             //$c1 is the bullhorn existing candidate
             $c2->set("formResult", $formResult);
             //trojan horse to get formResult to pdf
             $pdf_data = $this->generatePDF($id, $c1, $c2, $candidate, $bc);
             $this->uploadPDF($candidate, $pdf_data, $bc);
             Log::debug("Uploaded PDF record from form");
             // to shortcut to html view
             //return view('export_the_pdf')->with($pdf_data);
             $retval = $bc->submit($candidate);
             if (array_key_exists("errorMessage", $retval)) {
                 $data['errormessage']['message'] = $retval['errorMessage'];
                 $data['errormessage']['errors'] = $retval['errors'];
                 $data['message'] = "Problem uploading data";
             } else {
                 $data['message'] = "Data Uploaded";
                 $bc->updateCandidateStatus($candidate, "Interview Done");
                 $cuc->flushCandidatesFromCache();
                 Log::debug("sending email to admin@stratum-int.com about Interview completion");
                 $user = Auth::user();
                 $maildata['candidateName'] = $candidate->getName();
                 $maildata['candidateID'] = $id;
                 $maildata['consultantName'] = $user->name;
                 $maildata['date'] = date(DATE_RFC2822);
                 Mail::send('email.interview_complete', $maildata, function ($m) use($candidate, $id) {
                     $m->from('*****@*****.**', 'Plum Data Integration Service');
                     $m->to('*****@*****.**')->subject('Interview Complete ' . $candidate->getName() . ' ' . $id);
                 });
             }
         }
     }
     $data['candidates'] = $cuc->load_candidates();
     $data['thecandidate'] = $candidate;
     $fc = new \Stratum\Controller\FormController();
     $data['form'] = $fc->setupForm();
     return view('candidate')->with($data);
 }