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 update(ProfileSettingsRequest $request, $slug)
 {
     //Check current_password
     if ($request->new_password != "" && !Hash::check($request->current_password, Sentry::getUser()->password)) {
         return response()->json(['message' => 'Geçerli Şifrenizi yanlış girdiniz!'], 422);
     } else {
         $user = User::where('slug', '=', $slug)->first();
         //When image was deleted
         if ($request->image_hidden == 1 || $request->hasFile('image')) {
             //When old image was not null
             if ($user->image != '') {
                 File::delete(public_path() . "/uploads/profile-images/" . $user->image);
             }
             //When new image was uploaded
             if ($request->hasFile('image') && $request->file('image_hidden') != 'default-avatar.jpg') {
                 $file = $request->file('image');
                 $imageName = CommonController::imageUpload($file, 'uploads/profile-images');
             } else {
                 $imageName = '';
             }
             //When image couldn't be uploaded
             if (!isset($imageName)) {
                 return response()->json(['messages' => 'Dosya yüklenemedi!'], 422);
             }
         } else {
             //When image was null
             if ($user->image == "") {
                 $imageName = '';
             } else {
                 $imageName = $user->image;
             }
         }
         DB::transaction(function () use($request, $imageName) {
             // Update the user
             $user = Sentry::findUserById(Crypt::decrypt($request->userId));
             if ($request->has('new_password')) {
                 $user->password = $request->new_password;
             }
             $user->first_name = $request->first_name;
             $user->last_name = $request->last_name;
             $user->image = $imageName;
             $user->email = $request->email;
             $user->phone = CommonController::regexPhone($request->phone);
             $user->slug = $request->slug_name;
             $user->save();
         });
         return response()->json(['success' => true, 'messages' => 'Güncelleme İşlemi Başarılı']);
     }
 }
 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 update(UserRequest $request, $id)
 {
     if ($this->currentUser->hasAccess('wts.user.edit')) {
         DB::transaction(function () use($request) {
             // Update the user
             $user = Sentry::findUserById(Crypt::decrypt($request->id));
             if ($request->has('send_sms') && $request->send_sms == 1) {
                 if ($request->has('password')) {
                     $user->password = $request->password;
                     CommonController::sendSms('RHPOZTFYAY', $user->phone, 'Merhaba  "' . $user->first_name . ' ' . $user->last_name . '" WTS iş takip sistemi için; \\nEmailiniz : ' . $request->email . ' \\nŞifreniz: ' . $request->password . '\\nGüvenliğiniz açısından şifrenizi kimseyle paylaşmamanızı ve en kısa sürede değiştirmenizi önermekteyiz.\\nSite: wts.pinnacle.com.tr');
                 } else {
                     CommonController::sendSms('RHPOZTFYAY', $user->phone, 'Merhaba  "' . $user->first_name . ' ' . $user->last_name . '" WTS iş takip sistemi için; \\nEmailiniz : ' . $request->email . '\\nGüvenliğiniz açısından emailinizi kimseyle paylaşmamanızı ve şifrenizi düzenli aralıklarla değiştirmenizi önermekteyiz.\\nSite: wts.pinnacle.com.tr');
                 }
             }
             $user->email = $request->email;
             $user->first_name = $request->first_name;
             $user->last_name = $request->last_name;
             $user->phone = $request->phone;
             $user->slug = $request->slug_name;
             $user->save();
             // Find the group using the group id
             $groupId = Crypt::decrypt($request->group);
             if ($user->getGroups()[0]->id != $groupId) {
                 $newGroup = Sentry::findGroupById($groupId);
                 $user->updateGroups($newGroup);
             }
             if ($request->image_hidden) {
                 $file_path = public_path() . "/uploads/profile-images/" . $user->image;
                 \File::delete($file_path);
             }
             if ($request->hasFile('image')) {
                 $file = $request->file('image');
                 $imageName = CommonController::imageUpload($file, 'uploads/profile-images');
                 $user->image = $imageName;
                 $user->save();
             }
         });
         return response()->json($this->editResponseMessage);
     } else {
         abort(403, $this->accessForbidden);
     }
 }
 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);
     }
 }
            Route::post('works/work-acceptance', 'Admin\\WorkController@acceptWork');
            Route::post('works/get-work-detail', 'Admin\\WorkController@getWorkDetail');
            Route::get('works/download-project-file/{workId}', 'Admin\\WorkController@downloadFile');
            Route::post('works/revert-assigned-work', 'Admin\\WorkController@revertAssignedWork');
            //Create slug
            Route::post('common/slug', 'Admin\\CommonController@postSlug');
            /**MY PAGE**/
            //Refresh to-do in my page
            Route::get('/dashboard/to-do-refresh', 'Admin\\DashboardController@refreshTodo');
            //Search to-do in my page
            Route::get('/dashboard/to-do-search', 'Admin\\DashboardController@searchTodo');
            //Load done works
            Route::get('/dashboard/done', 'Admin\\DashboardController@loadDone');
            //Refresh done in my page
            Route::get('/dashboard/done-refresh', 'Admin\\DashboardController@refreshDone');
            //Search done in my page
            Route::get('/dashboard/done-search', 'Admin\\DashboardController@searchDone');
            //To-do edit work post
            Route::post('/dashboard/to-do-edit-work', 'Admin\\DashboardController@editTodo');
            //Use User Profile
            Route::get('users/{slug}/use', 'Admin\\UserGroup\\UserController@useSession');
        });
        //Profile settings
        Route::resource('/settings', 'ProfileSettingsController');
        Route::get('/deneme', function () {
            $data = ['fullname' => 'Yasin ÇİNAR'];
            //            CommonController::mailSendNotQueue("IS TAKIP SISTEMI", ["*****@*****.**"], $data, 'emails.work-mail-template');
            echo CommonController::sendSms('RHPOZTFYAY', ['05067836141'], 'Deneme mesajı');
        });
    });
});