public function assignToAgent(Request $request, $id)
 {
     $viewingSchedule = ViewingSchedule::findOrFail($id);
     if ($request->isMethod('POST')) {
         $conversation = $viewingSchedule->user->getPropertyConversation($viewingSchedule->property);
         if ($request->has('agent')) {
             $agent = User::findOrFail($request->input('agent'));
             $viewingSchedule->agent()->associate($agent);
             if ($conversation) {
                 $conversation->recipient()->associate($agent);
                 $conversation->save();
             }
             $message = 'Viewing Schedule has been assigned to ' . $agent->profile->singleName . '.';
         } else {
             $viewingSchedule->agent()->dissociate();
             if ($conversation) {
                 $conversation->recipient()->dissociate();
                 $conversation->save();
             }
             $message = 'Viewing Schedule is detached from Agent.';
         }
         $viewingSchedule->save();
         return redirect($request->get('backUrl', route('admin.viewing_schedule.index')))->with('messages', [$message]);
     }
     $agentOptions = AgentHelper::getAgentOptions();
     return view('admin.viewing_schedules.assign_to_agent', ['viewingSchedule' => $viewingSchedule, 'agentOptions' => $agentOptions]);
 }
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     $admin = \GoProp\Models\User::where('username', 'admin')->first();
     if (!$admin->profile) {
         $admin->profile()->save(new \GoProp\Models\Profile(['first_name' => 'GoProp', 'last_name' => 'Admin']));
     }
 }
Example #3
0
 /**
  * Get the validation rules that apply to the request.
  *
  * @return array
  */
 public function rules()
 {
     $allowedSubscriptions = Subscription::lists('slug')->all();
     $allowedStatus = array_keys(User::getStatusLabel());
     $routeName = $this->route()->getName();
     $rules = ['email' => 'required|email|max:255', 'password' => 'confirmed|min:6', 'status' => 'required|in:' . implode(',', $allowedStatus), 'profile.first_name' => 'required|min:2', 'profile.last_name' => 'min:2', 'profile.mobile_phone_number' => 'required|min:5', 'profile.profile_picture' => 'image|max:500', 'profile.address' => 'required', 'profile.province' => 'required|not_in:0', 'profile.city' => 'required|not_in:0', 'profile.subdistrict' => 'required|not_in:0', 'profile.postal_code' => ''];
     if ($this->get('role') != 'agent') {
         //$rules['username'] .= '|required';
     }
     if (in_array($routeName, ['admin.member.store', 'admin.member.update'])) {
         $rules['profile.extendedProfile.property_to_sell'] = 'required';
         $rules['profile.extendedProfile.property_to_let'] = 'required';
         $rules['profile.extendedProfile.referral_source'] = 'required';
     }
     if ($this->route()->hasParameter('id')) {
         $member = User::findOrFail($this->route('id'));
         //$rules['username'] = $rules['username'].'|unique:users,username,'.$member->id;
         $rules['email'] = $rules['email'] . '|unique:users,email,' . $member->id;
     } else {
         $rules['password'] = $rules['password'] . '|required';
         //$rules['username'] = $rules['username'].'|unique:users';
         $rules['email'] = $rules['email'] . '|unique:users';
     }
     foreach ($this->input('subscriptions', []) as $idx => $submittedSubscription) {
         $rules['subscriptions.' . $idx] = 'in:' . implode(',', $allowedSubscriptions);
     }
     return $rules;
 }
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     $qb = \GoProp\Models\User::orderBy('id', 'ASC');
     $qb->whereHas('roles', function ($query) {
         $query->where('slug', 'agent');
     });
     $agents = $qb->get();
     foreach ($agents as $idx => $agent) {
         $agent->username = time() + $idx;
         $agent->save();
         $agent->username = \GoProp\Facades\AgentHelper::formatAgentCode($idx + 1);
         $agent->save();
     }
 }
