/** * Execute the job. * * @return void */ public function fire($job, $data) { $job_offer = $this->jobs->find($data['job_id']); if (empty($job_offer)) { throw new \Exception('Job not found'); } $job_offer->load('user'); if (empty($job_offer->user)) { throw new \Exception('Job user not found'); } // User have no published job offers if (empty($job_offer->user->active_jobs)) { // Move job to moderations status $job_offer->statusShift('moderation'); // Moderators should be notified $moderators = Group::where('code', 'moderators')->first()->users()->take(20)->get(); foreach ($moderators as $moderator) { Mail::send('emails.event.job.create.moderator', ['moderator' => $moderator, 'job' => $job_offer], function ($m) use($moderator) { $m->to($moderator->email, $moderator->name)->subject('New job offer for moderation'); }); } } else { // Move job_offer to active status $job_offer->statusShift('active'); } // User should be notified Mail::send('emails.event.job.create.user', ['job' => $job_offer], function ($m) use($job_offer) { $m->to($job_offer->user->email, $job_offer->user->name)->subject('New job offer from you'); }); $job->delete(); }
/** * Create group */ public function store(Request $request) { $validator = \Validator::make($request->all(), ['title' => 'required|max:255', 'code' => 'required|alpha|max:255|unique:' . (new Group())->getTable()]); if ($validator->passes()) { $fields = ['title' => e($request->get('title')), 'code' => $request->get('code')]; if (Group::create($fields)) { return redirect()->to($this->uri); } $validator->errors()->add('model_create_fail', true); } return redirect()->to($this->uri . '/create')->withErrors($validator)->withInput(); }
/** * Run the database seeds. * * @return void */ public function run() { $this->users->newQuery()->delete(); (new Group())->newQuery()->delete(); (new Permission())->newQuery()->delete(); $moder_job_perm1 = Permission::create(['title' => 'JobController@index', 'code' => 'App\\Http\\Controllers\\Moderator\\Job\\JobController@index']); $moder_job_perm2 = Permission::create(['title' => 'JobController@statusShift', 'code' => 'App\\Http\\Controllers\\Moderator\\Job\\JobController@statusShift']); $admins_group = Group::create(['title' => 'Admins', 'code' => 'admins']); $moderators_group = Group::create(['title' => 'Moderators', 'code' => 'moderators']); $moderators_group->permissions()->sync([$moder_job_perm1->id, $moder_job_perm2->id]); $admin = $this->users->create(['name' => 'admin', 'email' => '*****@*****.**', 'password' => bcrypt('admin')]); $moderator = $this->users->create(['name' => 'moderator', 'email' => '*****@*****.**', 'password' => bcrypt('moderator')]); $admin->groups()->sync([$admins_group->id]); $moderator->groups()->sync([$moderators_group->id]); }
/** * Updating user */ public function update($uid, Request $request) { $validator = \Validator::make($request->all(), $this->users->validatorRules($request->get('id'))); if ($validator->passes()) { $groups = Group::whereIn('id', $request->get('group'))->lists('id')->toArray(); $user = $this->users->find($request->get('id')); if (empty($user)) { $validator->errors()->add('user_not_found', true); } if (!$validator->errors()->count()) { $fields = ['email' => $request->get('email'), 'name' => e($request->get('name'))]; if ($request->get('password')) { $fields['password'] = $request->get('password'); } if ($user->update($fields)) { $user->groups()->sync($groups); return redirect()->to($this->uri); } $validator->errors()->add('model_edit_fail', true); } } return redirect()->to($this->uri . '/' . $request->get('id') . '/edit')->withErrors($validator)->withInput(); }