public function getPublicProfilePage($id, $slug)
 {
     $_hash = new Hash();
     $_hash = $_hash->getHasher();
     $agency = \Agency::findAgencyById($_hash->decode($id));
     if (!$agency) {
         return abort(404);
     }
     return view('front.agency.publicProfile')->with('model', $agency);
 }
 public function postRemoveAffiliate()
 {
     $_hash = new Hash();
     $_hash = $_hash->getHasher();
     $id = $_hash->decode(trim(\Input::get('id')));
     if (!($agency = \Agency::findAgencyById($id))) {
         return \Response::json(['type' => 'danger', 'message' => 'Agency not found.']);
     }
     try {
         $affiliate = \Company::removeAffiliate($agency);
         return \Response::json(['type' => 'success', 'message' => 'Affiliate "' . $agency->name . '" removed.']);
     } catch (\Exception $e) {
         return \Response::json(['type' => 'danger', 'message' => $e->getMessage()]);
     }
 }
 public function updateExpense($id, $company, $status)
 {
     if (!($expense = \Contractor::findExpenseById($id))) {
         throw new \Exception("Expense not found.", 1);
         return;
     }
     $job = $expense->job;
     if ($company->id !== $job->company_id) {
         throw new \Exception("Expense does not belong to the company.", 1);
         return;
     }
     if ($status) {
         $expense->auth_company = true;
         $expense->save();
         if (!is_null($job->agency_id) && !$expense->auth_agency) {
             $_hash = new Hash();
             $_hash = $_hash->getHasher();
             if ($agency = \Agency::findAgencyById($job->agency_id)) {
                 $notificationData = ['agency_id' => $agency->id, 'alert_from' => 'System: Programme Chameleon', 'has_read' => false, 'title' => 'Expense "' . $expense->title . '" for "' . $job->title . '" has been accepted by "' . $company->name . '". Please authorize it.', 'description' => 'Accepted by ' . $company->name, 'url' => route('agency.job.detail') . '?i=' . $_hash->encode($job->id)];
                 \Agency::addNotification($agency, $notificationData);
             }
         } else {
             if ($contractor = $expense->contractor) {
                 $notificationData = ['contractor_id' => $contractor->id, 'alert_from' => 'System: Programme Chameleon', 'has_read' => false, 'title' => 'Your expense "' . $expense->title . '" for "' . $job->title . '" has been accepted.', 'description' => 'Accepted by ' . $company->name, 'url' => '#'];
                 \Contractor::addNotification($contractor, $notificationData);
             }
         }
     } else {
         $expense->auth_company = false;
         $expense->save();
         if ($contractor = $expense->contractor) {
             $notificationData = ['contractor_id' => $contractor->id, 'alert_from' => 'System: Programme Chameleon', 'has_read' => false, 'title' => 'Your expense "' . $expense->title . '" for "' . $job->title . '" has been de-authorized.', 'description' => 'De-authorize by ' . $company->name, 'url' => '#'];
             \Contractor::addNotification($contractor, $notificationData);
         }
         if (!is_null($job->agency_id)) {
             if ($agency = \Agency::findAgencyById($job->agency_id)) {
                 $notificationData = ['agency_id' => $agency->id, 'alert_from' => 'System: Programme Chameleon', 'has_read' => false, 'title' => 'Expense "' . $expense->title . '" for "' . $job->title . '" has been de-authorized.', 'description' => 'De-authorize by ' . $company->name, 'url' => '#'];
                 \Agency::addNotification($agency, $notificationData);
             }
         }
     }
     return $expense;
 }
 public function getJobListingFrame($id, $type)
 {
     $_hash = new Hash();
     $_hash = $_hash->getHasher();
     switch ($type) {
         case 'company':
             if (!($company = \Company::findCompanyById($_hash->decode($id)))) {
                 return view('frame.job')->with('flashMessage', ['class' => 'danger', 'message' => 'Company not found.']);
             }
             if (!($jobs = $company->jobs()->get())) {
                 return view('frame.job')->with('flashMessage', ['class' => 'danger', 'message' => 'Jobs not found.']);
             }
             return view('frame.job')->with('jobs', $jobs);
             break;
         case 'agency':
             if (!($agency = \Agency::findAgencyById($_hash->decode($id)))) {
                 return view('frame.job')->with('flashMessage', ['class' => 'danger', 'message' => 'Agency not found.']);
             }
             if (!($jobs = $agency->jobs()->get())) {
                 return view('frame.job')->with('flashMessage', ['class' => 'danger', 'message' => 'Jobs not found.']);
             }
             return view('frame.job')->with('jobs', $jobs);
             break;
         default:
             return view('frame.job')->with('flashMessage', ['class' => 'danger', 'message' => 'Type is incorrectly defined.']);
             break;
     }
 }