public function assignWork(AssignWorkRequest $request)
 {
     $work = Work::where('id', '=', $request->work_id)->first();
     $departmentWork = DepartmentWork::where('id', '=', $work->last_department_work_id)->first();
     if ($request->has('department_worker') && $work->last_department_work_id != null) {
         $data = DB::transaction(function () use($work, $departmentWork, $request) {
             $newUserWork = new UserWork();
             $newUserWork->department_id = $departmentWork->department_id;
             $newUserWork->assign_date = time();
             $newUserWork->assigned_to = $request->department_worker;
             $newUserWork->save();
             $departmentWork->last_user_work_id = $newUserWork->id;
             $departmentWork->accepted = 1;
             $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');
             CommonController::mailSendNotQueue('IS TAKIP SISTEMI', [$user->email], ['fullname' => $username, 'message' => 'Departman lideriniz tarafından size  "' . $work->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 tarafından size  "' . $work->title . '" 
             başlıklı yeni bir iş atandı lütfen sistem üzerinden ayrıntıları inceleyin');
             /**
              * İŞİ OLUŞTURAN KİŞİYE İŞİN ATANDIĞINA DAİR MAİL & SMS ATMA
              */
             $workCreator = User::where('id', '=', $work->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', [$workCreator->email], ['fullname' => $creatorusername, 'message' => 'Açmış olduğunuz "' . $work->title . '" başlıklı
                 iş , ' . $username . ' kişisine atanmıştır. Detaylar için lütfen sisteme gidiniz.'], 'emails.work-mail-template');
             CommonController::sendSms('RHPOZTFYAY', $workCreator->phone, 'Merhaba ' . $creatorusername . ', açmış olduğunuz"' . $work->title . '"
             başlıklı iş ' . $username . ' kişisine atanmıştır. Detaylar için lütfen sisteme gidiniz.');
             return ['success' => true, 'messages' => 'Atama İşlemi Başarılı', 'work' => $work, 'department' => $departmentWork, 'user' => $newUserWork];
         });
         return response()->json($data);
     } elseif ($request->has('department')) {
         $data = DB::transaction(function () use($request, $work) {
             $newDepartmentWork = new DepartmentWork();
             $newDepartmentWork->department_id = $request->department;
             $newDepartmentWork->assign_date = time();
             $newDepartmentWork->save();
             $work->last_department_work_id = $newDepartmentWork->id;
             $work->save();
             /**
              * İŞİN AÇILDIĞI DEPARTMAN SENIORUNA BILGI
              */
             $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');
             $workCreator = User::where('id', '=', $work->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', [$seniorUser->email], ['fullname' => $username, 'message' => 'Departmanınıza ' . $creatorusername . ' tarafından , "' . $work->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 . ' tarafından , "' . $work->title . '" başlıklı yeni bir iş açılmıştır.
             İşin detayları ve işi atamak için lütfen sisteme gidiniz.');
             return ['success' => true, 'messages' => 'Atama İşlemi Başarılı', 'work' => $work, 'deparment' => $newDepartmentWork];
         });
         return response()->json($data);
     } elseif ($work->last_department_work_id == null && $request->has('department_worker')) {
         $data = DB::transaction(function () use($request, $work) {
             $newDepartmentWork = new DepartmentWork();
             $newDepartmentWork->department_id = $request->department;
             $newDepartmentWork->assign_date = time();
             $newDepartmentWork->save();
             $work->last_department_work_id = $newDepartmentWork->id;
             $work->save();
             $newUserWork = new UserWork();
             $newUserWork->department_id = $newDepartmentWork->department_id;
             $newUserWork->assign_date = time();
             $newUserWork->assigned_to = $request->department_worker;
             $newUserWork->save();
             $newDepartmentWork->last_user_work_id = $newUserWork->id;
             $newDepartmentWork->accepted = 1;
             $newDepartmentWork->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', '=', $work->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 "' . $work->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 "' . $work->title . '" başlıklı yeni bir iş atandı lütfen sistem üzerinden ayrıntıları inceleyin');
             /**
              * İŞİ OLUŞTURAN KİŞİYE İŞİN ATANDIĞINA DAiR MAİL & SMS ATMA
              */
             $workCreator = User::where('id', '=', $work->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', [$workCreator->email], ['fullname' => $creatorusername, 'message' => 'Açmış olduğunuz "' . $work->title . '" başlıklı
                 iş , ' . $username . ' kişisine atanmıştır. Detaylar için lütfen sisteme gidiniz.'], 'emails.work-mail-template');
             CommonController::sendSms('RHPOZTFYAY', $workCreator->phone, 'Merhaba ' . $creatorusername . ', açmış olduğunuz"' . $work->title . '"
             başlıklı iş ' . $username . ' kişisine atanmıştır. Detaylar için lütfen sisteme gidiniz.');
             return ['success' => true, 'messages' => 'Atama İşlemi Başarılı', 'work' => $work, 'department' => $newDepartmentWork, 'user' => $newUserWork];
         });
         return response()->json($data);
     }
 }
 /**
  * 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);
     }
 }