public function postComplete()
 {
     $this->loadQuestions();
     $this->howfit = Session::get('result');
     $this->baseline = Session::get('baseline');
     $validate_data = Input::except('_token');
     $rules = array('fname' => 'required', 'sname' => 'required', 'email' => 'required', 'company' => 'required', 'country' => 'required', 'terms' => 'required');
     $validator = Validator::make($validate_data, $rules);
     if ($validator->passes()) {
         Session::put('user', $validate_data);
         $screener1 = $this->quiz['demographics']['pages']['page1']['questions']['s1']['selected'];
         $screener2 = $this->quiz['demographics']['pages']['page2']['questions']['s2']['selected'];
         $screener3 = $this->quiz['demographics']['pages']['page3']['questions']['s3']['selected'];
         //update source
         $currentLocal = App::getLocale();
         $localQuestions = $currentLocal == 'en' ? '' : $currentLocal;
         $source = array('C_emailAddress' => $validate_data['email'], 'C_FirstName' => $validate_data['fname'], 'C_LastName' => $validate_data['sname'], 'C_Company' => $validate_data['company'], 'C_Country' => $validate_data['country'], 'C_BusPhone' => $validate_data['phone'], 'C_Job_Responsibilities_1' => $screener1 == Config::get($localQuestions . 'questions.screeners.pages.page1.questions.s1.options.0.label') ? "IT" : "Business / Operations", 'C_NumberofEmployees_Range_1' => $screener2, 'form_source' => Input::get('form_source'));
         Session::put('source', $source);
         //save in db
         $user = new User();
         $user->fname = $validate_data['fname'];
         $user->lname = $validate_data['sname'];
         $user->email = $validate_data['email'];
         $user->company = $validate_data['company'];
         $user->country = $validate_data['country'];
         $user->tel = $validate_data['phone'];
         $user->referer = $validate_data['referer'];
         $user->quiz = json_encode($this->quiz);
         $user->result = json_encode($this->howfit);
         $user->save();
         $this->userid = $user->id;
         $validate_data['userid'] = $user->id;
         //generate report
         $this->generateReport();
         $curloc = App::getLocale();
         /*if(!App::isLocal()){
         			//send guzzle request
         			$client = new GuzzleHttp\Client();
         			$url = 'https://s2048.t.eloqua.com/e/f2.aspx';
         			//$url = 'http://www.google.com';
         			try {
         				$request = $client->createRequest('GET', $url);
         				$query = $request->getQuery();
         				$query['elqFormName'] = Lang::get('general.extFormName');
         				$query['elqSiteID'] = '2048';
         				foreach($source as $key=>$item){
         					$query[$key] = $item;
         				}
         								
         				$response = $client->send($request);
         			} catch (GuzzleHttp\Exception\RequestException $e) {
         				
         				Mail::queue('emails.errors', array('process'=>'Guzzle', 'message'=>$e->getMessage(), 'time'=>date('l jS \of F Y h:i:s A')), function($message)
         				{
         					$message->to('*****@*****.**', 'Roark McColgan')->subject('Error on Converged Infrastructure - Maturity Benchmark! ('.$curloc.')');
         				});
         			}
         		}*/
         $subject = Lang::get('email.report');
         //send mail to user
         Mail::queue('emails.' . $curloc . 'download', array('fname' => $validate_data['fname'], 'sname' => $validate_data['sname'], 'userid' => $validate_data['userid']), function ($message) use($validate_data, $subject, $curloc) {
             $message->to($validate_data['email'], $validate_data['fname'] . ' ' . $validate_data['sname'])->subject($subject);
         });
         //send mail to notification people
         if (App::isLocal()) {
             $emails = ['*****@*****.**'];
         } else {
             $emails = ['*****@*****.**', '*****@*****.**'];
         }
         Mail::queue('emails.notification', array('fname' => $validate_data['fname'], 'sname' => $validate_data['sname'], 'email' => $validate_data['email'], 'company' => $validate_data['company'], 'phone' => $validate_data['phone'], 'screener1' => $this->quiz['demographics']['pages']['page1']['questions']['s1']['selected'], 'screener2' => $this->quiz['demographics']['pages']['page2']['questions']['s2']['selected'], 'screener3' => $this->quiz['demographics']['pages']['page3']['questions']['s3']['selected'], 'score' => $this->howfit['overall']['score'], 'rating' => $this->howfit['overall']['rating'], 'userid' => $validate_data['userid']), function ($message) use($validate_data, $emails, $curloc) {
             $message->to($emails)->subject('Conferged Infrastructure Quiz completed (' . $curloc . ')');
         });
         $vars = array('heading' => Lang::get('general.title'), 'sub1' => Lang::get('general.hi') . ', ' . $validate_data['fname'], 'sub2' => Lang::get('general.soon'), 'tweet' => $this->baseline['overall']['types'][$this->howfit['overall']['rating']]['tweet'], 'colour' => 'orange', 'script' => ['
                     _gaq.push([\'_trackEvent\', \'Form Submit\', \'Registration\']);
                     '], 'quiz' => $this->quiz);
         /*if(Cookie::has('quiz_progress')){
         			$progress_id = Cookie::get('quiz_progress');
         			$progress = Progress::find($progress_id);
         			if($progress) $progress->delete();
         		}
         		$cookie = Cookie::forget('quiz_progress');*/
         //return View::make('thankyou',$vars)->withCookie($cookie);
         return View::make('thankyou', $vars);
     }
     Input::flashExcept('_token');
     return Redirect::to(getLang() . 'quiz/complete')->withErrors($validator);
 }
 public function submitNewAccount()
 {
     if (Session::has('username') && Session::get('user_type') == "Root") {
         $user = Input::all();
         $validator = Validator::make(array("username" => $user["username"], "first_name" => $user["first_name"], "last_name" => $user["last_name"], "password" => $user["password"], "password2" => $user["password2"], "user_class" => $user["user_class"], "user_type" => $user["user_type"]), array("username" => "required|alpha_dash|min:4|max:15", "first_name" => "required", "last_name" => "required", "password" => "required|min:8|max:20", "password2" => "required|min:8|max:20", "user_class" => "required", "user_type" => "required"));
         if ($validator->fails()) {
             Input::flashExcept("password", "password2");
             return Redirect::to('accounts/addaccount')->with('message', $validator->messages()->first());
         } else {
             if (!preg_match('/^[\\pL\\s]+$/u', $user["first_name"]) || !preg_match('/^[\\pL\\s]+$/u', $user["last_name"])) {
                 Input::flash();
                 return Redirect::to('accounts/addaccount')->with('message', "First name and last name must only contain alpabetic characters and whitespaces.");
             } else {
                 if ($user["password"] != $user["password2"]) {
                     Input::flashExcept("password", "password2");
                     return Redirect::to('accounts/addaccount')->with('message', "Passwords didn't match. Please try again.");
                 } else {
                     if (User::where("username", "=", $user["username"])->first()) {
                         Input::flashExcept("password", "password2");
                         return Redirect::to('accounts/addaccount')->with('message', "Username already exists!");
                     } else {
                         $desc = "(" . Session::get('user_class') . " -> " . Session::get('user_type') . ") " . "<strong>" . Session::get('username') . "</strong> has created a new <strong>" . strtolower($user["user_type"]) . "</strong> account under " . $user["user_class"] . " department: <strong>" . $user["username"] . "</strong>.";
                         $newUser = new User();
                         $newUser->username = trim($user["username"]);
                         $newUser->first_name = trim($user["first_name"]);
                         $newUser->last_name = trim($user["last_name"]);
                         $newUser->password = Hash::make($user["password"]);
                         $newUser->user_class = $user["user_class"];
                         $newUser->user_type = $user["user_type"];
                         $newUser->save();
                         //Log the changes made
                         $newLog = new UserLog();
                         $newLog->description = $desc;
                         $newLog->user_id = Session::get('user_id');
                         $newLog->type = "System";
                         $newLog->save();
                         return Redirect::to('accounts/addaccount')->with('success', "You have successfully created a new account.");
                     }
                 }
             }
         }
     } else {
         return Redirect::to('/');
     }
 }
 public function authenticate()
 {
     if (Session::has('username') && (Session::get('user_class') == "Root" || Session::get('user_class') == "IT" && Session::get('user_type') == "Admin" || Session::get('user_class') == "LAB" && Session::get('user_type') == "Admin")) {
         return Redirect::to('accounts');
     } else {
         if (Session::has('username') && Session::get('user_class') == "IT") {
             if (Session::get('user_type') == "Admin") {
                 return Redirect::to('accounts');
             } else {
                 if (Session::get('user_type') == "User") {
                     return Redirect::to('assets');
                 }
             }
         } else {
             if (Session::has('username') && Session::get('user_class') == "LAB") {
                 if (Session::get('user_type') == "Admin") {
                     return Redirect::to('accounts');
                 } else {
                     if (Session::get('user_type') == "User") {
                         return Redirect::to('assets');
                     }
                 }
             } else {
                 $username = Input::get('username');
                 $password = Input::get('password');
                 $validator = Validator::make(array('username' => trim($username), 'password' => $password), array('username' => 'required|alphadash', 'password' => 'required'));
                 if ($validator->fails()) {
                     Input::flashExcept('password');
                     return Redirect::to('login')->with('message', $validator->messages()->first());
                 } else {
                     if (!Auth::attempt(array('username' => $username, 'password' => $password))) {
                         Input::flashExcept('password');
                         return Redirect::to('login')->with('message', 'Invalid login credentials.');
                     } else {
                         if (!Auth::attempt(array('username' => $username, 'password' => $password, 'status' => 1))) {
                             Input::flashExcept('password');
                             return Redirect::to('login')->with('message', 'Account not yet activated. Please contact your administrator.');
                         } else {
                             $user = User::where('username', '=', $username)->first();
                             Session::put('user_id', $user->id);
                             Session::put('username', $username);
                             Session::put('first_name', $user->first_name);
                             Session::put('last_name', $user->last_name);
                             Session::put('user_type', $user->user_type);
                             Session::put('user_class', $user->user_class);
                             return Redirect::to('/');
                         }
                     }
                 }
             }
         }
     }
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function update($id)
 {
     //
     if ($this->isAdminRequest()) {
         $rules = array('title' => 'required', 'warranty_icon' => 'image|max:20000', 'warranty_pdf' => 'mimes:pdf|max:20000', 'brochure_pdf' => 'mimes:pdf|max:20000', 'category_image' => 'image|max:20000');
         $validator = Validator::make(Input::all(), $rules);
         // process the login
         if ($validator->fails()) {
             return Redirect::to('admin/products/' . $id . '/edit')->withErrors($validator)->withInput(Input::flashExcept('warranty_pdf', 'warranty_icon', 'brochure_pdf', 'category_image'));
         } else {
             if (Input::file('warranty_icon') && Input::file('warranty_icon')->isValid()) {
                 $ext = Input::file('warranty_icon')->getClientOriginalExtension();
                 $warranty_icon_filename = $id . "_icon_" . time() . "." . $ext;
                 Input::file('warranty_icon')->move(Config::get('uploads.warranty_icon'), $warranty_icon_filename);
             }
             if (Input::file('warranty_pdf') && Input::file('warranty_pdf')->isValid()) {
                 $ext = Input::file('warranty_pdf')->getClientOriginalExtension();
                 $warranty_pdf_filename = $id . "_pdf_" . time() . "." . $ext;
                 Input::file('warranty_pdf')->move(Config::get('uploads.warranty_pdf'), $warranty_pdf_filename);
             }
             if (Input::file('brochure_pdf') && Input::file('brochure_pdf')->isValid()) {
                 $ext = Input::file('brochure_pdf')->getClientOriginalExtension();
                 $brochure_pdf_filename = $id . "_b_" . time() . "." . $ext;
                 Input::file('brochure_pdf')->move(Config::get('uploads.brochure_pdf'), $brochure_pdf_filename);
             }
             if (Input::file('category_image') && Input::file('category_image')->isValid()) {
                 $ext = Input::file('category_image')->getClientOriginalExtension();
                 $category_image_filename = $id . "_b_" . time() . "." . $ext;
                 Input::file('category_image')->move(Config::get('uploads.category_image'), $category_image_filename);
             }
             $productcategory = ProductCategory::find($id);
             $productcategory->title = Input::get('title');
             $productcategory->short_description = Input::get('short_description');
             $productcategory->long_description = Input::get('long_description');
             $productcategory->parent_category = Input::get('parent_category');
             $productcategory->product_active = Input::get('product_active');
             $productcategory->product_features = Input::get('product_features');
             if (isset($warranty_icon_filename) && $warranty_icon_filename) {
                 $productcategory->warranty_icon = $warranty_icon_filename;
             }
             if (isset($warranty_pdf_filename) && $warranty_pdf_filename) {
                 $productcategory->warranty_pdf = $warranty_pdf_filename;
             }
             if (isset($brochure_pdf_filename) && $brochure_pdf_filename) {
                 $productcategory->brochure_pdf = $brochure_pdf_filename;
             }
             if (isset($category_image_filename) && $category_image_filename) {
                 $productcategory->category_image = $category_image_filename;
             }
             $productcategory->save();
             // redirect
             Session::flash('message', 'Successfully updated ' . Input::get('title'));
             return Redirect::to('admin/products');
             //return Redirect::route('register.confirm')->with('user', $user->id);
         }
     }
 }