File: /var/www/html/dev-hrms/app/Http/Controllers/LeaveManagementController.php
<?php
namespace App\Http\Controllers;
use App\Models\LeaveManagement;
use App\Models\EmployeeProfile;
use App\Models\LeaveTypes;
use App\Models\Leave;
use App\Models\Admin;
// use App\Models\Approval;
use App\Models\LeaveApproval;
use App\Models\Profile;
use App\Models\EmployeeGeneralDetail;
use App\Models\EmployeePayMatrix;
use App\Models\EmployeeLeave;
use App\Models\EmployeeEarnedCommutedLeave;
use App\Models\LeaveTravelConcession;
use DB;
use App\Library\UserLib;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
use Illuminate\Http\Request;
class LeaveManagementController extends Controller
{
protected $userLib;
protected $UserSessionId;
public function __construct(UserLib $userLib)
{
$this->userLib = $userLib;
}
### New Application
public function createLeave(Request $request)
{
$LeaveId = $this->userLib->useridGenrator();
$CreatedDate = date('Y-m-d H:i:s',time());
$EmployeeId = $request->input('EmployeeId');
$EmployeeCode = $request->input('EmployeeCode');
$employeeDepartment = $request->input('employeeDepartment');
$LeaveType = $request->input('LeaveType');
$leaveStartDate = $request->input('leaveStartDate');
$leaveEndDate = $request->input('leaveEndDate');
$Remarks = $request->input('Remarks');
$UserName = $request->input('UserName');
$Authority = $request->input('Authority');
$employeeDesignation = $request->input('employeeDesignation');
$EmployeeName = $request->input('EmployeeName');
$LeaveDay = $request->input('LeaveDay');
$NoOfDays = $request->input('NoOfDays');
$PromotionTransferId = $request->input('PromotionTransferId');
$PayMatrixId = $request->input('PayMatrixId');
$EmployeesAddressId = $request->input('EmployeesAddressId');
$leaveStartDate = str_replace('/', '-', $leaveStartDate);
$leaveEndDate = str_replace('/', '-', $leaveEndDate);
// Hometown LTC
$HometownLTC = $request->input('HometownLTC');
$LTCOrderNo = $request->input('LTCOrderNo');
$HomeTownBlockYear = $request->input('HomeTownBlockYear');
$LTCDescription = $request->input('LTCDescription');
if ($HometownLTC == 'Yes') {
$OrderDate = '';
if ($request->input('OrderDate')) {
$LTCOrderDate = str_replace('/', '-', $request->input('OrderDate'));
}
$OrderDate = date('Y-m-d', strtotime($LTCOrderDate));
$LTCData = array();
$LTCData['HometownTravelId'] = $this->userLib->useridGenrator();
$LTCData['TravelOrderNumber'] = $LTCOrderNo;
$LTCData['HomeTownBlockYear'] = $HomeTownBlockYear;
$LTCData['TravelDescription'] = $LTCDescription;
$LTCData['TravelOrderDate'] = $OrderDate;
$LTCData['EmployeeId'] = $EmployeeId;
$LTCData['EmployeeCode'] = $EmployeeCode;
$LTCData['LeaveStartDate'] = date('Y-m-d', strtotime($leaveStartDate));
$LTCData['LeaveEndDate'] = date('Y-m-d', strtotime($leaveEndDate));
$LTCData['NoOfDays'] = $NoOfDays;
$LTCData['TravelOrderFilePath'] = null;
$LTCData['Created_by'] = session('UserId');
$LTCData['Created_at'] = date('Y-m-d H:i:s', time());
$LTCData['Updated_by'] = session('UserId');
$LTCData['Updated_at'] = date('Y-m-d H:i:s', time());
$LTCData['IsDeleted'] = 0;
$LTCData['Status'] = 1;
$LeaveTravelConcession = LeaveTravelConcession::insert($LTCData);
}
$data = array();
$data['LeaveId'] = $LeaveId;
$data['ApplicationNo'] = "LEAVE-" . time() . '-' . rand();
$data['EmployeeId'] = $EmployeeId;
$data['EmployeeCode'] = $EmployeeCode;
$data['EmployeeName'] = $EmployeeName;
$data['LeaveTypeId'] = $LeaveType;
$data['StartDate'] = date('Y-m-d', strtotime($leaveStartDate));
$data['EndDate'] = date('Y-m-d', strtotime($leaveEndDate));
$data['Description'] = $Remarks;
$data['LeaveName'] = $LeaveDay;
if($LeaveType == 'XCRCWT2323SF6242GS611')
{
$data['AvailedEOL'] = $NoOfDays;
}
$data['TotalLeave'] = $NoOfDays;
$data['Status'] = '1';
$data['IsDeleted'] = '0';
$data['LeaveStatus'] = '0';
$data['ApprovalStatus'] = '0';
$data['Created_at'] = $CreatedDate;
$data['Created_by'] = session('UserId');
// $data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = session('UserId');
$data['UserName'] = $UserName;
$data['AssignTo'] = $Authority;
$data['PromotionTransferId'] = $PromotionTransferId;
$data['PayMatrixId'] = $PayMatrixId;
$data['EmployeesAddressId'] = $EmployeesAddressId;
$LastId = Leave::insertGetId($data);
$GetLeaveDetail = Leave::select('*')
->where('id', $LastId)
->get();
if($GetLeaveDetail->count() > 0)
{
foreach($GetLeaveDetail as $LValue)
{
$Authority = $LValue->AssignTo;
}
}
$AuthorityName = explode(",", $Authority);
for ($i = 0; $i < count($AuthorityName); $i++) {
$SelectedUserId = $AuthorityName[$i];
$data = array();
$data['ApprovalId'] = $this->userLib->useridGenrator();
$data['LeaveId'] = $LeaveId;
$data['ApprovalBy'] = $SelectedUserId;
$data['ApprovalStatus'] = '0';
$data['Created_at'] = date('Y-m-d H:i:s',time());
$data['Created_by'] = session('UserId');
$InsertApprovalData = LeaveApproval::insert($data);
}
if ($InsertApprovalData) {
return response()->json('success');
} else {
return response()->json('failed');
}
}
public function editApplication(Request $request, $LeaveId='')
{
$AllEmployee = EmployeeProfile::select('tbl_employees.*', 'tbl_department.DepartmentName as DepartmentName', 'tbl_designation.DesignationName as DesignationName')
->leftJoin('tbl_department', 'tbl_employees.DepartmentId', '=', 'tbl_department.DepartmentId')
->leftJoin('tbl_designation', 'tbl_employees.DesignationId', '=', 'tbl_designation.DesignationId')
->where('tbl_employees.IsDeleted', '=', '0')
->orderBy('tbl_employees.id', 'desc')
->get();
$LeaveTypes = LeaveTypes::select('*')
->where('IsDeleted', '=', '0')
->where('Status', '=', '1')
->orderBy('LeaveTypeName', 'asc')
->get();
$LeaveDetails = Leave::select('tbl_leave.*','tbl_leave_type.LeaveTypeName')
->leftJoin('tbl_leave_type', 'tbl_leave.LeaveTypeId', '=', 'tbl_leave_type.LeaveTypeId')
->where('tbl_leave.IsDeleted', '=', '0')
->where('tbl_leave.Status', '=', '1')
->where('tbl_leave.LeaveId', $LeaveId)
->orderBy('tbl_leave.Created_at', 'desc')
->get();
if($LeaveDetails->count() > 0)
{
$LeaveDetail = $LeaveDetails->first();
}
$ApprovalDetails = LeaveApproval::select('tbl_leave_approval.*','tbl_admin.ProfileId')
->leftJoin('tbl_admin', 'tbl_admin.UserId', '=', 'tbl_leave_approval.ApprovalBy')
->where('tbl_leave_approval.ApprovalStatus', '=', '0')
->where('tbl_leave_approval.LeaveId', $LeaveId)
->get();
if($ApprovalDetails->count() > 0)
{
$ApprovalDetail = $ApprovalDetails->first();
}
return view('admin.LeaveManagement.edit-application', ['EmployeesData' => $AllEmployee, 'LeaveTypes' => $LeaveTypes, 'LeaveDetails'=>$LeaveDetail,'ApprovalDetail'=>$ApprovalDetail]);
}
#### Reform Application
public function reformApplication(Request $request, $LeaveId='')
{
$AllEmployee = EmployeeProfile::select('tbl_employees.*', 'tbl_department.DepartmentName as DepartmentName', 'tbl_designation.DesignationName as DesignationName')
->leftJoin('tbl_department', 'tbl_employees.DepartmentId', '=', 'tbl_department.DepartmentId')
->leftJoin('tbl_designation', 'tbl_employees.DesignationId', '=', 'tbl_designation.DesignationId')
->where('tbl_employees.IsDeleted', '=', '0')
->orderBy('tbl_employees.id', 'desc')
->get();
$LeaveTypes = LeaveTypes::select('*')
->where('IsDeleted', '=', '0')
->where('Status', '=', '1')
->orderBy('LeaveTypeName', 'asc')
->get();
$LeaveDetails = Leave::select('tbl_leave.*','tbl_leave_type.LeaveTypeName')
->leftJoin('tbl_leave_type', 'tbl_leave.LeaveTypeId', '=', 'tbl_leave_type.LeaveTypeId')
->where('tbl_leave.IsDeleted', '=', '0')
->where('tbl_leave.Status', '=', '1')
->where('tbl_leave.LeaveId', $LeaveId)
->orderBy('tbl_leave.Created_at', 'desc')
->get();
if($LeaveDetails->count() > 0)
{
$LeaveDetail = $LeaveDetails->first();
}
$ApprovalDetails = LeaveApproval::select('tbl_leave_approval.*','tbl_admin.ProfileId')
->leftJoin('tbl_admin', 'tbl_admin.UserId', '=', 'tbl_leave_approval.ApprovalBy')
//->where('tbl_leave_approval.ApprovalStatus', '=', '0')
->where('tbl_leave_approval.LeaveId', $LeaveId)
->get();
if($ApprovalDetails->count() > 0)
{
$ApprovalDetail = $ApprovalDetails->first();
}
return view('admin.LeaveManagement.reform-application', ['EmployeesData' => $AllEmployee, 'LeaveTypes' => $LeaveTypes, 'LeaveDetails'=>$LeaveDetail,'ApprovalDetail'=>$ApprovalDetail]);
}
### Update Reform Application
public function updateReformLeave(Request $request)
{
$CreatedDate = date('Y-m-d H:i:s',time());
$LeaveId = $request->input('LeaveId');
$EmployeeId = $request->input('EmployeeId');
$EmployeeCode = $request->input('EmployeeCode');
$employeeDepartment = $request->input('employeeDepartment');
$LeaveType = $request->input('LeaveType');
$UserName = $request->input('UserName');
$Authority = $request->input('Authority');
$StartDate = $request->input('leaveStartDate');
$EndDate = $request->input('ReformDate');
$leaveStartDate = str_replace('/', '-', $StartDate);
$leaveEndDate = str_replace('/', '-', $EndDate);
$Remarks = $request->input('Remarks');
$EmployeeName = $request->input('EmployeeName');
$employeeDesignation = $request->input('employeeDesignation');
$LeaveDay = $request->input('LeaveDay');
$NoOfDays = $request->input('NoOfDays');
$data = array();
$data['EmployeeId'] = $EmployeeId;
$data['EmployeeCode'] = $EmployeeCode;
$data['EmployeeName'] = $EmployeeName;
$data['LeaveTypeId'] = $LeaveType;
$data['IsReformed'] = 'Yes'; // If Reformed Leave
$data['StartDate'] = date('Y-m-d', strtotime($leaveStartDate));
$data['ReformDate'] = date('Y-m-d', strtotime($leaveEndDate));
$data['Description'] = $Remarks;
$data['LeaveName'] = $LeaveDay;
$data['TotalLeave'] = $NoOfDays;
$data['Status'] = '1';
$data['IsDeleted'] = '0';
$data['LeaveStatus'] = '0';
$data['UserName'] = $UserName;
$data['ApprovalStatus'] = '0';
$data['Created_at'] = $CreatedDate;
$data['Created_by'] = session('UserId');
$data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = session('UserId');
$data['AssignTo'] = $Authority;
// Update Leave Application
$UpdateLeave = Leave::where('LeaveId', $LeaveId)->update($data);
// When leave application updated successfully then delete the approval authority from tbl leave approval
$DelApproval = LeaveApproval::where('LeaveId', $LeaveId)->delete();
// After the insert new leave approval in tbl approval
$AuthorityName = explode(",", $Authority);
$InsertApprovalData = '';
for ($i = 0; $i < count($AuthorityName); $i++) {
$SelectedUserId = $AuthorityName[$i];
$data = array();
$data['ApprovalId'] = $this->userLib->useridGenrator();;
$data['LeaveId'] = $LeaveId;
$data['ApprovalBy'] = $SelectedUserId;
$data['ApprovalStatus'] = '0';
$data['Created_at'] = date('Y-m-d H:i:s',time());
$data['Created_by'] = session('UserId');
$InsertApprovalData = LeaveApproval::insert($data);
}
if($InsertApprovalData){
// return response()->json('success');
}
else{
// return response()->json('failed');
}
}
### Edit Application
public function editLeave(Request $request)
{
$CreatedDate = date('Y-m-d H:i:s',time());
$LeaveId = $request->input('LeaveId');
$EmployeeId = $request->input('EmployeeId');
$EmployeeCode = $request->input('EmployeeCode');
$employeeDepartment = $request->input('employeeDepartment');
$LeaveType = $request->input('LeaveType');
$UserName = $request->input('UserName');
$Authority = $request->input('Authority');
$StartDate = $request->input('leaveStartDate');
$EndDate = $request->input('leaveEndDate');
$leaveStartDate = str_replace('/', '-', $StartDate);
$leaveEndDate = str_replace('/', '-', $EndDate);
$Remarks = $request->input('Remarks');
$EmployeeName = $request->input('EmployeeName');
$employeeDesignation = $request->input('employeeDesignation');
$LeaveDay = $request->input('LeaveDay');
$NoOfDays = $request->input('NoOfDays');
$data = array();
$data['EmployeeId'] = $EmployeeId;
$data['EmployeeCode'] = $EmployeeCode;
$data['EmployeeName'] = $EmployeeName;
$data['LeaveTypeId'] = $LeaveType;
$data['StartDate'] = date('Y-m-d', strtotime($leaveStartDate));
$data['EndDate'] = date('Y-m-d', strtotime($leaveEndDate));
$data['Description'] = $Remarks;
$data['LeaveName'] = $LeaveDay;
$data['TotalLeave'] = $NoOfDays;
$data['Status'] = '1';
$data['IsDeleted'] = '0';
$data['LeaveStatus'] = '0';
$data['UserName'] = $UserName;
$data['ApprovalStatus'] = '0';
$data['Created_at'] = $CreatedDate;
$data['Created_by'] = session('UserId');
$data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = session('UserId');
$data['AssignTo'] = $Authority;
$UpdateLeave = Leave::where('LeaveId', $LeaveId)->update($data);
$DelApproval = LeaveApproval::where('LeaveId', $LeaveId)->delete();
$AuthorityName = explode(",", $Authority);
$InsertApprovalData = '';
for ($i = 0; $i < count($AuthorityName); $i++) {
$SelectedUserId = $AuthorityName[$i];
$data = array();
$data['ApprovalId'] = $this->userLib->useridGenrator();;
$data['LeaveId'] = $LeaveId;
$data['ApprovalBy'] = $SelectedUserId;
$data['ApprovalStatus'] = '0';
$data['Created_at'] = date('Y-m-d H:i:s',time());
$data['Created_by'] = session('UserId');
$InsertApprovalData = LeaveApproval::insert($data);
}
if($InsertApprovalData){
return response()->json('success');
}
else{
return response()->json('failed');
}
}
### Delete Application
public function deleteLeave(Request $request)
{
$CreatedDate = date('Y-m-d H:i:s',time());
$LeaveId = $request->input('LeaveId');
$Leave = Leave::where('LeaveId', $LeaveId)->delete();
$Approval = LeaveApproval::where('LeaveId', $LeaveId)->delete();
if ($Leave || $Approval) {
return response()->json('success');
} else {
return response()->json('failed');
}
}
public function newApplication()
{
// if(session('UserType') == 'Super Admin')
// {
$AllEmployee = EmployeeProfile::select('tbl_employees.*', 'tbl_department.DepartmentName as DepartmentName', 'tbl_designation.DesignationName as DesignationName')
->leftJoin('tbl_department', 'tbl_employees.DepartmentId', '=', 'tbl_department.DepartmentId')
->leftJoin('tbl_designation', 'tbl_employees.DesignationId', '=', 'tbl_designation.DesignationId')
->where('tbl_employees.IsDeleted', '=', '0')
->orderBy('tbl_employees.id', 'desc')
->get();
// }
// else
// {
// $EmployeeId = session('UserId');
// $AllEmployee = EmployeeProfile::select('tbl_employees.*', 'tbl_department.DepartmentName as DepartmentName', 'tbl_designation.DesignationName as DesignationName')
// ->leftJoin('tbl_department', 'tbl_employees.DepartmentId', '=', 'tbl_department.DepartmentId')
// ->leftJoin('tbl_designation', 'tbl_employees.DesignationId', '=', 'tbl_designation.DesignationId')
// ->where('tbl_employees.UserId', $EmployeeId)
// ->where('tbl_employees.IsDeleted', '=', '0')
// ->orderBy('tbl_employees.id', 'desc')
// ->get();
// }
$LeaveTypes = LeaveTypes::select('*')
->where('IsDeleted', '=', '0')
->where('Status', '=', '1')
->orderBy('LeaveTypeName', 'asc')
->get();
return view('admin.LeaveManagement.new-application', ['EmployeesData' => $AllEmployee, 'LeaveTypes' => $LeaveTypes]);
}
public function detailsApplication(Request $request, $LeaveId='', $DisplayView = '')
{
$LeaveDetails = Leave::select('tbl_leave.*','tbl_leave_type.LeaveTypeName')
->leftJoin('tbl_leave_type', 'tbl_leave.LeaveTypeId', '=', 'tbl_leave_type.LeaveTypeId')
->where('tbl_leave.IsDeleted', '=', '0')
->where('tbl_leave.Status', '=', '1')
->where('tbl_leave.LeaveId', $LeaveId)
->orderBy('tbl_leave.Created_at', 'desc')
->get();
if($LeaveDetails->count() > 0)
{
$LeaveDetail = $LeaveDetails->first();
$LeaveTypes = LeaveTypes::select('*')
->where('IsDeleted', '=', '0')
->where('Status', '=', '1')
->where('LeaveTypeId', $LeaveDetail->LeaveTypeId)
->orderBy('LeaveTypeName', 'asc')
->get();
if($LeaveTypes->count() > 0)
{
$LeaveTypeDetail = $LeaveTypes->first();
$LeaveDetail->LeaveTypeName = $LeaveTypeDetail->LeaveTypeName;
}
$AllEmployee = EmployeeProfile::select('tbl_employees.*', 'tbl_department.DepartmentName as DepartmentName', 'tbl_designation.DesignationName as DesignationName','tbl_name_title.NameTitle as Title','tbl_employees_address.HomeTownDeclaration as HomeAddress')
->leftJoin('tbl_department', 'tbl_employees.DepartmentId', '=', 'tbl_department.DepartmentId')
->leftJoin('tbl_designation', 'tbl_employees.DesignationId', '=', 'tbl_designation.DesignationId')
->leftJoin('tbl_name_title', 'tbl_name_title.NameTitleId', '=', 'tbl_employees.NameTitleId')
->leftJoin('tbl_employees_address', 'tbl_employees_address.EmployeeId', '=', 'tbl_employees.EmployeeId')
->where('tbl_employees.IsDeleted', '=', '0')
->where('tbl_employees.EmployeeId', $LeaveDetail->EmployeeId)
->orderBy('tbl_employees.id', 'desc')
->get();
if($AllEmployee->count() > 0)
{
$AllEmployeeDetails = $AllEmployee->first();
$LeaveDetail->EmployeeName = $AllEmployeeDetails->EmployeeName;
$LeaveDetail->DepartmentName = $AllEmployeeDetails->DepartmentName;
$LeaveDetail->DesignationName = $AllEmployeeDetails->DesignationName;
$LeaveDetail->Title = $AllEmployeeDetails->Title;
$LeaveDetail->HomeAddress = $AllEmployeeDetails->HomeAddress;
}
$EmployeeGeneralDetail = EmployeeGeneralDetail::select('tbl_employee_general_detail.*', 'tbl_gender.GenderName as Gender',)
->leftJoin('tbl_admin', 'tbl_employee_general_detail.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_gender', 'tbl_employee_general_detail.GenderId', '=', 'tbl_gender.GenderId')
->where('tbl_employee_general_detail.EmployeeId', $LeaveDetail->EmployeeId)
->get();
if($EmployeeGeneralDetail->count() > 0)
{
$EmployeeGeneralDetails = $EmployeeGeneralDetail->first();
$LeaveDetail->Gender = $EmployeeGeneralDetails->Gender;
$LeaveDetail->EmployeeSignPath = $EmployeeGeneralDetails->EmployeeSignPath;
}
$EmployeePayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*','tbl_payband.PayBandName as PayBand', 'tbl_gradepay.GradePayName as GradePay')
->leftJoin('tbl_payband', 'tbl_employees_paymatrix.PayBandId', '=', 'tbl_payband.PayBandId')
->leftJoin('tbl_gradepay', 'tbl_employees_paymatrix.GradePayId', '=', 'tbl_gradepay.GradePayId')
->where('tbl_employees_paymatrix.EmployeeId', $LeaveDetail->EmployeeId)
->where('tbl_employees_paymatrix.IsDeleted', '0')
// ->orderBy('tbl_employees_paymatrix.id', 'DESC')
->get();
if($EmployeePayMatrix->count() > 0)
{
$EmployeePayMatrixs = $EmployeePayMatrix->first();
$LeaveDetail->PayBand = $EmployeePayMatrixs->PayBand;
$LeaveDetail->GradePay = $EmployeePayMatrixs->GradePay;
$LeaveDetail->PayLevelAmount = $EmployeePayMatrixs->PayLevelAmount;
}
}
$NumberOfLeaveId = 0;
$NumberOfApprovalStatus = 0;
$PreviousLeaveTypeName = 0;
$PreviousLeaveStartDate = 0;
$PreviousLeaveEndDate = 0;
if($LeaveDetails->count() > 0)
{
foreach($LeaveDetails as $key => $Value) {
$LeaveId = $Value->LeaveId;
$previousLeaveDetail = Leave::select('tbl_leave.*','tbl_leave_type.LeaveTypeName')
->leftJoin('tbl_leave_type', 'tbl_leave_type.LeaveTypeId', '=', 'tbl_leave.LeaveTypeId')
->where('tbl_leave.id','<', $Value->id)
->get();
$previousLeave = $previousLeaveDetail->first();
$PreviousLeaveTypeName = isset($previousLeave->LeaveTypeName) ? $previousLeave->LeaveTypeName : '';
$Value->PreviousLeaveTypeName = $PreviousLeaveTypeName;
$PreviousLeaveStartDate = isset($previousLeave->StartDate) ? $previousLeave->StartDate : '';
$Value->PreviousLeaveStartDate = $PreviousLeaveStartDate;
$PreviousLeaveEndDate = isset($previousLeave->EndDate) ? $previousLeave->EndDate : '';
$Value->PreviousLeaveEndDate = $PreviousLeaveEndDate;
$getTotalSameLeaveId = LeaveApproval::where('LeaveId',$LeaveId)->get();
$NumberOfLeaveId = $getTotalSameLeaveId->count();
$getTotalForward = LeaveApproval::where('LeaveId',"$LeaveId")->where('ApprovalStatus', '=', 3)->get();
$NumberOfForward = $getTotalForward->count();
$getTotalApprovals = LeaveApproval::where('LeaveId',"$LeaveId")->where('ApprovalStatus', '=', 1)->get();
$NumberOfApprovalStatus = $getTotalApprovals->count();
$TotalApproval = $NumberOfApprovalStatus + $NumberOfForward;
$Value->NumberOfLeaveId = $NumberOfLeaveId;
$Value->NumberOfApprovalStatus = $TotalApproval;
}
}
// echo "<pre>";
// print_r($LeaveDetails);exit;
if($DisplayView)
{
return view('admin.LeaveManagement.details-application-order', ['EmployeesData' => $AllEmployee, 'LeaveTypes' => $LeaveTypes, 'LeaveDetails'=>$LeaveDetail,'NumberOfLeaveId' => $NumberOfLeaveId, 'NumberOfApprovalStatus'=>$NumberOfApprovalStatus,'PreviousLeaveTypeName'=>$PreviousLeaveTypeName, 'PreviousLeaveStartDate'=>$PreviousLeaveStartDate, 'PreviousLeaveEndDate'=>$PreviousLeaveEndDate]);
}
else
{
return view('admin.LeaveManagement.details-application', ['EmployeesData' => $AllEmployee, 'LeaveTypes' => $LeaveTypes, 'LeaveDetails'=>$LeaveDetail,'NumberOfLeaveId' => $NumberOfLeaveId, 'NumberOfApprovalStatus'=>$NumberOfApprovalStatus,'PreviousLeaveTypeName'=>$PreviousLeaveTypeName, 'PreviousLeaveStartDate'=>$PreviousLeaveStartDate, 'PreviousLeaveEndDate'=>$PreviousLeaveEndDate]);
}
}
### All Application
public function allApplication(Request $request, $EmployeeId='')
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$UserId = session('UserId');
$Leaves = Leave::select('tbl_leave.*','tbl_leave_type.LeaveTypeName','tbl_employees.EmployeeCode','tbl_employees.EmployeeName')
->leftJoin('tbl_leave_type', 'tbl_leave_type.LeaveTypeId', '=', 'tbl_leave.LeaveTypeId')
->leftJoin('tbl_employees', 'tbl_employees.EmployeeId', '=', 'tbl_leave.EmployeeId')
->where('tbl_leave.Status', '=', '1')
->where('tbl_leave.IsDeleted', '=', '0')
//->where('tbl_employees.UserId', $UserId)
->orderBy('tbl_leave.Created_at', 'desc')
->get();
$NumberOfLeaveId = 0;
$NumberOfForward = 0;
$NumberOfApprovalStatus = 0;
$NumberOfRejectStatus = 0;
if($Leaves->count() > 0)
{
foreach($Leaves as $key => $Value) {
$LeaveId = $Value->LeaveId;
$getTotalSameLeaveId = LeaveApproval::where('LeaveId',$LeaveId)->get();
$NumberOfLeaveId = $getTotalSameLeaveId->count();
$getTotalForward = LeaveApproval::where('LeaveId',"$LeaveId")->where('ApprovalStatus', '=', 3)->get();
$NumberOfForward = $getTotalForward->count();
$getTotalApprovals = LeaveApproval::where('LeaveId',"$LeaveId")->where('ApprovalStatus', '=', 1)->get();
$NumberOfApprovalStatus = $getTotalApprovals->count();
$TotalApproval = $NumberOfApprovalStatus + $NumberOfForward;
$getTotalReject = LeaveApproval::where('LeaveId',$LeaveId)->where('ApprovalStatus','=','2')->get();
$NumberOfRejectStatus = $getTotalReject->count();
$Value->NumberOfLeaveId = $NumberOfLeaveId;
$Value->NumberOfForward = $NumberOfForward;
$Value->NumberOfApprovalStatus = $TotalApproval;
$Value->NumberOfRejectStatus = $NumberOfRejectStatus;
}
}
$LeaveTypes = LeaveTypes::select('*')
->where('IsDeleted', '=', '0')
->where('Status', '=', '1')
->orderBy('LeaveTypeName', 'asc')
->get();
if($LeaveTypes->count() > 0)
{
foreach ($LeaveTypes as $key => $LValue)
{
$LeaveTypeId = $LValue->LeaveTypeId;
$LeaveDetails = Leave::select('tbl_leave.*')
->leftJoin('tbl_employees', 'tbl_employees.EmployeeId', '=', 'tbl_leave.EmployeeId')
->where('tbl_leave.Status', '=', '1')
->where('tbl_leave.LeaveTypeId', $LeaveTypeId)
->where('tbl_employees.UserId', $UserId)
->get();
$TotalLeaveDayCount = 0;
if($LeaveDetails->count() > 0)
{
foreach ($LeaveDetails as $key => $LeaveValue)
{
$LeaveTypeId = $LeaveValue->LeaveTypeId;
$LeaveId = $LeaveValue->LeaveId;
$TotalLeave = $LeaveValue->TotalLeave;
$TotalLeaveDayCount = $TotalLeaveDayCount + $TotalLeave;
}
}
$LValue->TotalLeaveDayCount = $TotalLeaveDayCount;
}
}
return view('admin.LeaveManagement.all-application', ['LeaveTypes' => $LeaveTypes, 'Leaves'=>$Leaves,'NumberOfLeaveId'=>$NumberOfLeaveId,'NumberOfApprovalStatus'=>$NumberOfApprovalStatus,'NumberOfRejectStatus'=>$NumberOfRejectStatus]);
}
### Leave Category
public function leaveCategory()
{
return view('admin.LeaveManagement.leave-category');
}
### Leave Type
public function leaveType()
{
return view('admin.LeaveManagement.leave-type');
}
### Holiday List
public function holidayList()
{
return view('admin.LeaveManagement.holiday-list');
}
### View Application
public function viewApplication()
{
return view('admin.LeaveManagement.view-application');
}
#### Approved Or Rejected Leave Application
public function ApprovedLeaveApplication($LeaveId='')
{
$value = array();
$Status = $_GET['status'];
$Reason = $_GET['reason'];
$UserId = session('UserId');
// leave (+,-) after and before present employee during om the leave
$LeaveDetails = Leave::select('tbl_leave.*','tbl_leave_type.LeaveTypeName')
->leftJoin('tbl_leave_type', 'tbl_leave.LeaveTypeId', '=', 'tbl_leave_type.LeaveTypeId')
->where('tbl_leave.IsDeleted', '=', '0')
->where('tbl_leave.Status', '=', '1')
->where('tbl_leave.LeaveId', $LeaveId)
->orderBy('tbl_leave.Created_at', 'desc')
->get()
->first();
// When Reform Application update then perform this activity
if($LeaveDetails->IsReformed == 'Yes')
{
$value['ApprovalStatus'] = '1';
$value['RejectedReason'] = "";
$UpdatedDate = date('Y-m-d H:i:s', time());
$ApprovedDate = date('Y-m-d H:i:s');
$value['Updated_at'] = $UpdatedDate;
$value['ApprovedBy'] = $UserId;
$value['ApprovedDate'] = $ApprovedDate;
$value['Updated_by'] = $UserId;
$change_leave_status = Leave::where('LeaveId', $LeaveId)->update($value);
$change_approval_status = LeaveApproval::where(['LeaveId'=>$LeaveId,'ApprovalBy'=>$UserId])->update($value);
if($change_leave_status && $change_approval_status)
{
$StartDate = strtotime($LeaveDetails->StartDate);
$EndDate = strtotime($LeaveDetails->EndDate);
$ReformDate = strtotime($LeaveDetails->EndDate);
$LeaveTypeName = $LeaveDetails->LeaveTypeName;
$EmployeeId = $LeaveDetails->EmployeeId;
$DifApplyLeaveDays = (($EndDate - $StartDate)/86400);
$ReformEndDate = strtotime($ReformDate);
$DifReformLeaveDays = (($ReformEndDate - $StartDate)/86400);
$BalLeaveDays = ($DifApplyLeaveDays - $DifReformLeaveDays);
$GetBalanceLeaveDetail = EmployeeEarnedCommutedLeave::select()
->where('EmployeeId', $EmployeeId)
->where('IsDeleted', '=', '0')
->where('Status', '=', 1)
->orderBy('id', 'desc')
->get();
$BalanceEarnedLeave = 0;
$BalanceCommutedLeave = 0;
if ($GetBalanceLeaveDetail->count() > 0)
{
foreach ($GetBalanceLeaveDetail as $Balance)
{
$BalanceEarnedLeave = $Balance->BalanceEarnedLeave;
$BalanceCommutedLeave = $Balance->BalanceCummetedLeave;
}
}
else if($LeaveTypeName == "Earned Leave")
{
if($BalLeaveDays > 0)
{
$j_data['Updated_at'] =date('Y-m-d H:i:s', time());
$j_data['Updated_by'] = session('UserId');
$j_data['BalanceEarnedLeave'] = $BalanceEarnedLeave + $BalLeaveDays;
$UpdateLeaveBalance = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($j_data);
}
else
{
$j_data['Updated_at'] =date('Y-m-d H:i:s', time());
$j_data['Updated_by'] = session('UserId');
$j_data['BalanceEarnedLeave'] = $BalanceEarnedLeave - $BalLeaveDays;
$UpdateLeaveBalance = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($j_data);
}
}
else if($LeaveTypeName == "Commuted Leave")
{
if($BalLeaveDays > 0)
{
$j_data['Updated_at'] =date('Y-m-d H:i:s', time());
$j_data['Updated_by'] = session('UserId');
$j_data['BalanceCummetedLeave'] = $BalanceCommutedLeave + $BalLeaveDays;
$UpdateLeaveBalance = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($j_data);
}
else
{
$j_data['Updated_at'] =date('Y-m-d H:i:s', time());
$j_data['Updated_by'] = session('UserId');
$j_data['BalanceCummetedLeave'] = $BalanceCommutedLeave - $BalLeaveDays;
$UpdateLeaveBalance = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($j_data);
}
}
return response()->json('status_success');
}
else
{
return response()->json('status_failed');
}
}
else if($LeaveDetails->IsReformed == 'No')
{
if ($Status == '1')
{
$LeaveTypeId = $LeaveDetails->LeaveTypeId;
$EmployeeId = $LeaveDetails->EmployeeId;
$LeaveId = $LeaveDetails->LeaveId;
if($LeaveTypeId == 'XCRCWT2323SF6242GS611')
{
$GetEarnedLeave = EmployeeEarnedCommutedLeave::select()
->where('EmployeeId', $EmployeeId)
->where('IsDeleted', '=', '0')
->where('Status', '=', 1)
->orderBy('id', 'desc')
->get();
$TotalEarnedLeave = 0;
if ($GetEarnedLeave->count() > 0)
{
$Balance = $GetEarnedLeave->first();
$TotalEarnedLeave = $Balance->BalanceEarnedLeave;
}
$GetAvailedEOL = Leave::select('tbl_leave.*')
->where('LeaveId',$LeaveId)
->where('LeaveTypeId',$LeaveTypeId)
->where('EmployeeId', $EmployeeId)
->where('ApprovalStatus', '=', '0')
->get()
->first();
$TotalAvailedEOL = isset($GetAvailedEOL->AvailedEOL) ? $GetAvailedEOL->AvailedEOL : '';
echo $TotalAvailedEOL.'<br>';
if($TotalAvailedEOL >0 && $TotalAvailedEOL <= 10)
{
echo '10'.'<br>';
$e_value['BalanceEarnedLeave'] = $TotalEarnedLeave - 1;
$e_value['Updated_at'] =date('Y-m-d H:i:s', time());
$e_value['Updated_by'] = session('UserId');
$Less_Earned_Leave = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($e_value);
}
else if($TotalAvailedEOL >11 && $TotalAvailedEOL <= 20)
{
echo '20'.'<br>';
$e_value['BalanceEarnedLeave'] = $TotalEarnedLeave - 2;
$e_value['Updated_at'] =date('Y-m-d H:i:s', time());
$e_value['Updated_by'] = session('UserId');
$Less_Earned_Leave = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($e_value);
}
else if($TotalAvailedEOL >21 && $TotalAvailedEOL <= 30)
{
echo '30'.'<br>';
$e_value['BalanceEarnedLeave'] = $TotalEarnedLeave - 3;
$e_value['Updated_at'] =date('Y-m-d H:i:s', time());
$e_value['Updated_by'] = session('UserId');
$Less_Earned_Leave = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($e_value);
}
else if($TotalAvailedEOL >31 && $TotalAvailedEOL <= 40)
{
echo '40'.'<br>';
$e_value['BalanceEarnedLeave'] = $TotalEarnedLeave - 4;
$e_value['Updated_at'] =date('Y-m-d H:i:s', time());
$e_value['Updated_by'] = session('UserId');
$Less_Earned_Leave = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($e_value);
}
else{
echo '0'.'<br>';
$e_value['BalanceEarnedLeave'] = $TotalEarnedLeave - 0;
$e_value['Updated_at'] =date('Y-m-d H:i:s', time());
$e_value['Updated_by'] = session('UserId');
$Less_Earned_Leave = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->orderBy('id','DESC')->update($e_value);
}
}
$value['ApprovalStatus'] = '1';
$value['RejectedReason'] = "";
$UpdatedDate = date('Y-m-d H:i:s', time());
$ApprovedDate = date('Y-m-d H:i:s');
$value['Updated_at'] = $UpdatedDate;
$value['ApprovedBy'] = $UserId;
$value['ApprovedDate'] = $ApprovedDate;
$value['Updated_by'] = $UserId;
$change_leave_status = Leave::where('LeaveId', $LeaveId)->update($value);
$change_approval_status = LeaveApproval::where(['LeaveId'=>$LeaveId,'ApprovalBy'=>$UserId])->update($value);
if ($change_leave_status && $change_approval_status)
{
$GetApplicationDetail = Leave::select('tbl_leave.*','tbl_leave_type.LeaveTypeName')
->leftJoin('tbl_leave_type', 'tbl_leave.LeaveTypeId', '=', 'tbl_leave_type.LeaveTypeId')
->where('tbl_leave.IsDeleted', '=', '0')
->where('tbl_leave.Status', '=', '1')
->where('tbl_leave.LeaveId', $LeaveId)
->get();
$EarnedLeave = '';
$CommutedLeave = '';
$TotalLeave = 0;
$GetEmployeeId = '';
// $LeaveTypeId = '';
// $EmployeeId = '';
// $LeaveId = '';
if($GetApplicationDetail->count())
{
foreach ($GetApplicationDetail as $AValue)
{
// $LeaveTypeId = $AValue->LeaveTypeId;
// $EmployeeId = $AValue->EmployeeId;
// $LeaveId = $AValue->LeaveId;
if($AValue->LeaveTypeName == "Earned Leave")
{
$EarnedLeave = $AValue->LeaveTypeName;
$TotalLeave .= $AValue->TotalLeave;
$GetEmployeeId = $AValue->EmployeeId;
}
if($AValue->LeaveTypeName == "Commuted Leave")
{
$CommutedLeave = $AValue->LeaveTypeName;
$TotalLeave .= $AValue->TotalLeave;
$GetEmployeeId = $AValue->EmployeeId;
}
}
}
$GetBalanceLeaveDetail = EmployeeEarnedCommutedLeave::select()
->where('EmployeeId', $GetEmployeeId)
->where('IsDeleted', '=', '0')
->where('Status', '=', 1)
->orderBy('id', 'desc')
->get();
$BalanceEarnedLeave = 0;
$BalanceCommutedLeave = 0;
if ($GetBalanceLeaveDetail->count() > 0)
{
$Balance = $GetBalanceLeaveDetail->first();
$BalanceEarnedLeave = $Balance->BalanceEarnedLeave;
$BalanceCommutedLeave = $Balance->BalanceCummetedLeave;
}
if($EarnedLeave)
{
$e_value['BalanceEarnedLeave'] = $BalanceEarnedLeave - $TotalLeave;
$e_value['Updated_at'] =date('Y-m-d H:i:s', time());
$e_value['Updated_by'] = session('UserId');
$Less_Earned_Leave = EmployeeEarnedCommutedLeave::where('EmployeeId', $GetEmployeeId)->orderBy('id','DESC')->update($e_value);
}
if($CommutedLeave)
{
$c_value['BalanceCummetedLeave'] = $BalanceCommutedLeave - $TotalLeave;
$c_value['Updated_at'] =date('Y-m-d H:i:s', time());
$c_value['Updated_by'] = session('UserId');
$Less_Earned_Leave = EmployeeEarnedCommutedLeave::where('EmployeeId', $GetEmployeeId)->orderBy('id','DESC')->update($c_value);
}
return response()->json('status_success');
}
else
{
return response()->json('status_failed');
}
}
else
{
$value['ApprovalStatus'] = '2';
$value['RejectedReason'] = $Reason;
$value['Updated_by'] = $UserId;
$UpdatedDate = date('Y-m-d H:i:s', time());
$ApprovedDate = date('Y-m-d H:i:s');
$value['Updated_at'] = $UpdatedDate;
$value['ApprovedBy'] = $UserId;
$value['ApprovedDate'] = $ApprovedDate;
$change_leave_status = Leave::where('LeaveId', $LeaveId)->update($value);
$change_approval_status = LeaveApproval::where(['LeaveId'=>$LeaveId])->update($value);
if ($change_leave_status && $change_approval_status)
{
return response()->json('status_success');
}
else
{
return response()->json('status_failed');
}
}
}
}
#### Forward Leave Application
public function ForwardLeaveApplicationStatus($LeaveId='')
{
$value = array();
$Status = $_GET['status'];
$Concern = $_GET['Concern'];
$ProfileId = $_GET['ProfileId'];
$UserId = session('UserId');
$value['ApprovalStatus'] = $Status;
$value['ForwardConcern'] = $Concern;
$value['ForwardProfileId'] = $ProfileId;
$UpdatedDate = date('Y-m-d H:i:s', time());
$value['Updated_at'] = $UpdatedDate;
$value['ApprovedBy'] = $UserId;
$change_leave_status = Leave::where('LeaveId', $LeaveId)->update($value);
$change_approval_status = LeaveApproval::where(['LeaveId'=>$LeaveId,'ApprovalBy'=>$UserId])->update($value);
if($change_approval_status){
$GetLeaveDetail = LeaveApproval::select('*')
->where('LeaveId', $LeaveId)
->where('ApprovalBy', $UserId)
->get();
if ($GetLeaveDetail->count()) {
$data = array();
foreach ($GetLeaveDetail as $LValue) {
$Nvalue['ApprovalId'] = $this->userLib->useridGenrator();
$Nvalue['ApprovalId'] = $LValue->ApprovalId;
$Nvalue['LeaveId'] = $LValue->LeaveId;
$Nvalue['ApprovalBy'] = $LValue->ForwardProfileId;
// $Nvalue['ApprovedBy'] = $LValue->ForwardProfileId;
$Nvalue['ApprovalStatus'] = '0';
$Nvalue['Created_by'] = $LValue->Created_by;
$Nvalue['Created_at'] = $LValue->Created_at;
$data = isset($Nvalue) ? $Nvalue : '';
}
$NewAprovalData = LeaveApproval::insert($data);
}
}
if ($change_leave_status && $change_approval_status && $NewAprovalData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#Forward List
public function forwardList()
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$AllEmployee = EmployeeProfile::select('tbl_employees.*', 'tbl_department.DepartmentName as DepartmentName', 'tbl_designation.DesignationName as DesignationName')
->leftJoin('tbl_department', 'tbl_employees.DepartmentId', '=', 'tbl_department.DepartmentId')
->leftJoin('tbl_designation', 'tbl_employees.DesignationId', '=', 'tbl_designation.DesignationId')
->where('tbl_employees.IsDeleted', '=', '0')
->orderBy('tbl_employees.id', 'desc')
->get();
$AllEmployeeDetails = array();
if($AllEmployee->count() > 0)
{
$AllEmployeeDetails = $AllEmployee->first();
}
$EmployeeId = session('UserId');
$LeavesDetail = Leave::select('tbl_leave.*','tbl_leave_type.LeaveTypeName','tbl_leave_approval.ApprovalStatus')
->leftJoin('tbl_leave_type', 'tbl_leave.LeaveTypeId', '=', 'tbl_leave_type.LeaveTypeId')
->leftJoin('tbl_leave_approval', 'tbl_leave_approval.LeaveId', '=', 'tbl_leave.LeaveId')
->where('tbl_leave_approval.ApprovalStatus', '=', '3')
->where('tbl_leave_approval.ApprovalBy', $EmployeeId)
->get();
if($LeavesDetail->count() > 0)
{
$ForwardUsername = "";
foreach ($LeavesDetail as $FValue) {
$ForwardProfileId = $FValue->ForwardProfileId;
$ApprovedBy = $FValue->ApprovedBy;
#Forward
$ForwardUserDetails = Admin::select('*')
->where('UserId', $ForwardProfileId)
->get()->first();
$FirstName = isset($ForwardUserDetails->FirstName) ? $ForwardUserDetails->FirstName : '';
$MiddleName = isset($ForwardUserDetails->MiddleName) ? $ForwardUserDetails->MiddleName : '';
$LastName = isset($ForwardUserDetails->LastName) ? $ForwardUserDetails->LastName : '';
$FullName = '';
if($FirstName)
{
$FullName .= $FirstName;
}
if($MiddleName)
{
$FullName .= " ".$MiddleName;
}
if($LastName)
{
$FullName .= " ".$LastName;
}
$FValue->ForwardUsername = $FullName;
}
}
return view('admin.LeaveManagement.forward-list', ['EmployeesData' => $AllEmployeeDetails,'LeavesDetail' => $LeavesDetail]);
}
public function ApplicationDetail(Request $request, $LeaveId='')
{
$LeaveDetails = LeaveApproval::select('tbl_leave_approval.*','tbl_admin.FirstName','tbl_admin.MiddleName','tbl_admin.LastName')
->leftJoin('tbl_admin', 'tbl_admin.UserId', '=', 'tbl_leave_approval.ApprovalBy')
->where('tbl_leave_approval.LeaveId', $LeaveId)
->orderBy('tbl_leave_approval.ApprovalId', 'DESC')
->get();
if($LeaveDetails->count() > 0)
{
$ForwardUsername = "";
$ApprovedUsername = "";
$RejectUsername = "";
foreach ($LeaveDetails as $FValue) {
$ForwardProfileId = $FValue->ForwardProfileId;
$ApprovedBy = $FValue->ApprovedBy;
#Forward
$ForwardUserDetails = Admin::select('*')
->where('UserId', $ForwardProfileId)
->get()->first();
$FirstName = isset($ForwardUserDetails->FirstName) ? $ForwardUserDetails->FirstName : '';
$MiddleName = isset($ForwardUserDetails->MiddleName) ? $ForwardUserDetails->MiddleName : '';
$LastName = isset($ForwardUserDetails->LastName) ? $ForwardUserDetails->LastName : '';
$FullName = '';
if($FirstName)
{
$FullName .= $FirstName;
}
if($MiddleName)
{
$FullName .= " ".$MiddleName;
}
if($LastName)
{
$FullName .= " ".$LastName;
}
$FValue->ForwardUsername = $FullName;
#Approved
$ApprovedUserDetails = Admin::select('tbl_admin.*')
->leftJoin('tbl_leave_approval', 'tbl_leave_approval.ApprovedBy', '=', 'tbl_admin.UserId')
->where('tbl_leave_approval.ApprovalStatus', '=', 1)
->where('tbl_leave_approval.LeaveId', $LeaveId)
->where('tbl_admin.UserId', $ApprovedBy)
->get()->first();
$ApprovedFirstName = isset($ApprovedUserDetails->FirstName) ? $ApprovedUserDetails->FirstName : '';
$ApprovedMiddleName = isset($ApprovedUserDetails->MiddleName) ? $ApprovedUserDetails->MiddleName : '';
$ApprovedLastName = isset($ApprovedUserDetails->LastName) ? $ApprovedUserDetails->LastName : '';
$ApprovedFullName = '';
if($ApprovedFirstName)
{
$ApprovedFullName .= $ApprovedFirstName;
}
if($ApprovedMiddleName)
{
$ApprovedFullName .= " ".$ApprovedMiddleName;
}
if($ApprovedLastName)
{
$ApprovedFullName .= " ".$ApprovedLastName;
}
$FValue->ApprovedUsername = $ApprovedFullName;
#Rejected
$RejectUserDetails = Admin::select('tbl_admin.*')
->leftJoin('tbl_leave_approval', 'tbl_leave_approval.ApprovedBy', '=', 'tbl_admin.UserId')
->where('tbl_leave_approval.ApprovalStatus', '=', 2)
->where('tbl_leave_approval.LeaveId', $LeaveId)
->where('tbl_admin.UserId', $ApprovedBy)
->get()->first();
$RejectFirstName = isset($RejectUserDetails->FirstName) ? $RejectUserDetails->FirstName : '';
$RejectMiddleName = isset($RejectUserDetails->MiddleName) ? $RejectUserDetails->MiddleName : '';
$RejectLastName = isset($RejectUserDetails->LastName) ? $RejectUserDetails->LastName : '';
$RejectFullName = '';
if($RejectFirstName)
{
$RejectFullName .= $RejectFirstName;
}
if($RejectMiddleName)
{
$RejectFullName .= " ".$RejectMiddleName;
}
if($RejectLastName)
{
$RejectFullName .= " ".$RejectLastName;
}
$FValue->RejectUsername = $RejectFullName;
}
}
return view('admin.LeaveManagement.application-detail', ['LeaveDetails'=>$LeaveDetails]);
}
////////////////////////////// Employee Leave Detail ////////////////////////
### Holiday List
public function empLeaves(Request $request, $LeaveId='')
{
$AllEmployee = EmployeeProfile::select('tbl_employees.*', 'tbl_department.DepartmentName as DepartmentName', 'tbl_designation.DesignationName as DesignationName')
->leftJoin('tbl_department', 'tbl_employees.DepartmentId', '=', 'tbl_department.DepartmentId')
->leftJoin('tbl_designation', 'tbl_employees.DesignationId', '=', 'tbl_designation.DesignationId')
->where('tbl_employees.IsDeleted', '=', '0')
->orderBy('tbl_employees.id', 'desc')
->get();
return view('admin.LeaveManagement.employee-leaves', ['AllEmployee'=>$AllEmployee]);
}
### Detail of Leave
public function detailsEmployeeApplication(Request $request, $EmployeeId='')
{
$AllEmployee = EmployeeProfile::select('tbl_employees.*', 'tbl_department.DepartmentName as DepartmentName', 'tbl_designation.DesignationName as DesignationName')
->leftJoin('tbl_department', 'tbl_employees.DepartmentId', '=', 'tbl_department.DepartmentId')
->leftJoin('tbl_designation', 'tbl_employees.DesignationId', '=', 'tbl_designation.DesignationId')
->leftJoin('tbl_employee_leaves', 'tbl_employee_leaves.EmployeeId', '=', 'tbl_employees.EmployeeId')
->where('tbl_employees.IsDeleted', '=', '0')
->where('tbl_employees.EmployeeId', $EmployeeId)
->orderBy('EmployeeId', 'desc')
->get()->first();
$EmployeeLeaveDetails = EmployeeLeave::select('tbl_employee_leaves.*')
->where('EmployeeId', $EmployeeId)
->where('IsDeleted', '=', '0')
->where('Status', '=', 1)
->orderBy('EmployeeId', 'desc')
->get();
if($EmployeeLeaveDetails->count() > 0){
$EmployeeLeaveDetails = $EmployeeLeaveDetails->first();
}
else{
$EmployeeLeaveDetails = '';
}
return view('admin.LeaveManagement.employee-application-details', ['EmployeeData' => $AllEmployee,'LeaveDetails'=>$EmployeeLeaveDetails, 'EmployeeId'=>$EmployeeId]);
}
### Check Duplicate EmployeeId's Leave if Exist
public function CheckDuplicateCreditLeave(Request $request)
{
$getFromDate = $request->input('LeaveFromDate');
$FromDate = date('Y-m-d', strtotime($getFromDate));
$getToDate = $request->input('LeaveToDate');
$ToDate = date('Y-m-d', strtotime($getToDate));
$EmployeeId = $request->input('EmployeeId');
$getCreditLeave = EmployeeLeave::where('EmployeeId', $EmployeeId)->where('FromDate', $FromDate)->where('ToDate', $ToDate)->get();
if ($getCreditLeave->count() > 0) {
echo 'false';
} else {
echo 'true';
}
}
##### Store Leave Detail
public function StoreLeaveDetail(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$FromDate = str_replace('/', '-', $request->input('FromDate'));
$ToDate = str_replace('/', '-', $request->input('ToDate'));
$j_data['EmployeeLeaveId'] = $this->userLib->useridGenrator();
$j_data['EmployeeId'] = $request->input('EmployeeId');
$j_data['FromDate'] = date('Y-m-d', strtotime($FromDate));
$j_data['ToDate'] = date('Y-m-d', strtotime($ToDate));
$j_data['EarnedLeave'] = $request->input('EarnedLeave');
$j_data['HalfPayLeave'] = $request->input('HalfPayLeave');
$j_data['CommutedLeave'] = $request->input('CommutedLeave');
$j_data['LeaveNotDue'] = $request->input('LeaveNotDue');
$j_data['Extraordinaryleave'] = $request->input('Extraordinaryleave');
$j_data['LeavePreparatoryToRetirement'] = $request->input('LeavePreparatoryToRetirement');
$j_data['MaternityLeave'] = $request->input('MaternityLeave');
$j_data['AbortionLeave'] = $request->input('AbortionLeave');
$j_data['SpecialLeave'] = $request->input('SpecialLeave');
$j_data['SpecialDissabilityLeave'] = $request->input('SpecialDissabilityLeave');
$j_data['HospitalLeave'] = $request->input('HospitalLeave');
$j_data['TBOrCancerLeprosyOrParalysisOrAidsLeave'] = $request->input('TBOrCancerLeprosyOrParalysisOrAidsLeave');
$j_data['StudyLeave'] = $request->input('StudyLeave');
$j_data['SpecialCasualLeave'] = $request->input('SpecialCasualLeave');
$j_data['CasualLeave'] = $request->input('CasualLeave');
$j_data['CompensationLeave'] = $request->input('CompensationLeave');
$j_data['LeaveForVipassana'] = $request->input('LeaveForVipassana');
$j_data['LeaveForDissableOffspring'] = $request->input('LeaveForDissableOffspring');
$j_data['MountaineeringExpeditionLeave'] = $request->input('MountaineeringExpeditionLeave');
$j_data['BalSnagopanLeave'] = $request->input('BalSnagopanLeave');
$j_data['Created_at'] = date('Y-m-d H:i:s', time());
$j_data['Created_by'] = session('UserId');
$j_data['Status'] = '1';
$j_data['IsDeleted'] = '0';
// echo "<pre>";
// print_r($j_data);exit;
$EmployeeLeaveDetail = EmployeeLeave::insert($j_data);
if ($EmployeeLeaveDetail) {
return response()->json([
'status' => true,
'message' => 'status_success'
]);
} else {
return response()->json([
'status' => true,
'message' => 'status_failed'
]);
}
}
### Edit Leave Detail of the Employee
public function EditLeaveDetail(Request $request,$EmployeeLeaveId='')
{
$GetLeaveDetail = EmployeeLeave::select('tbl_employee_leaves.*')
->where('EmployeeLeaveId', $request->EmployeeLeaveId)
->where('IsDeleted', '=', '0')
->where('Status', '=', 1)
->get()->first();
return response()->json([
'status' => 200,
'GetLeaveDetail' => $GetLeaveDetail,
]);
}
##### Update Leave Detail
public function UpdateLeaveDetail(Request $request)
{
$StartDate = $request->input('FromDate');
$EndDate = $request->input('ToDate');
$FromDate = str_replace('/', '-', $StartDate);
$ToDate = str_replace('/', '-', $EndDate);
$EmployeeLeaveId = $request->input('EmployeeLeaveId');
$j_data['EmployeeId'] = $request->input('EmployeeId');
$j_data['FromDate'] = date('Y-m-d', strtotime($FromDate));
$j_data['ToDate'] = date('Y-m-d', strtotime($ToDate));
$j_data['EarnedLeave'] = $request->input('EarnedLeave');
$j_data['HalfPayLeave'] = $request->input('HalfPayLeave');
$j_data['CommutedLeave'] = $request->input('CommutedLeave');
$j_data['LeaveNotDue'] = $request->input('LeaveNotDue');
$j_data['Extraordinaryleave'] = $request->input('Extraordinaryleave');
$j_data['LeavePreparatoryToRetirement'] = $request->input('LeavePreparatoryToRetirement');
$j_data['MaternityLeave'] = $request->input('MaternityLeave');
$j_data['AbortionLeave'] = $request->input('AbortionLeave');
$j_data['SpecialLeave'] = $request->input('SpecialLeave');
$j_data['SpecialDissabilityLeave'] = $request->input('SpecialDissabilityLeave');
$j_data['HospitalLeave'] = $request->input('HospitalLeave');
$j_data['TBOrCancerLeprosyOrParalysisOrAidsLeave'] = $request->input('TBOrCancerLeprosyOrParalysisOrAidsLeave');
$j_data['StudyLeave'] = $request->input('StudyLeave');
$j_data['SpecialCasualLeave'] = $request->input('SpecialCasualLeave');
$j_data['CasualLeave'] = $request->input('CasualLeave');
$j_data['CompensationLeave'] = $request->input('CompensationLeave');
$j_data['LeaveForVipassana'] = $request->input('LeaveForVipassana');
$j_data['LeaveForDissableOffspring'] = $request->input('LeaveForDissableOffspring');
$j_data['MountaineeringExpeditionLeave'] = $request->input('MountaineeringExpeditionLeave');
$j_data['BalSnagopanLeave'] = $request->input('BalSnagopanLeave');
$j_data['Updated_by'] = session('UserId');
$j_data['Status'] = '1';
$j_data['IsDeleted'] = '0';
$j_data['Updated_at'] = date('Y-m-d H:i:s', time());
$UpdateLeaveDetailData = EmployeeLeave::where('EmployeeLeaveId', $EmployeeLeaveId)->update($j_data);
if ($UpdateLeaveDetailData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
### Delete Leave Detail of the Employee
public function DeleteLeaveDetail(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$EmployeeLeaveId = $request->input('EmployeeLeaveId');
$l_data = array();
$j_data['Updated_by'] = session('UserId');
$l_data['IsDeleted'] = 1;
$l_data['Status'] = 0;
$DeleteLeaveDetailData = EmployeeLeave::where('EmployeeLeaveId', $EmployeeLeaveId)->update($l_data);
if ($DeleteLeaveDetailData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
////////////////////////////// Employee Earned Commuted Leave Detail ////////////////////////
public function EmpEarnedCommutedLeaves()
{
$EmployeeEarnedCommutedLeaveDetails = EmployeeEarnedCommutedLeave::select('tbl_employee_earned_commuted_leave.*','tbl_employees.EmployeeCode','tbl_employees.EmployeeName')
->leftJoin('tbl_employees', 'tbl_employees.EmployeeId', '=', 'tbl_employee_earned_commuted_leave.EmployeeId')
->where('tbl_employee_earned_commuted_leave.IsDeleted', '=', '0')
->where('tbl_employee_earned_commuted_leave.Status', '=', 1)
// ->orderBy('tbl_employee_earned_commuted_leave.id', 'desc')
->get();
return view('admin.LeaveManagement.employee-earned-commuted-details',['EmployeeEarnedCommutedLeaveDetails'=>$EmployeeEarnedCommutedLeaveDetails]);
}
### Check Duplicate EmployeeId's Earned Commuted Leave if Exist
public function CheckDuplicateEarnedCommutedLeave(Request $request)
{
$getFromDate = str_replace('/', '-', $request->input('EarnFromDate'));
$getToDate = str_replace('/', '-', $request->input('EarnToDate'));
$FromDate = date('Y-m-d', strtotime($getFromDate));
$ToDate = date('Y-m-d', strtotime($getToDate));
$EmployeeId = $request->input('EmployeeId');
$getEarnedCommutedLeave = EmployeeEarnedCommutedLeave::where('EmployeeId', $EmployeeId)->where('FromDate', $FromDate)->where('ToDate', $ToDate)->get();
if ($getEarnedCommutedLeave->count() > 0) {
echo 'false';
} else {
echo 'true';
}
}
##### Store Earned Commuted Leave Detail
public function StoreEarnCommutLeaveDetail(Request $request)
{
$EmployeeId = $request->input('EmployeeId');
$GetBalanceLeaveDetail = EmployeeEarnedCommutedLeave::select()
->where('EmployeeId', $EmployeeId)
->where('IsDeleted', '=', '0')
->where('Status', '=', 1)
->orderBy('id', 'desc')
->get();
$BalanceEarnedLeave = 0;
$BalanceCommutedLeave = 0;
if ($GetBalanceLeaveDetail->count() > 0)
{
foreach ($GetBalanceLeaveDetail as $Balance)
{
$BalanceEarnedLeave = $Balance->BalanceEarnedLeave;
$BalanceCommutedLeave = $Balance->BalanceCummetedLeave;
}
}
$FromDate = str_replace('/', '-', $request->input('FromDate'));
$ToDate = str_replace('/', '-', $request->input('ToDate'));
$j_data['EmployeeELCLId'] = $this->userLib->useridGenrator();
$j_data['EmployeeId'] = $EmployeeId;
$j_data['FromDate'] = date('Y-m-d', strtotime($FromDate));
$j_data['ToDate'] = date('Y-m-d', strtotime($ToDate));
$j_data['EarnedLeave'] = $request->input('EarnedLeave');
$j_data['CommutedLeave'] = $request->input('CommutedLeave');
$j_data['BalanceEarnedLeave'] = $request->input('EarnedLeave') + $BalanceEarnedLeave;
$j_data['BalanceCummetedLeave'] = $request->input('CommutedLeave') + $BalanceCommutedLeave;
$j_data['Created_at'] = date('Y-m-d H:i:s', time());
$j_data['Created_by'] = session('UserId');
$j_data['Status'] = '1';
$j_data['IsDeleted'] = '0';
$EarnCommutLeaveDetail = EmployeeEarnedCommutedLeave::insert($j_data);
if ($EarnCommutLeaveDetail) {
return response()->json([
'status' => true,
'message' => 'status_success'
]);
} else {
return response()->json([
'status' => true,
'message' => 'status_failed'
]);
}
}
### Edit Earned Commuted Leave Detail of the Employee
public function EditEarnedCommutedLeaveDetail(Request $request,$EmployeeELCLId='')
{
$GetEarnCommutLeaveDetail = EmployeeEarnedCommutedLeave::select()
->where('EmployeeELCLId', $request->EmployeeELCLId)
->where('IsDeleted', '=', '0')
->where('Status', '=', 1)
->get()->first();
return response()->json([
'status' => 200,
'GetEarnCommutLeaveDetail' => $GetEarnCommutLeaveDetail,
]);
}
##### Update Earned Commuted Leave Detail
public function UpdateEarnedCommutedLeaveDetail(Request $request)
{
$FromDate = str_replace('/', '-', $request->input('FromDate'));
$ToDate = str_replace('/', '-', $request->input('ToDate'));
$EmployeeELCLId = $request->input('EmployeeELCLId');
$j_data['EmployeeId'] = $request->input('EmployeeId');
$j_data['FromDate'] = date('Y-m-d', strtotime($FromDate));
$j_data['ToDate'] = date('Y-m-d', strtotime($ToDate));
$j_data['EarnedLeave'] = $request->input('EarnedLeave');
$j_data['CommutedLeave'] = $request->input('CommutedLeave');
$j_data['Updated_at'] = date('Y-m-d H:i:s', time());
$j_data['Updated_by'] = session('UserId');
$UpdateLeaveDetailData = EmployeeEarnedCommutedLeave::where('EmployeeELCLId', $EmployeeELCLId)->update($j_data);
if ($UpdateLeaveDetailData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
### Delete Earned Commuted Leave Detail of the Employee
public function DeleteEarnedCommutedLeaveDetail(Request $request)
{
$EmployeeELCLId = $request->input('EmployeeELCLId');
$earned_commuted_data = array();
$earned_commuted_data['Updated_by'] = session('UserId');
$earned_commuted_data['IsDeleted'] = 1;
// $earned_commuted_data['Status'] = 0;
$DeleteLeaveDetailData = EmployeeEarnedCommutedLeave::where('EmployeeELCLId', $EmployeeELCLId)->update($earned_commuted_data);
if ($DeleteLeaveDetailData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
}