public function postForgotPassword(ForgotPasswordRequest $request)
 {
     try {
         // Find the user using the user email address
         $user = Sentry::findUserByLogin($request->email);
         // Get the password reset code
         $resetCode = $user->getResetPasswordCode();
         $data = ['fullname' => $user->first_name . ' ' . $user->last_name, 'resetLink' => url('forgot-password-reset', $resetCode)];
         CommonController::mailSendNotQueue('WTS Şifre Sıfırlama İsteği', [$request->email], $data, 'emails.reset-password');
         return redirect('/forgot-password')->with('message', 'Email Başarıyla yollandı. Lütfen mail kutunuzu kontrol ediniz')->with('success', true);
     } catch (\Cartalyst\Sentry\Users\UserNotFoundException $e) {
         return redirect('/forgot-password')->with('message', 'Kullanıcı Bulunamadı')->with('email-error', '');
     }
 }
 public function editTodo(DashboardEditWorkRequest $request)
 {
     $this->permissionSection(function () use($request) {
         $workID = Crypt::decrypt($request->edit_work_id);
         $accepted = 0;
         $situation = 0;
         if ($request->edit_work_status === 'Kabul Et') {
             $accepted = 1;
         } else {
             if ($request->edit_work_status === 'Tamamla') {
                 $situation = 1;
             } else {
                 $accepted = -1;
             }
         }
         //Work and senior datas(SMS)
         $work = DB::table('works as w')->leftJoin('users as u', 'u.id', '=', 'w.created_by')->leftJoin('department_works as dw', 'dw.id', '=', 'w.last_department_work_id')->leftJoin('departments as d', 'd.id', '=', 'dw.department_id')->where('w.id', '=', $workID)->select(['w.title', 'u.phone as workOwnerPhone', 'u.email as workOwnerEmail', 'd.name as departmentName', 'u.first_name', 'u.last_name'])->first();
         $senior = DB::table('department_worker as dw')->leftJoin('users as u', 'u.id', '=', 'dw.user_id')->where('dw.department_id', '=', $this->userWithDepartment->department[0]->id)->where('dw.is_senior', '=', 1)->select(['u.phone', 'u.email', 'u.first_name', 'u.last_name'])->first();
         $assignedToFullname = mb_strtoupper($this->currentUser->first_name) . " " . mb_strtoupper($this->currentUser->last_name);
         $departmentName = mb_strtoupper($work->departmentName);
         //Work and senior datas(EMAIL)
         $data = ['fullname' => '', 'message' => ''];
         //If work is accepted or rejected
         if ($accepted != 0) {
             DB::transaction(function () use($request, $workID, $accepted, $work, $senior, $assignedToFullname, $data) {
                 DB::table('works as w')->leftJoin('department_works as dw', 'dw.id', '=', 'w.last_department_work_id')->leftJoin('user_works as uw', 'uw.id', '=', 'dw.last_user_work_id')->where('w.id', '=', $workID)->update(['uw.accepted' => $accepted, 'uw.reason' => $request->todo_reason, 'uw.start_date' => time()]);
                 //The work was accepted
                 if ($accepted == 1) {
                     //To department senior
                     $data['message'] = 'Atamış olduğunuz "' . $work->title . '" başlıklı iş ' . $assignedToFullname . ' tarafından kabul edildi.';
                     $data['fullname'] = mb_strtoupper($senior->first_name) . " " . mb_strtoupper($senior->last_name);
                     CommonController::sendSms('RHPOZTFYAY', [$senior->phone], $data['message']);
                     CommonController::mailSendNotQueue("IS TAKIP SISTEMI", [$senior->email], $data, 'emails.work-mail-template');
                 } else {
                     //To department senior
                     $data['message'] = 'Atamış olduğunuz "' . $work->title . '" başlıklı iş ' . $assignedToFullname . ' tarafından reddedildi.';
                     $data['fullname'] = mb_strtoupper($senior->first_name) . " " . mb_strtoupper($senior->last_name);
                     CommonController::sendSms('RHPOZTFYAY', [$senior->phone], $data['message']);
                     CommonController::mailSendNotQueue("IS TAKIP SISTEMI", [$senior->email], $data, 'emails.work-mail-template');
                 }
             });
         } else {
             if ($situation == 1) {
                 DB::transaction(function () use($request, $workID, $situation, $work, $senior, $assignedToFullname, $departmentName, $data) {
                     DB::table('works as w')->leftJoin('department_works as dw', 'dw.id', '=', 'w.last_department_work_id')->leftJoin('user_works as uw', 'uw.id', '=', 'dw.last_user_work_id')->where('w.id', '=', $workID)->update(['uw.end_date' => time(), 'uw.situation' => $situation, 'uw.conclusion' => $request->todo_conclusion, 'dw.situation' => $situation, 'dw.conclusion' => $request->todo_conclusion]);
                     //To department senior
                     $data['message'] = 'Atamış olduğunuz "' . $work->title . '" başlıklı iş ' . $assignedToFullname . ' tarafından tamamlandı.';
                     $data['fullname'] = mb_strtoupper($senior->first_name) . " " . mb_strtoupper($senior->last_name);
                     CommonController::sendSms('RHPOZTFYAY', [$senior->phone], $data['message']);
                     CommonController::mailSendNotQueue("IS TAKIP SISTEMI", [$senior->email], $data, 'emails.work-mail-template');
                     //To owner of work
                     $data['message'] = 'Atamış olduğunuz "' . $work->title . '" başlıklı iş ' . $departmentName . ' departmanı tarafından tamamlandı.';
                     $data['fullname'] = mb_strtoupper($work->first_name) . " " . mb_strtoupper($work->last_name);
                     CommonController::sendSms('RHPOZTFYAY', [$work->workOwnerPhone], $data['message']);
                     CommonController::mailSendNotQueue("IS TAKIP SISTEMI", [$work->workOwnerEmail], $data, 'emails.work-mail-template');
                 });
             }
         }
     }, 'wts.work.edit');
     return response()->json($this->storeResponseMessage);
 }
 public function revertAssignedWork(RevertAssignedWorkRequest $request)
 {
     if ($request->revert == 1) {
         $work = Work::where('id', '=', $request->work_id)->first();
         if ($work->created_by == $this->currentUser->getId()) {
             /**
              * İŞİ GERİ ÇEKİLİNCE
              */
             $departmentWork = DepartmentWork::where('id', '=', $work->last_department_work_id)->first();
             $departmentWithSenior = Department::where('id', '=', $departmentWork->department_id)->with('senior')->first();
             $seniorUser = $departmentWithSenior->senior[0];
             $username = $seniorUser->first_name . " " . $seniorUser->last_name;
             $username = mb_convert_case($username, MB_CASE_TITLE, 'utf-8');
             CommonController::mailSendNotQueue('IS TAKIP SISTEMI', [$seniorUser->email], ['fullname' => $username, 'message' => 'Departmanınıza açılan "' . $work->title . '" başlıklı iş geri
                 alınmıştır. Lütfen ' . $this->currentUser->first_name . ' ' . $this->currentUser->last_name . ' ile irtibata geçiniz. '], 'emails.work-mail-template');
             CommonController::sendSms('RHPOZTFYAY', $seniorUser->phone, 'Departmanınızdaki "' . $work->title . '" başlıklı iş geri
             alınmıştır.Lütfen ' . $this->currentUser->first_name . ' ' . $this->currentUser->last_name . '  ile irtibata geçiniz.');
             $work->last_department_work_id = null;
             $work->save();
         } else {
             $workDepartment = DepartmentWork::where('id', '=', $work->last_department_work_id)->first();
             $userWork = UserWork::where('id', '=', $workDepartment->last_user_work_id)->first();
             $user = User::where('id', '=', $userWork->assigned_to)->first();
             $username = $user->first_name . " " . $user->last_name;
             $username = mb_convert_case($username, MB_CASE_TITLE, 'utf-8');
             CommonController::mailSendNotQueue('IS TAKIP SISTEMI', [$user->email], ['fullname' => $username, 'message' => 'Size acılan "' . $work->title . '" başlıklı iş geri alınmıştır.
                  Lütfen departman lideriniz ile irtibata geçiniz. '], 'emails.work-mail-template');
             CommonController::sendSms('RHPOZTFYAY', $user->phone, 'Size açılmış  "' . $work->title . '" başlıklı iş geri alınmıştır.
             Lütfen departman lideri ile irtibata geçiniz.');
             $workDepartment->last_user_work_id = null;
             $workDepartment->accepted = null;
             $workDepartment->save();
         }
         return response()->json(['success' => true, 'messages' => 'İş Geri Alma İşlemi Başarılı', 'revert' => true, 'work_id' => $work->id]);
     } else {
         return response()->json(['success' => true, 'messages' => 'İş Geri Alma İşlemi Başarılı', 'revert' => false]);
     }
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  int $id
  * @return \Illuminate\Http\Response
  */
 public function update(WorkFlowTodoWorkRequest $request, $id)
 {
     if ($this->currentUser->hasAccess('wts.management.edit')) {
         DB::transaction(function () use($request) {
             $editWork = Work::where('id', '=', $request->work_id)->with('departmentWork')->first();
             $editWork->slug = $request->slug_name;
             $editWork->title = $request->title;
             $editWork->description = $request->description;
             $editWork->importance = $request->importance;
             $editWork->deadline = strtotime(str_replace('/', '-', $request->deadline));
             if ($request->hasFile('file')) {
                 if ($editWork->file != '') {
                     \File::delete(public_path() . "/uploads/works-files/" . $editWork->file);
                 }
                 $file = $request->file('file');
                 $fileName = CommonController::fileUpload($file, 'uploads/works-files');
                 $editWork->file = $fileName;
                 $editWork->save();
             } elseif (!$request->hasFile('file') && $request->file_hidden == 1) {
                 if ($editWork->file != '') {
                     \File::delete(public_path() . "/uploads/works-files/" . $editWork->file);
                     $editWork->file = "";
                 }
             }
             if (empty($editWork->departmentWork) || $editWork->departmentWork->department_id != $request->department) {
                 if ($request->department == '') {
                     $editWork->last_department_id = '';
                 } else {
                     $departmentWork = new DepartmentWork();
                     $departmentWork->department_id = $request->department;
                     $departmentWork->assign_date = time();
                     //@todo DATE HATASI !!! BURALAR REVİZE EDİLMELİ
                     $departmentWork->accepted = 0;
                     $departmentWork->save();
                     $editWork->last_department_work_id = $departmentWork->id;
                     if ($request->is_senior == 1 && $request->has('department_worker')) {
                         $userWork = new UserWork();
                         $userWork->department_id = $request->department;
                         $userWork->assign_date = time();
                         //@todo DATE HATASI !!! BURALAR REVİZE EDİLMELİ
                         $userWork->assigned_to = $request->department_worker;
                         $userWork->accepted = 0;
                         $userWork->save();
                         $departmentWork->accepted = 1;
                         $departmentWork->last_user_work_id = $userWork->id;
                         $departmentWork->save();
                         /**
                          * İŞ AÇILAN KİŞİYE MAİL ATMA
                          */
                         $user = User::where('id', '=', $request->department_worker)->first();
                         $username = $user->first_name . " " . $user->last_name;
                         $username = mb_convert_case($username, MB_CASE_TITLE, 'utf-8');
                         $workCreator = User::where('id', '=', $editWork->created_by)->first();
                         $creatorusername = $workCreator->first_name . " " . $workCreator->last_name;
                         $creatorusername = mb_convert_case($creatorusername, MB_CASE_TITLE, 'utf-8');
                         CommonController::mailSendNotQueue('IS TAKIP SISTEMI', [$user->email], ['fullname' => $username, 'message' => 'Departman lideriniz ' . $creatorusername . ' tarafından size , "' . $editWork->title . '" başlıklı yeni bir iş açıldı. Detaylar için lütfen sisteme gidiniz.'], 'emails.work-mail-template');
                         CommonController::sendSms('RHPOZTFYAY', $user->phone, 'Merhaba ' . $username . ', departman lideriniz ' . $creatorusername . ' tarafından size yeni bir iş açıldı lütfen sistem üzerinden ayrıntıları inceleyin');
                         /**
                          * İŞİ OLUŞTURAN KİŞİYE BİLGİLENDİRME
                          */
                         $departmentWithSenior = Department::where('id', '=', $request->department)->with('senior')->first();
                         $seniorUser = $departmentWithSenior->senior[0];
                         $seniorUsername = $seniorUser->first_name . " " . $seniorUser->last_name;
                         $seniorUsername = mb_convert_case($seniorUsername, MB_CASE_TITLE, 'utf-8');
                         CommonController::mailSendNotQueue('IS TAKIP SISTEMI', [$seniorUser->email], ['fullname' => $seniorUsername, 'message' => 'Departmanınıza "' . $editWork->title . '" başlıklı yeni bir iş açılmış ve bu iş ' . $username . ' kişisine atanmıştır. İşin detayları ve işi atamak için lütfen sisteme gidiniz.'], 'emails.work-mail-template');
                         CommonController::sendSms('RHPOZTFYAY', $seniorUser->phone, 'Merhaba ' . $seniorUsername . ', departmanınıza "' . $editWork->title . '" başlıklı yeni bir iş açılmış ve bu iş ' . $username . ' kişisine atanmıştır . İşin detayları ve işi atamak için lütfen sisteme gidiniz.');
                     } else {
                         $workCreator = User::where('id', '=', $editWork->created_by)->first();
                         $creatorusername = $workCreator->first_name . " " . $workCreator->last_name;
                         $creatorusername = mb_convert_case($creatorusername, MB_CASE_TITLE, 'utf-8');
                         /**
                          * İŞİ OLUŞTURULAN KİŞİYE BİLGİLENDİRME
                          */
                         $departmentWithSenior = Department::where('id', '=', $request->department)->with('senior')->first();
                         $seniorUser = $departmentWithSenior->senior[0];
                         $username = $seniorUser->first_name . " " . $seniorUser->last_name;
                         $username = mb_convert_case($username, MB_CASE_TITLE, 'utf-8');
                         CommonController::mailSendNotQueue('IS TAKIP SISTEMI', [$seniorUser->email], ['fullname' => $username, 'message' => 'Departmanınıza ' . $creatorusername . ' kişisi tarafından, "' . $editWork->title . '" başlıklı yeni bir iş açılmıştır. İşin detayları ve işi atamak için lütfen sisteme gidiniz.'], 'emails.work-mail-template');
                         CommonController::sendSms('RHPOZTFYAY', $seniorUser->phone, 'Merhaba ' . $username . ', departmanınıza ' . $creatorusername . ' kişisi tarafından ,"' . $editWork->title . '" başlıklı yeni bir iş açılmıştır. İşin detayları ve işi atamak için lütfen sisteme gidiniz.');
                     }
                 }
             }
             $editWork->save();
         });
         return response()->json($this->editResponseMessage);
     } else {
         abort(403, $this->accessForbidden);
     }
 }