public function postRegister() { try { $jCryption = new JCryption(); $data = json_decode(\Input::get('data'), true); parse_str($jCryption->decrypt(session('jkey'), $data), $output); if (!isset($output['terms'])) { throw new \Exception("You need to agree to the terms and conditions.", 1); return; } $group = \User::findGroupByName('Contractor'); $user = \User::register(['email' => $output['email'], 'first_name' => $output['first_name'], 'last_name' => $output['last_name'], 'password' => $output['password'], 'activated' => true]); $user->addGroup($group); $cData = ['user_id' => $user->id, 'address' => $output['address'], 'phone' => $output['phone'], 'image' => null]; $contractor = \Contractor::register($cData); $mailData = ['layout' => 'emails.welcome', 'data' => ['user' => $user], 'subject' => 'Welcome to Programme Chameleon', 'from_email' => '*****@*****.**', 'to_email' => $user->email]; if (env('APP_ENV') === 'production') { $job = (new EmailJob($mailData))->onQueue('email-queue'); $this->dispatch($job); } else { // for devs only \Mail::send($mailData['layout'], $mailData['data'], function ($message) use($mailData) { $message->from($mailData['from_email'], 'Programme Chameleon Mailing Service'); $message->to($mailData['to_email'])->subject($mailData['subject']); }); } return \Response::json(['type' => 'success', 'message' => 'Successfully registered. You can login <a href="' . route('front.login') . '">here</a>']); } catch (\Exception $e) { if (isset($user)) { $user->delete(); } if (isset($contractor)) { $contractor->delete(); } return \Response::json(['type' => 'danger', 'message' => $e->getMessage()]); } }