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'])); } }
/** * 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(); } }
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.']); }
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; }
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; }
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); }
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.']); }
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]); }
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); } } }
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.']); }