Esempio n. 1
0
 /**
  * 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();
 }