Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 10 |
CRAP | |
0.00% |
0 / 391 |
| ApplyLeaveController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 10 |
8010 | |
0.00% |
0 / 391 |
| index | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 14 |
|||
| create | |
0.00% |
0 / 1 |
812 | |
0.00% |
0 / 121 |
|||
| store | |
0.00% |
0 / 1 |
756 | |
0.00% |
0 / 117 |
|||
| storeApi | |
0.00% |
0 / 1 |
342 | |
0.00% |
0 / 83 |
|||
| show | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| edit | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| update | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 10 |
|||
| destroy | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getLeaveCount | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
| checkLeaveexists | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 33 |
|||
| <?php | |
| namespace App\Http\Controllers\Leave; | |
| use App\Http\Controllers\FirebaseController\FirebaseCloudMessaging; | |
| use App\Helpers\LeaveLogHelper; | |
| use Illuminate\Http\Request; | |
| use App\Http\Controllers\Controller; | |
| use App\Models\Admin\Leave; | |
| use App\Models\Auth\User; | |
| use App\Models\Auth\UserWeeklyOff; | |
| use App\Models\Leave\ApplyLeave; | |
| use App\Models\Leave\LeaveEntitlement; | |
| use App\Models\Admin\Weekend; | |
| use Illuminate\Support\Facades\Validator; | |
| use Session; | |
| use Carbon\Carbon; | |
| use Auth; | |
| use DB; | |
| use Illuminate\Support\Facades\Log; | |
| //use App\Models\NotificationModel\NotificationList; | |
| use App\Notifications\ApplyLeaveNotifications; | |
| use App\Models\Admin\Holiday; | |
| use App\Helpers\HolidayHelper; | |
| use App\Helpers\LeaveHelper; | |
| use App\Helpers\AttendanceHelper; | |
| use App\Models\Schedule\ScheduleDetail; | |
| use App\Models\Admin\UserDetail; | |
| use App\Models\Admin\UserDetailUser; | |
| use App\Models\Admin\Team; | |
| use Gate; | |
| class ApplyLeaveController extends Controller | |
| { | |
| /** | |
| * Display a listing of the resource. | |
| * | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function index(Request $request) | |
| { | |
| $title = '/Leave/Leave Report'; | |
| $leave = ApplyLeave::orderBy('created_at', 'DESC')->get(); | |
| $currentYear = Carbon::now()->year; | |
| $data = DB::table("apply_leaves") | |
| ->join("leaves", "leaves.id", "=", "apply_leaves.leave_id") | |
| ->select("apply_leaves.id as apply_leave_id", "apply_leaves.*", "leaves.*") | |
| ->whereRaw('year(from_date) = ?', [$currentYear]) | |
| ->orwhereRaw('year(to_date) = ?', [$currentYear]) | |
| ->orderByDesc('apply_leaves.created_at') | |
| ->get(); | |
| // For returning attendance marking for home controller | |
| $val = AttendanceHelper::getAttendanceMarkValue(); | |
| $valTeam = AttendanceHelper::getAttendanceTeam($request); | |
| $valUser = AttendanceHelper::getAttendanceUser($request); | |
| return view('leave.applyLeaveTable', compact('title', 'leave', 'data', 'val', 'valTeam', 'valUser')); | |
| } | |
| /** | |
| * Show the form for creating a new resource. | |
| * | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function create(Request $request) | |
| { | |
| $requestType = $request->requestType; | |
| $title = '/Leave/Apply Leave'; | |
| $leaves = Leave::all(); | |
| $user = Auth::user(); | |
| // $BeforeDays = Leave::where('name', 'Casual Leave - Paid') | |
| // ->value('applied_before'); | |
| // if ($BeforeDays != null) { | |
| // $appliedBeforeDays = $BeforeDays; | |
| // } else { | |
| // $appliedBeforeDays = null; | |
| // } | |
| $applyBeforeDays = Leave::where('system_generated', '!=', 1)->get(); | |
| foreach ($applyBeforeDays as $applyBeforeDay) { | |
| $beforeDayId[] = ['id'=>$applyBeforeDay->id, 'number'=>$applyBeforeDay->applied_before]; | |
| } | |
| foreach ($applyBeforeDays as $applyBeforeDay) { | |
| $beforeDayNumber[] = [$applyBeforeDay->applied_before]; | |
| } | |
| //user on weekend | |
| $weekendday = array(); | |
| $userAttendanceSelfService = []; | |
| $userInfo = UserDetail::where('user_id', Auth()->user()->id)->first(); | |
| if (!empty($userInfo)) { | |
| $userAttendanceSelfService = $userInfo->attendanceRequests->where('name', 'Self Service'); | |
| } | |
| // if (Gate::check('Super Admin')) { | |
| if (!count($userAttendanceSelfService) > 0){ | |
| //dd("1"); | |
| $propertiesWithValueone = null; | |
| $propertiesWithValueZero = null; | |
| $nestedData = null; | |
| } else { | |
| $userdetails = UserDetail::where('user_id', $user->id)->select('id', 'user_id', 'primary_reporting_manager_id')->get(); | |
| foreach ($userdetails as $userdetail) { | |
| $id = $userdetail->id; | |
| $userid = $userdetail->user_id; | |
| $primary_reporting_manager_id = $userdetail->primary_reporting_manager_id; | |
| $matchingUserIds[$userid] = UserDetailUser::where('user_detail_id', $id) | |
| ->pluck('user_id') | |
| ->toArray(); | |
| if (isset($matchingUserIds[$userid])) { | |
| $matchingUserIds[$userid] = User::whereIn('id', $matchingUserIds[$userid]) | |
| ->pluck('name', 'id') | |
| ->toArray(); | |
| } | |
| } | |
| $names = array_values($matchingUserIds[$userid]); | |
| // dd($names); | |
| if (count($names) == 2) { | |
| $managerNames = '<b>' . $names[0] . '</b>/' . $names[1]; | |
| } elseif (count($names) > 2) { | |
| $limitedNames = array_slice($names, 0, 2); | |
| $managerNames = '<b>' . $limitedNames[0] . '</b>/' . $limitedNames[1] . '<b >/..</b>'; | |
| } elseif (count($names) == 1) { | |
| $managerNames = $names[0]; | |
| } else { | |
| $managerNames = ''; | |
| } | |
| $nestedData = json_encode($names); | |
| if (!empty($user->userdetail->shifts)) { | |
| $teamId = $user->userdetail->primary_team_id; | |
| $team = Team::find($teamId); | |
| if ($team->has_schedule == 1) { | |
| $shift = ScheduleDetail::where('user_id', $user->id)->latest()->first(); | |
| if ($shift) { | |
| $propertiesWithValueone = ""; | |
| $date = $shift->created_at; | |
| $details = ScheduleDetail::where('user_id', $user->id) | |
| ->whereDate('created_at', $date) | |
| ->where('is_active', 1) | |
| ->where(function ($query) { | |
| $query->where('mon', 1) | |
| ->orWhere('tue', 1) | |
| ->orWhere('wed', 1) | |
| ->orWhere('thu', 1) | |
| ->orWhere('fri', 1) | |
| ->orWhere('sat', 1) | |
| ->orWhere('sun', 1); | |
| }) | |
| ->get(); | |
| //->orderBy('created_at','DESC')->get(); | |
| $combinedValues = []; | |
| // through each schedule detail in the collection | |
| foreach ($details as $scheduleDetail) { | |
| // Loop through each property and update the combined values array | |
| foreach ($scheduleDetail->getAttributes() as $property => $value) { | |
| // If the property is not set in the combined values array, set it to the current value | |
| if (!isset($combinedValues[$property])) { | |
| $combinedValues[$property] = $value; | |
| } | |
| // If the property is set in the combined values array and the current value is 1, update it to 1 | |
| elseif ($value === 1) { | |
| $combinedValues[$property] = 1; | |
| } | |
| } | |
| } | |
| $propertiesWithValueZero = []; | |
| foreach ($combinedValues as $property => $value) { | |
| // Check if the value is 0 | |
| if ($value === 0) { | |
| $propertiesWithValueZero[] = $property; | |
| } | |
| } | |
| if($requestType=="api"){ | |
| return json_encode([ | |
| "weekends" =>$propertiesWithValueZero, | |
| ]); | |
| } | |
| } | |
| else{ | |
| $propertiesWithValueZero[] = 0; | |
| $propertiesWithValueone[] = 0; | |
| } | |
| } else { | |
| $propertiesWithValueZero = ""; | |
| $weekend = $user->userdetail->shifts[0]->weekend; | |
| $weekendAttributes = [ | |
| 'mon' => $weekend->monday, | |
| 'tue' => $weekend->tuesday, | |
| 'wed' => $weekend->wednesday, | |
| 'thu' => $weekend->thursday, | |
| 'fri' => $weekend->friday, | |
| 'sat' => $weekend->saturday, | |
| 'sun' => $weekend->sunday, | |
| ]; | |
| $propertiesWithValueone = []; | |
| foreach ($weekendAttributes as $property => $value) { | |
| if ($value === 1) { | |
| $propertiesWithValueone[] = $property; | |
| } | |
| } | |
| if($requestType=="api"){ | |
| return json_encode([ | |
| "weekends" =>$propertiesWithValueone, | |
| ]); | |
| } | |
| } | |
| // if (!empty($weekend) && isset($weekend)) | |
| // { | |
| // if ($weekend['monday'] == 1) { | |
| // array_push($weekendday, '1'); | |
| // } | |
| // if ($weekend['tuesday'] == 1) { | |
| // array_push($weekendday, '2'); | |
| // } | |
| // if ($weekend['wednesday'] == 1) { | |
| // array_push($weekendday, '3'); | |
| // } | |
| // if ($weekend['thursday'] == 1) { | |
| // array_push($weekendday, '4'); | |
| // } | |
| // if ($weekend['friday'] == 1) { | |
| // array_push($weekendday, '5'); | |
| // } | |
| // if ($weekend['saturday'] == 1) { | |
| // array_push($weekendday, '6'); | |
| // } | |
| // if ($weekend['sunday'] == 1) { | |
| // array_push($weekendday, '0'); | |
| // } | |
| // } | |
| } | |
| } | |
| $holidayIds = HolidayHelper::getholidayList($user->id); | |
| //dd($holidayIds); | |
| $currentYear = Carbon::now(config('settings.time_zone'))->format('Y'); | |
| //get holdays for current year | |
| $getHolidays = Holiday::whereYear('date', $currentYear)->whereIn('id', $holidayIds)->get(); | |
| $holidays = []; | |
| foreach ($getHolidays as $holiday) { | |
| $holidays[] = $holiday->date; | |
| } | |
| //dd($holidays); | |
| //leave balance | |
| $leaveBalances = []; | |
| foreach ($leaves as $leave) { | |
| if($leave->status === '0'){ | |
| $leaveEntitlementQuery = array( | |
| 'user_id' => Auth::user()->id, | |
| 'year' => Carbon::now(config('settings.time_zone'))->year, | |
| 'leave_id' => $leave->id | |
| ); | |
| $leaveEntitlementArr = LeaveEntitlement::where($leaveEntitlementQuery)->get(); | |
| $leaveBalance = null; | |
| foreach ($leaveEntitlementArr as $leaveEntitlement) { | |
| $leaveBalance = $leaveEntitlement->leave_balance; | |
| } | |
| if ($leaveBalance == null) { | |
| $leaveBalance = 0; | |
| } | |
| $leaveBalances[] = array( | |
| 'id' => $leave->id, | |
| 'name' => $leave->name, | |
| 'abbr' => $leave->abbr, | |
| 'leave_balance' => $leaveBalance, | |
| 'n_days' => $leave->n_days, | |
| 'leave_allocation_type' => $leave->leave_allocation_type | |
| ); | |
| //dd($leaveBalances); | |
| } | |
| } | |
| // For returning attendance marking for home controller | |
| $val = AttendanceHelper::getAttendanceMarkValue(); | |
| $valTeam = AttendanceHelper::getAttendanceTeam($request); | |
| $valUser = AttendanceHelper::getAttendanceUser($request); | |
| return view('leave.applyLeaveForm', compact('leaves', 'nestedData', 'propertiesWithValueZero', 'propertiesWithValueone', 'title', 'holidays', 'weekendday', 'leaveBalances', 'val', 'valTeam', 'valUser','beforeDayNumber','beforeDayId')); | |
| } | |
| /** | |
| * Store a newly created resource in storage. | |
| * | |
| * @param \Illuminate\Http\Request $request | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function store(Request $request) | |
| { | |
| $requestType = $request->requestType; | |
| // $from_date = Carbon::parse($request->from_date ,'UTC'); | |
| // $f = $from_date->format('Y-m-d'); | |
| // $to_date = Carbon::parse($request->to_date ,'UTC'); | |
| // $t = $to_date->format('Y-m-d'); | |
| // $request->request->add(['f' =>$f ]); | |
| // $request->request->add(['t' =>$t ]); | |
| $today = Carbon::now(config('settings.time_zone')); | |
| $to_date = ''; | |
| $from_date = ''; | |
| if ($request->from_date) { | |
| $from_date = Carbon::parse(Carbon::createFromFormat(config('settings.php_date_format'), $request->from_date))->format('Y-m-d'); | |
| } | |
| if ($request->from_date) { | |
| $to_date = Carbon::parse(Carbon::createFromFormat(config('settings.php_date_format'), $request->to_date))->format('Y-m-d'); | |
| } | |
| $t = $to_date; | |
| $f = $from_date; | |
| $request->request->add(['f' => $f]); | |
| $request->request->add(['t' => $t]); | |
| if ($request->leavetype == 'full_day') { | |
| $validator = Validator::make($request->all(), [ | |
| 'reason' => 'required', | |
| 'spoken_to' => 'required', | |
| 'f' => 'required|unique:apply_leaves,from_date,' . $f . ',id,user_id,' . Auth::user()->id, | |
| 't' => 'required|unique:apply_leaves,to_date,' . $t . ',id,user_id,' . Auth::user()->id, | |
| ]); | |
| } else { | |
| $validator = Validator::make($request->all(), [ | |
| 'reason' => 'required', | |
| 'spoken_to' => 'required', | |
| // 'f' => 'required|unique:apply_leaves,from_date,' . $f . ',id,user_id,' . Auth::user()->id, | |
| 'f' => 'required|unique:apply_leaves,half_day_type,' . $f . ',id,user_id,' . Auth::user()->id, | |
| 'halfDayType' => 'required' | |
| ]); | |
| } | |
| if ($validator->fails()) { | |
| if ($validator->messages()->has('reason')) { | |
| if($requestType=="api"){ | |
| return json_encode(["warning" => "Reason field is required"]); | |
| } | |
| Session::flash('warning', 'Reason field is required'); | |
| } else if ($validator->messages()->has('halfDayType')) { | |
| if($requestType=="api"){ | |
| return json_encode(["warning" => "Duration field is required"]); | |
| } | |
| Session::flash('warning', 'Duration field is required'); | |
| } else { | |
| if($requestType=="api"){ | |
| return json_encode(["warning" => "Already Taken Leave On This Date!"]); | |
| } | |
| Session::flash('warning', 'Already Taken Leave On This Date!'); | |
| } | |
| return redirect()->route('apply-leave.create')->withErrors($validator)->with('hideModal', true); | |
| } else { | |
| $leaveBalance = LeaveHelper::getEntitlementLeave(Auth::user()->id, $request->leave_id); | |
| if ($request->leavetype == 'full_day') { | |
| if ($leaveBalance < $request->leave_length && LeaveHelper::checkTotalLeaves($request->leave_id)) { | |
| if($requestType=="api"){ | |
| return json_encode(["warning" => " Not Enough Leave Balance!","leave_bal" => $leaveBalance]); | |
| } | |
| Session::flash('warning', ' Not Enough Leave Balance!'); | |
| return redirect()->route('apply-leave.create')->with('hideModal', true); | |
| } | |
| } | |
| else{ | |
| if ($leaveBalance < 0.5 && LeaveHelper::checkTotalLeaves($request->leave_id)) { | |
| if($requestType=="api"){ | |
| return json_encode(["warning" => " Not Enough Leave Balance!","leave_bal" => $leaveBalance]); | |
| } | |
| Session::flash('warning', ' Not Enough Leave Balance!'); | |
| return redirect()->route('apply-leave.create')->with('hideModal', true); | |
| } | |
| } | |
| $leave = new ApplyLeave(); | |
| //$leave->from_date = Carbon::parse($request->from_date ,'UTC'); | |
| //$leave->from_date = $leave->from_date->format('Y-m-d'); | |
| $leave->from_date = $from_date; | |
| if ($request->leavetype == 'full_day') { | |
| //$leave->to_date = Carbon::parse($request->to_date ,'UTC'); | |
| //$leave->to_date = $leave->to_date->format('Y-m-d'); | |
| $leave->to_date = $to_date; | |
| } else { | |
| $leave->to_date = $leave->from_date; | |
| } | |
| $leave->leave_length = $request->leave_length; | |
| $leave->leave_type = $request->leavetype; | |
| $leave->half_day_type = $request->halfDayType; | |
| if ($leave->leave_type == "half_day") { | |
| $leave->leave_length = 0.5; | |
| $leave_type = "Half Day"; | |
| } | |
| if ($leave->leave_type == "full_day") { | |
| $leave->half_day_type = null; | |
| $leave_type = "Full Day"; | |
| } | |
| $leave->reason = $request->reason; | |
| $leave->spoken_to = $request->spoken_to; | |
| $leave->is_process = 'false'; | |
| $leave->status = 'Pending'; | |
| $leave->user_id = Auth::user()->id; | |
| $leave->leave_id = $request->leave_id; | |
| $leave->save(); | |
| LeaveHelper::updateLeaveBalance($leave->leave_id, $leave->leave_length); | |
| $leaveLog = new LeaveLogHelper; | |
| $leaveLog->updateLeaveLog($leave->leave_length,"SUBTRACTED",$leave->user_id,$leave->leave_id, $leave->reason,null); | |
| //get user team | |
| $user = Auth::user(); | |
| // $userAttendanceTeam =$user->userdetail->teams; | |
| // foreach($userAttendanceTeam as $userTeam) | |
| // { | |
| // $userInTeam = $userTeam->team; | |
| // } | |
| //primary team name | |
| $userInTeam = $user->userdetail->primaryTeamName->team; | |
| $user = User::find(Auth::user()->id); | |
| //title and message for app notifications | |
| $title = "Leave Request"; | |
| $message = $leave_type . " requested by " . $user->name . ' ' . $user->lastName; | |
| $actionUrl = 'leave-report.index'; | |
| //mail notifications | |
| $subjectLine = 'AMS Notification : ' . $leave_type . " Leave requested by " . $user->name . ' ' . $user->lastName . ' for ' . $request->from_date; | |
| $mailArr = null; | |
| if ($leave->leave_type == "full_day") { | |
| $mailArr = [ | |
| $subjectLine, | |
| $userInTeam, | |
| $user->name . ' ' . $user->lastName, | |
| $leave_type, | |
| $request->from_date, | |
| $request->to_date, | |
| $title, | |
| $message, | |
| $actionUrl | |
| ]; | |
| } else { | |
| $mailArr = [ | |
| $subjectLine, | |
| $userInTeam, | |
| $user->name . ' ' . $user->lastName, | |
| $leave_type, | |
| ucwords(str_replace("_", " ", $leave->half_day_type)), | |
| $request->from_date, | |
| $title, | |
| $message, | |
| $actionUrl | |
| ]; | |
| } | |
| //primary reporting manager | |
| $primary_reporting_manager_id = $user->userdetail->primary_reporting_manager_id; | |
| //secondary reporting manager | |
| $secondaryManagers = $user->userdetail->secondaryManager; | |
| if ($primary_reporting_manager_id != 0) { | |
| //primary reporting manager | |
| $primary_reporting_manager = User::find($primary_reporting_manager_id); | |
| //check if user is exists | |
| if(!empty($primary_reporting_manager)){ | |
| //mail notification | |
| $primary_reporting_manager->notify(new ApplyLeaveNotifications($mailArr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$primary_reporting_manager->id); | |
| } | |
| } | |
| //secondary reporting managers | |
| if (count($user->userdetail->secondaryManager) > 0) { | |
| foreach ($user->userdetail->secondaryManager as $secondaryManager) { | |
| if ($primary_reporting_manager_id != $secondaryManager->id){ | |
| //mail notification | |
| $secondaryManager->notify(new ApplyLeaveNotifications($mailArr)); | |
| $firebaseObject = new FirebaseCloudMessaging(); | |
| $firebaseObject->sendFirebaseNotification($title,$message,$secondaryManager->id); | |
| } | |
| } | |
| } | |
| if($requestType=="api"){ | |
| return json_encode(["success" => "Leave Submit Successfully!"]); | |
| } | |
| Session::flash('success', 'Leave Submit Successfully!'); | |
| return redirect()->back(); | |
| } | |
| } | |
| public function storeApi(Request $request) | |
| { | |
| //Session::flash('warning', 'Reason field is required'); | |
| // $from_date = Carbon::parse($request->from_date ,'UTC'); | |
| // $f = $from_date->format('Y-m-d'); | |
| // $to_date = Carbon::parse($request->to_date ,'UTC'); | |
| // $t = $to_date->format('Y-m-d'); | |
| // $request->request->add(['f' =>$f ]); | |
| // $request->request->add(['t' =>$t ]); | |
| $today = Carbon::now(config('settings.time_zone')); | |
| $to_date= ''; $from_date=''; | |
| if($request->from_date){ | |
| $from_date = Carbon::parse( Carbon::createFromFormat( config('settings.php_date_format') , $request->from_date ) )->format('Y-m-d'); | |
| } | |
| if($request->to_date){ | |
| $to_date = Carbon::parse( Carbon::createFromFormat( config('settings.php_date_format') , $request->to_date ) )->format('Y-m-d'); | |
| } | |
| $t = $to_date; $f = $from_date; | |
| $request->request->add(['f' =>$f ]); | |
| $request->request->add(['t' =>$t ]); | |
| if($request->leavetype == 'full_day'){ | |
| $validator = Validator::make($request->all(), [ | |
| 'reason' => 'required', | |
| 'f' => 'required|unique:apply_leaves,from_date,' . $f . ',id,user_id,' . Auth::user()->id, | |
| 't' => 'required|unique:apply_leaves,to_date,' . $t . ',id,user_id,' . Auth::user()->id, | |
| ]); | |
| }else{ | |
| $validator = Validator::make($request->all(), [ | |
| 'reason' => 'required', | |
| 'f' => 'required|unique:apply_leaves,from_date,' . $f . ',id,user_id,' . Auth::user()->id, | |
| 'halfDayType' => 'required' ]); | |
| } | |
| if ($validator->fails()) | |
| { | |
| $status = ""; | |
| $warning = ""; | |
| if ($validator->messages()->has('reason')) | |
| { | |
| $status = "200"; | |
| $warning = "Reason field is required"; | |
| }else if($validator->messages()->has('halfDayType')){ | |
| $status = "200"; | |
| $warning = "Duration field is required"; | |
| }else{ | |
| $status = "200"; | |
| $warning = "Already Taken Leave On This Date!"; | |
| } | |
| return json_encode([ | |
| "status" => $status, | |
| "message" => $warning | |
| ]); | |
| } | |
| else | |
| { | |
| $leaveBalance= LeaveHelper::getEntitlementLeave(Auth::user()->id, $request->leave_id); | |
| if($leaveBalance < $request->leave_length && LeaveHelper::checkTotalLeaves($request->leave_id)){ | |
| return json_encode([ | |
| "status" => "200", | |
| "message" => "Not Enough Leave Balance" | |
| ]); | |
| } | |
| $leave = new ApplyLeave(); | |
| //$leave->from_date = Carbon::parse($request->from_date ,'UTC'); | |
| //$leave->from_date = $leave->from_date->format('Y-m-d'); | |
| $leave->from_date = $from_date; | |
| if($request->leavetype == 'full_day'){ | |
| //$leave->to_date = Carbon::parse($request->to_date ,'UTC'); | |
| //$leave->to_date = $leave->to_date->format('Y-m-d'); | |
| $leave->to_date = $to_date; | |
| }else{ | |
| $leave->to_date = $leave->from_date; | |
| } | |
| $leave->leave_length = $request->leave_length; | |
| $leave->leave_type = $request->leavetype; | |
| $leave->half_day_type = $request->halfDayType; | |
| if($leave->leave_type == "half_day") | |
| { | |
| $leave->leave_length = 0.5; | |
| $leave_type = "Half Day"; | |
| } | |
| if($leave->leave_type == "full_day") | |
| { | |
| $leave->half_day_type = null; | |
| $leave_type = "Full Day"; | |
| } | |
| $leave->reason = $request->reason; | |
| $leave->is_process = 'false'; | |
| $leave->status = 'Pending'; | |
| $leave->user_id = Auth::user()->id; | |
| $leave->leave_id = $request->leave_id; | |
| $leave->save(); | |
| LeaveHelper::updateLeaveBalance($leave->leave_id ,$leave->leave_length); | |
| //get user team | |
| $user = Auth::user(); | |
| // $userAttendanceTeam =$user->userdetail->teams; | |
| // foreach($userAttendanceTeam as $userTeam) | |
| // { | |
| // $userInTeam = $userTeam->team; | |
| // } | |
| //primary team name | |
| $userInTeam = $user->userdetail->primaryTeamName->team; | |
| $user = User::find(Auth::user()->id); | |
| //title and message for app notifications | |
| $title = "Leave Request"; | |
| $message = $leave_type." requested by ".$user->name . ' ' . $user->lastName; | |
| $actionUrl = 'leave-report.index'; | |
| //mail notifications | |
| $subjectLine = 'AMS Notification : '.$leave_type." Leave requested by ".$user->name . ' ' . $user->lastName.' for '.$request->from_date; | |
| $mailArr = null; | |
| if($leave->leave_type == "full_day") | |
| { | |
| $mailArr = [$subjectLine, $userInTeam, $user->name.' '. $user->lastName, | |
| $leave_type ,$request->from_date, $request->to_date,$title, | |
| $message,$actionUrl]; | |
| }else{ | |
| $mailArr = [$subjectLine, $userInTeam, $user->name.' '. $user->lastName, | |
| $leave_type ,ucwords(str_replace("_", " ", $leave->half_day_type)), | |
| $request->from_date,$title, | |
| $message,$actionUrl]; | |
| } | |
| // | |
| //primary reporting manager | |
| $primary_reporting_manager_id = $user->userdetail->primary_reporting_manager_id; | |
| //secondary reporting manager | |
| $secondaryManagers = $user->userdetail->secondaryManager; | |
| if ($primary_reporting_manager_id != 0) { | |
| //primary reporting manager | |
| $primary_reporting_manager = User::find($primary_reporting_manager_id); | |
| //check if user is exists | |
| if(!empty($primary_reporting_manager)){ | |
| //mail notification | |
| // $primary_reporting_manager->notify(new ApplyLeaveNotifications($mailArr)); | |
| } | |
| } | |
| //secondary reporting managers | |
| if (count($user->userdetail->secondaryManager) > 0) { | |
| foreach ($user->userdetail->secondaryManager as $secondaryManager) { | |
| if ($primary_reporting_manager_id != $secondaryManager->id){ | |
| //mail notification | |
| // $secondaryManager->notify(new ApplyLeaveNotifications($mailArr)); | |
| } | |
| } | |
| } | |
| return json_encode([ | |
| "status" => "200", | |
| "message" => "success" | |
| ]); | |
| } | |
| } | |
| /** | |
| * Display the specified resource. | |
| * | |
| * @param int $id | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function show($id) | |
| { | |
| } | |
| /** | |
| * Show the form for editing the specified resource. | |
| * | |
| * @param int $id | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function edit($id) | |
| { | |
| // | |
| } | |
| /** | |
| * Update the specified resource in storage. | |
| * | |
| * @param \Illuminate\Http\Request $request | |
| * @param int $id | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function update(Request $request, $id) | |
| { | |
| $leaves = ApplyLeave::find($id); | |
| $leaves->is_process = 'true'; | |
| $leaves->update($request->all()); | |
| LeaveHelper::updateLeaveBalanceOnCancelling($leaves->status, $leaves->leave_id, $leaves->leave_length); | |
| $leaveLog = new LeaveLogHelper; | |
| $leaveLog->updateLeaveLog($leaves->leave_length,"ADDED",$leaves->user_id,$leaves->leave_id,"Cancelled Leave",null); | |
| if($requestType=="api"){ | |
| return json_encode(["warning" => "Leave Cancelled Successfully!"]); | |
| } | |
| Session::flash('warning', 'Leave Cancelled Successfully!'); | |
| return redirect()->route('apply-leave.index')->withErrors($this); | |
| } | |
| /** | |
| * Remove the specified resource from storage. | |
| * | |
| * @param int $id | |
| * @return \Illuminate\Http\Response | |
| */ | |
| public function destroy($id) | |
| { | |
| $leave = ApplyLeave::find($id); | |
| $leave->delete(); | |
| return redirect()->route('apply-leave.index')->with('success', 'Leave Deleted Successfully'); | |
| } | |
| public function getLeaveCount(Request $request) | |
| { | |
| if (isset($request->user_id)) { | |
| $leaveBalance = LeaveHelper::getEntitlementLeave($request->user_id, $request->leaveId); | |
| } else { | |
| $leaveBalance = LeaveHelper::getEntitlementLeave(Auth::user()->id, $request->leaveId); | |
| } | |
| //get leave | |
| $leave = Leave::find($request->leaveId); | |
| return response()->json([ | |
| 'leaveBalance' => $leaveBalance, | |
| 'totalLeaves' => $leave->n_days, | |
| 'leave_allocation_type' => $leave->leave_allocation_type | |
| ]); | |
| } | |
| // public function checkLeaveexists(Request $request) | |
| // { | |
| // $fromdate = Carbon::parse(Carbon::createFromFormat(config('settings.php_date_format'), $request->from_date))->format('Y-m-d'); | |
| // $todate = Carbon::parse(Carbon::createFromFormat(config('settings.php_date_format'), $request->to_date))->format('Y-m-d'); | |
| // if (isset($request->userId)) { | |
| // $userid = $request->userId; | |
| // } else { | |
| // $userid = Auth::user()->id; | |
| // } | |
| // $halfdaytype = $request->halfdaytype; | |
| // $dates = array(); | |
| // $current = strtotime($fromdate); | |
| // $date2 = strtotime($todate); | |
| // $stepVal = '+1 day'; | |
| // while ($current <= $date2) { | |
| // $dates[] = date('Y-m-d', $current); | |
| // $current = strtotime($stepVal, $current); | |
| // } | |
| // foreach ($dates as $value) { | |
| // $applyleaves = ApplyLeave::where('user_id', '=', $userid) | |
| // ->where('from_date', '<=', $value) | |
| // ->where('to_date', '>=', $value) | |
| // ->get(); | |
| // if($applyleaves != null && $applyleaves->leave_type == "half_day"){ | |
| // $dayType = $applyleaves->half_day_type; | |
| // dd($dayType); | |
| // if($dayType == $halfdaytype){ | |
| // $value = Carbon::parse($value)->format(config('settings.php_date_format')); | |
| // return response()->json([ | |
| // 'status' => '100', | |
| // 'message' => 'Already Taken Leave On ' . $dayType . ' of ' . $value | |
| // ]); | |
| // } | |
| // } | |
| // if (isset($applyleaves) && !empty($applyleaves) && $applyleaves->leave_type == "full_day") { | |
| // $value = Carbon::parse($value)->format(config('settings.php_date_format')); | |
| // return response()->json([ | |
| // 'status' => '100', | |
| // 'message' => 'Already Taken Leave On ' . $value | |
| // ]); | |
| // } | |
| // } | |
| // return response()->json([ | |
| // 'status' => '200', | |
| // 'message' => 'success' | |
| // ]); | |
| // } | |
| public function checkLeaveexists(Request $request) | |
| { | |
| $fromdate = Carbon::parse(Carbon::createFromFormat(config('settings.php_date_format'), $request->from_date))->format('Y-m-d'); | |
| $todate = Carbon::parse(Carbon::createFromFormat(config('settings.php_date_format'), $request->to_date))->format('Y-m-d'); | |
| if (isset($request->userId)) { | |
| $userid = $request->userId; | |
| } else { | |
| $userid = Auth::user()->id; | |
| } | |
| $halfdaytype = $request->halfdaytype; | |
| $dates = array(); | |
| $current = strtotime($fromdate); | |
| $date2 = strtotime($todate); | |
| $stepVal = '+1 day'; | |
| while ($current <= $date2) { | |
| $dates[] = date('Y-m-d', $current); | |
| $current = strtotime($stepVal, $current); | |
| } | |
| foreach ($dates as $value) { | |
| $applyleaves = ApplyLeave::where('user_id', '=', $userid) | |
| ->where('from_date', '<=', $value) | |
| ->where('to_date', '>=', $value) | |
| ->get(); | |
| foreach ($applyleaves as $applyleave) { | |
| if ($applyleave->leave_type == "half_day") { | |
| $dayType = $applyleave->half_day_type; | |
| if ($dayType == $halfdaytype) { | |
| $value = Carbon::parse($value)->format(config('settings.php_date_format')); | |
| return response()->json([ | |
| 'status' => '100', | |
| 'message' => 'Already Taken Leave On ' . $dayType . ' of ' . $value | |
| ]); | |
| } | |
| } | |
| if ($applyleave->leave_type == "full_day") { | |
| $value = Carbon::parse($value)->format(config('settings.php_date_format')); | |
| return response()->json([ | |
| 'status' => '100', | |
| 'message' => 'Already Taken Leave On ' . $value | |
| ]); | |
| } | |
| } | |
| } | |
| return response()->json([ | |
| 'status' => '200', | |
| 'message' => 'success' | |
| ]); | |
| } | |
| } |