/**
  * Create and store Breeder profile data to database and
  * Associate User to Breeder user type as well
  *
  * @param  BreederProfileRequest $request
  * @return Redirect
  */
 public function storeProfile(BreederProfileRequest $request)
 {
     $user = $this->user;
     $breeder = Breeder::create($request->only(['officeAddress_addressLine1', 'officeAddress_addressLine2', 'officeAddress_province', 'officeAddress_zipCode', 'office_landline', 'office_mobile', 'website', 'produce', 'contactPerson_name', 'contactPerson_mobile']));
     $farmAddressArray = [];
     for ($i = 1; $i <= count($request->input('farmAddress.*.*')) / 8; $i++) {
         $farmAddress = new FarmAddress();
         $farmAddress->name = $request->input('farmAddress.' . $i . '.name');
         $farmAddress->addressLine1 = $request->input('farmAddress.' . $i . '.addressLine1');
         $farmAddress->addressLine2 = $request->input('farmAddress.' . $i . '.addressLine2');
         $farmAddress->province = $request->input('farmAddress.' . $i . '.province');
         $farmAddress->zipCode = $request->input('farmAddress.' . $i . '.zipCode');
         $farmAddress->farmType = $request->input('farmAddress.' . $i . '.farmType');
         $farmAddress->landline = $request->input('farmAddress.' . $i . '.landline');
         $farmAddress->mobile = $request->input('farmAddress.' . $i . '.mobile');
         array_push($farmAddressArray, $farmAddress);
     }
     $breeder->users()->save($user);
     $breeder->farmAddresses()->saveMany($farmAddressArray);
     $user->update_profile = 0;
     $user->save();
     return redirect()->route('breeder.edit')->with('message', 'Profile completed.');
 }
 /**
  * Create an initial account for the breeder
  *
  * @param  \Illuminate\Http\Request  $request
  * @return View
  */
 public function createUser(Request $request)
 {
     $validator = $this->validator($request->all());
     if ($validator->fails()) {
         $this->throwValidationException($request, $validator);
     }
     $verCode = str_random('10');
     // create a verification code
     $password = $this->generatePassword();
     // generate the initial password for the breeder and save it to a variable to get the original password before encryption
     $user = $this->create($request->all(), $verCode, $password);
     // create a user instance
     $user->assignRole('breeder');
     // assign a breeder role to it
     $breeder = Breeder::create([])->users()->save($user);
     // create a breeder instance for that user
     // data to be passed in the email
     $data = ['email' => $request->input('email'), 'password' => $password];
     $adminID = Auth::user()->id;
     $adminName = Auth::user()->name;
     // create a log entry for the action done
     AdministratorLog::create(['admin_id' => $adminID, 'admin_name' => $adminName, 'user' => $data['email'], 'category' => 'Create', 'action' => 'Created user account for ' . $data['email']]);
     Mail::send('emails.credentials', ['email' => $request->input('email'), 'password' => $password], function ($message) use($data) {
         // send an email containing the credential of the user to the input email
         $message->to($data['email'])->subject('Breeder Credentials for Swine E-Commerce PH');
     });
     return Redirect::back()->withMessage('User Created!');
     // redirect to the page and display a toast notification that a user is created
 }