Example #5
0
 public function getNextAgentCode()
 {
     $prefix = 'agent';
     $qb = User::orderBy('username', 'DESC');
     $qb->whereHas('roles', function ($query) {
         $query->where('slug', 'agent');
     });
     $lastAgent = $qb->first();
     if (!$lastAgent) {
         $lastAgentNumber = 0;
     } else {
         $lastAgentNumber = intval(str_replace($prefix, '', $lastAgent->username));
     }
     return $this->formatAgentCode($lastAgentNumber + 1);
 }
 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
     Schema::table('users', function (Blueprint $table) {
         $table->boolean('manage_property')->default(FALSE)->nullable();
     });
     $qb = \GoProp\Models\User::with('profile');
     $qb->whereHas('roles', function ($query) {
         $query->where('slug', 'agent');
     });
     $agents = $qb->get();
     foreach ($agents as $agent) {
         $agent->manage_property = TRUE;
         $agent->save();
     }
 }
 public function assignToAgent(Request $request, $id)
 {
     $conversation = Message::findOrFail($id);
     if ($request->isMethod('POST')) {
         if ($request->has('agent')) {
             $agent = User::findOrFail($request->input('agent'));
             $conversation->recipient()->associate($agent);
             $message = 'Conversation has been assigned to ' . $agent->profile->singleName . '.';
         } else {
             $conversation->recipient()->dissociate();
             $message = 'Conversation is detached from Agent.';
         }
         $conversation->save();
         return redirect($request->get('backUrl', route('admin.customer_inquiry.index', ['type' => str_replace('_message', '', $conversation->type)])))->with('messages', [$message]);
     }
     $agentOptions = AgentHelper::getAgentOptions();
     return view('admin.customer_inquiry.assign_to_agent', ['conversation' => $conversation, 'agentOptions' => $agentOptions]);
 }
 public function propertyListener($event)
 {
     $property = $event->property;
     if ($event->type == 'new') {
         //Find admin
         $administratorRole = Role::where('slug', 'administrator')->first();
         $users = $administratorRole->users;
         $sendToEmails = $users->pluck('email')->all();
         //Find property manager in that province
         $propertyManagers = User::whereHas('roles', function ($query) {
             $query->where('slug', 'property_manager');
         })->whereHas('profile', function ($query) use($property) {
             $query->where('province', '=', $property->province);
         })->get();
         $sendToEmails = array_merge($sendToEmails, $propertyManagers->pluck('email')->all());
         ProjectHelper::sendMail($sendToEmails, 'New Property: ' . $property->property_name, 'admin.emails.property.new', ['property' => $property]);
     }
 }
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function store(ReferralInformationFormRequest $request)
 {
     $user = Auth::user();
     $referralInformation = new ReferralInformation();
     $referralInformation->fill($request->all());
     $referralInformation->user()->associate($user);
     $referralInformation->save();
     $messageVars = ['referralInformation' => $referralInformation];
     Mail::send('frontend.emails.new_referral_information', $messageVars, function ($m) use($referralInformation) {
         $m->from(config('app.contact_from_email'), config('app.contact_from_name'));
         $sendToEmails = config('app.contact_destination');
         //Find property manager in that province
         $propertyManagers = User::whereHas('roles', function ($query) {
             $query->where('slug', 'property_manager');
         })->whereHas('profile', function ($query) use($referralInformation) {
             $query->where('province', '=', $referralInformation->province);
         })->get();
         foreach ($propertyManagers as $propertyManager) {
             $sendToEmails[] = $propertyManager->email;
         }
         $m->to($sendToEmails)->subject('New Referral Listing Information');
     });
     return redirect()->route($user->backendAccess . '.referrals.index')->with('messages', ['Terima kasih untuk referensi properti kamu. Kami akan segera melakukan follow-up kepada Owner properti ini.']);
 }
Example #10
0
 protected function findOrCreateUser($socialUser)
 {
     $authUser = User::where('facebook_id', $socialUser->getId())->orWhere('email', $socialUser->getEmail())->first();
     if ($authUser) {
         return $authUser;
     }
     $user = User::create(['email' => $socialUser->getEmail(), 'facebook_id' => $socialUser->getId()]);
     $user->assignRole('authenticated_user');
     //Set Name
     $exploded = explode(' ', $socialUser->getName());
     $profile = new Profile();
     $profile->first_name = $exploded[0];
     unset($exploded[0]);
     if (isset($exploded[1])) {
         $profile->last_name = implode(' ', $exploded);
     }
     $profile->user()->associate($user);
     /*
     if(!empty($data['profile']['profile_picture']) && $data['profile']['profile_picture']->isValid()){
         $profile->profile_picture = $profile->saveProfilePicture($data['profile']['profile_picture']);
     }
     */
     $profile->profile_picture = $profile->saveRemoteProfilePicture($socialUser->getAvatar());
     $profile->save();
     $extendedProfile = new ExtendedProfile();
     $profile->extendedProfile()->save($extendedProfile);
     $subscriptions = Subscription::all()->pluck('id')->all();
     $user->subscriptions()->sync($subscriptions);
     return $user;
 }
Example #11
0
 public function canEdit(User $user)
 {
     return $user->is('administrator') || $user->is('agent') && $user->id == $this->user_id || $user->is('property_manager') && $user->profile->province == $this->province;
 }
Example #12
0
 public function findAutocomplete(Request $request)
 {
     $roles = $request->get('roles', ['authenticated_user']);
     $term = $request->get('term', '');
     $return = [];
     if (strlen($term) >= 2) {
         $qb = User::whereHas('profile', function ($query) use($term) {
             $query->where('first_name', 'LIKE', '%' . $term . '%')->orWhere('last_name', 'LIKE', '%' . $term . '%')->orWhere('email', 'LIKE', '%' . $term . '%');
             //->orWhere('username', 'LIKE', '%'.$term.'%');
         });
         $qb->whereHas('roles', function ($query) use($roles) {
             $query->whereIn('slug', $roles);
         });
         $results = $qb->get();
         foreach ($results as $result) {
             $return[] = ['label' => $result->username . ' - ' . $result->profile->first_name . ' ' . $result->profile->last_name . ' (' . $result->email . ')', 'value' => $result->email];
         }
     }
     return response()->json($return);
 }
Example #13
0
 public function delete(Request $request, $id)
 {
     if (!Auth::user()->is('administrator')) {
         return redirect()->back()->withErrors(['You are not authorized to do this.']);
     }
     $user = User::findOrFail($id);
     $user->delete();
     return redirect($request->get('backUrl', route('admin.agent.index')))->with('messages', [$user->getName() . ' has been deleted.']);
 }
Example #14
0
 public function assignToAgent(Request $request, $id)
 {
     $property = Property::findOrFail($id);
     $backUrl = $request->get('backUrl', route('admin.property.index'));
     if ($request->isMethod('POST')) {
         $backUrl = $request->input('backUrl', route('admin.property.index'));
         //Get remaining schedules for this property
         $viewingSchedules = $property->viewingSchedules()->where('viewing_from', '>', Carbon::now())->get();
         $conversations = $property->conversations;
         if ($request->has('agent')) {
             $agent = User::findOrFail($request->input('agent'));
             $property->agentList()->associate($agent);
             foreach ($viewingSchedules as $viewingSchedule) {
                 $viewingSchedule->agent()->associate($agent);
                 $viewingSchedule->save();
             }
             foreach ($conversations as $conversation) {
                 $conversation->recipient()->associate($agent);
                 $conversation->save();
             }
             $message = 'Property, Viewing Schedules and Conversation have been assigned to ' . $agent->profile->singleName . '.';
         } else {
             $property->agentList()->dissociate();
             foreach ($viewingSchedules as $viewingSchedule) {
                 $viewingSchedule->agent()->dissociate();
                 $viewingSchedule->save();
             }
             foreach ($conversations as $conversation) {
                 $conversation->recipient()->dissociate();
                 $conversation->save();
             }
             $message = 'Property, Viewing Schedules and Conversation have been detached from Agent.';
         }
         $property->save();
         return redirect($backUrl)->with('messages', [$message]);
     }
     $agentOptions = AgentHelper::getAgentOptions();
     return view('admin.property.assign_to_agent', ['property' => $property, 'agentOptions' => $agentOptions, 'backUrl' => $backUrl]);
 }
Example #15
0
 public function notifySignedUpReferralAgents()
 {
     $submissions = FormSubmission::groupBy('email')->get();
     foreach ($submissions as $submission) {
         if (User::where('email', $submission->email)->count() < 1) {
             $password = str_random(8);
             $user = new User(['email' => $submission->email, 'status' => User::STATUS_ACTIVE, 'password' => bcrypt($password)]);
             $user->manage_property = FALSE;
             $user->save();
             $user->assignRole('agent');
             $names = explode(' ', $submission->getData('name'));
             $profile = new Profile();
             $profile->fill(['first_name' => array_shift($names), 'last_name' => !empty($names) ? implode(' ', $names) : '', 'mobile_phone_number' => $submission->getData('contact_number'), 'address' => $submission->getData('address') . ', ' . $submission->getData('city')]);
             $profile->user()->associate($user);
             $profile->save();
             $user->load('profile');
             $this->notifyReferralAgent($user, $password);
         }
     }
 }
Example #16
0
 public function delete(Request $request, $id)
 {
     $user = User::findOrFail($id);
     $user->delete();
     return redirect($request->get('backUrl', route('admin.user.index')))->with('messages', [$user->getName() . ' has been deleted.']);
 }