File: /var/www/html/dev-hrms/app/Http/Controllers/EmployeePayMatrixController.php
<?php
namespace App\Http\Controllers;
use App\Models\EmployeePayMatrix;
use App\Models\PayFixation;
use App\Models\EmployeeProfile;
use App\Models\Profiles;
use App\Models\Approval;
use App\Library\UserLib;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
use Illuminate\Http\Request;
class EmployeePayMatrixController extends Controller
{
protected $userLib;
protected $UserSessionId;
protected $TeamList = array();
protected $LevelList = array();
protected $ViewProfileIds = array();
protected $ViewApprovalUsers = array();
public function __construct(UserLib $userLib)
{
$this->userLib = $userLib;
}
public function getAccessUserProfileList($ProfileId = '')
{
$users = Profiles::select('*')
->leftJoin('tbl_roles', 'tbl_roles.RoleId', '=', 'tbl_profiles.RoleId')
->where('tbl_roles.ReadPermission', 'like', '1')
->where('tbl_roles.WritePermission', 'like', '1')
->where('tbl_roles.UpdatePermission', 'like', '1')
->where('tbl_roles.ApprovalPermission', 'like', '1')
->where('tbl_profiles.ServiceBookApprovalPermission', 'like', 'YES')
->where('tbl_profiles.ProfileId', 'like', $ProfileId) //check not equal to user profile
->get();
if ($users->count() > 0) { //email is exist
foreach ($users as $key => $UValue) {
$ProfileId = $UValue['ProfileId'];
$ProfileName = $UValue['ProfileName'];
$ParentId = $UValue['ParentId'];
$this->TeamList[] = $UValue;
$this->ViewProfileIds[] = $ProfileId;
if ($ParentId) {
$this->getAccessUserProfileList($ParentId);
}
}
}
return $responseData = $this->ViewProfileIds;
//return response()->json($responseData);
}
// Get Approval User
public function getApprovalUserLevel($ProfileId = '', $Level = 1)
{
$users = Profiles::select('*')
->leftJoin('tbl_roles', 'tbl_roles.RoleId', '=', 'tbl_profiles.RoleId')
->where('tbl_roles.ReadPermission', 'like', '1')
->where('tbl_roles.WritePermission', 'like', '1')
->where('tbl_roles.UpdatePermission', 'like', '1')
->where('tbl_roles.ApprovalPermission', 'like', '1')
//->where('tbl_profiles.ServiceBookApprovalPermission','like','YES')
->where('tbl_profiles.ProfileId', 'like', $ProfileId) //check not equal to user profile
->get();
// echo $users;
//exit;
if ($users->count() > 0) { //email is exist
foreach ($users as $key => $UValue) {
$ProfileId = $UValue['ProfileId'];
$ProfileName = $UValue['ProfileName'];
$ParentId = $UValue['ParentId'];
$this->TeamList[] = $UValue;
$this->ViewApprovalUsers[] = $ProfileId;
//$this->LevelList[] = $Level;
//echo $Level.'-'.$ParentId.'<br/>';
if ($Level >= 2) {
continue;
}
if ($ParentId) {
$Level++;
$this->getApprovalUserLevel($ParentId, $Level);
}
}
}
return $this->ViewApprovalUsers;
}
public function employeePayMatrix()
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$UserId = session('UserId');
$AllPayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*', 'tbl_employees.EmployeeName as EmployeeName', 'tbl_payscale.PayScaleName as PayScale', 'tbl_payband.PayBandName as PayBand', 'tbl_gradepay.GradePayName as GradePay', 'tbl_paylevel.PayLevelName as PayLevel', 'tbl_paylevel_amount.PayLevelAmount as LevelAmount', 'tbl_pay_fixation.PayFixation as PayFixation', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_employees_paymatrix.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_employees', 'tbl_employees_paymatrix.EmployeeId', '=', 'tbl_employees.EmployeeId')
->leftJoin('tbl_payscale', 'tbl_employees_paymatrix.PayScaleId', '=', 'tbl_payscale.PayScaleId')
->leftJoin('tbl_payband', 'tbl_employees_paymatrix.PayBandId', '=', 'tbl_payband.PayBandId')
->leftJoin('tbl_gradepay', 'tbl_employees_paymatrix.GradePayId', '=', 'tbl_gradepay.GradePayId')
->leftJoin('tbl_paylevel', 'tbl_employees_paymatrix.PayLevelId', '=', 'tbl_paylevel.PayLevelId')
->leftJoin('tbl_paylevel_amount', 'tbl_employees_paymatrix.PayLevelAmountId', '=', 'tbl_paylevel_amount.PayLevelAmountId')
->leftJoin('tbl_pay_fixation', 'tbl_employees_paymatrix.PayFixationId', '=', 'tbl_pay_fixation.PayFixationId')
->where('tbl_employees_paymatrix.IsDeleted', '0')
->where('tbl_employees_paymatrix.Created_by', $UserId)
->orderBy('tbl_employees_paymatrix.id', 'DESC')
->get();
$CancelledPayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*', 'tbl_employees.EmployeeName as EmployeeName', 'tbl_payscale.PayScaleName as PayScale', 'tbl_payband.PayBandName as PayBand', 'tbl_gradepay.GradePayName as GradePay', 'tbl_paylevel.PayLevelName as PayLevel', 'tbl_paylevel_amount.PayLevelAmount as LevelAmount', 'tbl_pay_fixation.PayFixation as PayFixation', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_employees_paymatrix.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_employees', 'tbl_employees_paymatrix.EmployeeId', '=', 'tbl_employees.EmployeeId')
->leftJoin('tbl_payscale', 'tbl_employees_paymatrix.PayScaleId', '=', 'tbl_payscale.PayScaleId')
->leftJoin('tbl_payband', 'tbl_employees_paymatrix.PayBandId', '=', 'tbl_payband.PayBandId')
->leftJoin('tbl_gradepay', 'tbl_employees_paymatrix.GradePayId', '=', 'tbl_gradepay.GradePayId')
->leftJoin('tbl_paylevel', 'tbl_employees_paymatrix.PayLevelId', '=', 'tbl_paylevel.PayLevelId')
->leftJoin('tbl_paylevel_amount', 'tbl_employees_paymatrix.PayLevelAmountId', '=', 'tbl_paylevel_amount.PayLevelAmountId')
->leftJoin('tbl_pay_fixation', 'tbl_employees_paymatrix.PayFixationId', '=', 'tbl_pay_fixation.PayFixationId')
->where('tbl_employees_paymatrix.IsDeleted', '0')
->where('tbl_employees_paymatrix.Created_by', $UserId)
->where('tbl_employees_paymatrix.IsCancelled', '1')
->orderBy('tbl_employees_paymatrix.id', 'DESC')
->get();
// print_r(json_encode($AllPayMatrix));
// exit;
return view('admin.EmployeeProfile.employee-pay-matrix', ['AllPayMatrix' => $AllPayMatrix, 'CancelledPayMatrix' => $CancelledPayMatrix]);
}
public function employeeCancelledPayMatrix()
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$UserId = session('UserId');
$AllPayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*', 'tbl_employees.EmployeeName as EmployeeName', 'tbl_payscale.PayScaleName as PayScale', 'tbl_payband.PayBandName as PayBand', 'tbl_gradepay.GradePayName as GradePay', 'tbl_paylevel.PayLevelName as PayLevel', 'tbl_paylevel_amount.PayLevelAmount as LevelAmount', 'tbl_pay_fixation.PayFixation as PayFixation', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_employees_paymatrix.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_employees', 'tbl_employees_paymatrix.EmployeeId', '=', 'tbl_employees.EmployeeId')
->leftJoin('tbl_payscale', 'tbl_employees_paymatrix.PayScaleId', '=', 'tbl_payscale.PayScaleId')
->leftJoin('tbl_payband', 'tbl_employees_paymatrix.PayBandId', '=', 'tbl_payband.PayBandId')
->leftJoin('tbl_gradepay', 'tbl_employees_paymatrix.GradePayId', '=', 'tbl_gradepay.GradePayId')
->leftJoin('tbl_paylevel', 'tbl_employees_paymatrix.PayLevelId', '=', 'tbl_paylevel.PayLevelId')
->leftJoin('tbl_paylevel_amount', 'tbl_employees_paymatrix.PayLevelAmountId', '=', 'tbl_paylevel_amount.PayLevelAmountId')
->leftJoin('tbl_pay_fixation', 'tbl_employees_paymatrix.PayFixationId', '=', 'tbl_pay_fixation.PayFixationId')
->where('tbl_employees_paymatrix.IsDeleted', '0')
->where('tbl_employees_paymatrix.Created_by', $UserId)
->orderBy('tbl_employees_paymatrix.id', 'DESC')
->get();
$CancelledPayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*', 'tbl_employees.EmployeeName as EmployeeName', 'tbl_payscale.PayScaleName as PayScale', 'tbl_payband.PayBandName as PayBand', 'tbl_gradepay.GradePayName as GradePay', 'tbl_paylevel.PayLevelName as PayLevel', 'tbl_paylevel_amount.PayLevelAmount as LevelAmount', 'tbl_pay_fixation.PayFixation as PayFixation', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_employees_paymatrix.Updated_by', '=', 'tbl_admin.UserId')
->leftJoin('tbl_employees', 'tbl_employees_paymatrix.EmployeeId', '=', 'tbl_employees.EmployeeId')
->leftJoin('tbl_payscale', 'tbl_employees_paymatrix.PayScaleId', '=', 'tbl_payscale.PayScaleId')
->leftJoin('tbl_payband', 'tbl_employees_paymatrix.PayBandId', '=', 'tbl_payband.PayBandId')
->leftJoin('tbl_gradepay', 'tbl_employees_paymatrix.GradePayId', '=', 'tbl_gradepay.GradePayId')
->leftJoin('tbl_paylevel', 'tbl_employees_paymatrix.PayLevelId', '=', 'tbl_paylevel.PayLevelId')
->leftJoin('tbl_paylevel_amount', 'tbl_employees_paymatrix.PayLevelAmountId', '=', 'tbl_paylevel_amount.PayLevelAmountId')
->leftJoin('tbl_pay_fixation', 'tbl_employees_paymatrix.PayFixationId', '=', 'tbl_pay_fixation.PayFixationId')
->where('tbl_employees_paymatrix.IsDeleted', '0')
->where('tbl_employees_paymatrix.Created_by', $UserId)
->where('tbl_employees_paymatrix.IsCancelled', '1')
->orderBy('tbl_employees_paymatrix.id', 'DESC')
->get();
// print_r(json_encode($AllPayMatrix));
// exit;
return view('admin.EmployeeProfile.employee-cancelled-pay-matrix', ['AllPayMatrix' => $AllPayMatrix, 'CancelledPayMatrix' => $CancelledPayMatrix]);
}
#### Store Pay Matrix
public function storePayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$input = $request->all();
$data = $input;
$EmployeeId = $request->input('EmployeeId');
// Get Effective Date
$EffectiveDate = '';
if ($request->input('EffectiveFrom')) {
$EffectiveFrom = str_replace('/', '-', $request->input('EffectiveFrom'));
$EffectiveDate = date('Y-m-d', strtotime($EffectiveFrom));
$data['EffectiveDate'] = $EffectiveDate;
}
$GetEmpLowerPayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*', 'tbl_payscale.PayScaleName as PayScale', 'tbl_payband.PayBandName as PayBand', 'tbl_gradepay.GradePayName as GradePay', 'tbl_paylevel.PayLevelName as PayLevel', 'tbl_paylevel_amount.PayLevelAmount as LevelAmount')
->leftJoin('tbl_payscale', 'tbl_employees_paymatrix.PayScaleId', '=', 'tbl_payscale.PayScaleId')
->leftJoin('tbl_payband', 'tbl_employees_paymatrix.PayBandId', '=', 'tbl_payband.PayBandId')
->leftJoin('tbl_gradepay', 'tbl_employees_paymatrix.GradePayId', '=', 'tbl_gradepay.GradePayId')
->leftJoin('tbl_paylevel', 'tbl_employees_paymatrix.PayLevelId', '=', 'tbl_paylevel.PayLevelId')
->leftJoin('tbl_paylevel_amount', 'tbl_employees_paymatrix.PayLevelAmountId', '=', 'tbl_paylevel_amount.PayLevelAmountId')
->where('tbl_employees_paymatrix.EmployeeId', $EmployeeId)
->where('tbl_employees_paymatrix.IsDeleted', '0')
//->where('tbl_employees_paymatrix.id', '<', $id)
->where('tbl_employees_paymatrix.EffectiveDate', '<', date('Y-m-d', strtotime($EffectiveDate)))
->orderBy('tbl_employees_paymatrix.EffectiveDate', 'DESC')
->get()->first();
// print_r(json_encode($GetEmpLowerPayMatrix));
// exit;
$SanctionedOrderDate = '';
if ($request->input('OrderDate')) {
$OrderDate = str_replace('/', '-', $request->input('OrderDate'));
$SanctionedOrderDate = date('Y-m-d', strtotime($OrderDate));
$data['SanctionedOrderDate'] = $SanctionedOrderDate;
}
$NextIncrementDate = '';
if ($request->input('NextIncDate')) {
$NextIncDate = str_replace('/', '-', $request->input('NextIncDate'));
$NextIncrementDate = date('Y-m-d', strtotime($NextIncDate));
$data['NextIncrementDate'] = $NextIncrementDate;
}
$HoldFromDate = '';
if ($request->input('HoldFrom')) {
$HoldFrom = str_replace('/', '-', $request->input('HoldFrom'));
$HoldFromDate = date('Y-m-d', strtotime($HoldFrom));
$data['HoldFromDate'] = $HoldFromDate;
}
// Sanction Order File
$CertName = $this->userLib->useridGenrator();
$SanctionedOrderFilePath = '';
if ($request->hasFile('SanctionedOrderFile')) {
$file = $request->file('SanctionedOrderFile');
$extension = $file->getClientOriginalExtension();
$FileName = $CertName . '-' . time() . '.' . $extension;
Storage::putFileAs(
'public/payscale_sanction_order',
$file,
$FileName
);
$SanctionedOrderFilePath = Storage::url('payscale_sanction_order/' . $FileName);
$data['SanctionedOrderFilePath'] = $SanctionedOrderFilePath;
}
unset($data['_token']);
unset($data['SanctionedOrderFile']);
unset($data['OrderDate']);
unset($data['EffectiveFrom']);
unset($data['NextIncDate']);
unset($data['HoldFrom']);
$data['PayMatrixId'] = $this->userLib->useridGenrator();
$data['IsDeleted'] = 0;
$data['Status'] = 1;
$data['Created_by'] = session('UserId');
$data['Created_at'] = date('Y-m-d H:i:s', time());
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
if ($GetEmpLowerPayMatrix) {
$data['LowerPayScale'] = $GetEmpLowerPayMatrix->PayScale;
$data['LowerPayBand'] = $GetEmpLowerPayMatrix->PayBand;
$data['LowerGradePay'] = $GetEmpLowerPayMatrix->GradePay;
$data['LowerPayLevel'] = $GetEmpLowerPayMatrix->PayLevel;
$data['LowerPayLevelAmount'] = $GetEmpLowerPayMatrix->PayLevelAmount;
$data['LowerPayMatrixScale'] = $GetEmpLowerPayMatrix->PayMatrixScale;
$data['LowerPayLevelAmountId'] = $GetEmpLowerPayMatrix->PayLevelAmountId;
$data['LowerEffectiveDate'] = $GetEmpLowerPayMatrix->EffectiveDate;
// Change Status (De-activate) previous paymatrix
$ChangeStatus = array();
$ChangeStatus['Status'] = 0;
$ChangeStatus['Updated_by'] = session('UserId');
$ChangeStatus['Updated_at'] = date('Y-m-d H:i:s', time());
$ChangeUpdatedData = EmployeePayMatrix::where('EmployeeId', $EmployeeId)->where('Status', '1')->update($ChangeStatus);
}
$PayMatrix = EmployeePayMatrix::insert($data);
if ($PayMatrix) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
### Change Status
public function changeStatusPayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$PayMatrixId = $request->input('PayMatrixId');
$data = EmployeePayMatrix::where('PayMatrixId', $PayMatrixId)->get()->first();
if ($data->Status == '1') {
$Status = '0';
} else {
$Status = '1';
}
$values = array();
$values['Status'] = $Status;
$values['Updated_by'] = session('UserId');
$values['Updated_at'] = date('Y-m-d H:i:s', time());
$ChangeStatus = EmployeePayMatrix::select('tbl_employees_paymatrix.*')->where('PayMatrixId', $PayMatrixId)->update($values);
if ($ChangeStatus) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
### Edit Pay Matrix
public function editPayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$PayMatrixId = $request->input('PayMatrixId');
$GetPayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*', 'tbl_employees.EmployeeName as EmployeeName')
->leftJoin('tbl_employees', 'tbl_employees_paymatrix.EmployeeId', '=', 'tbl_employees.EmployeeId')
->where('PayMatrixId', $PayMatrixId)
//->where('IsDeleted', '=', '0')
->get()->first();
return response()->json([
'status' => 200,
'GetPayMatrix' => $GetPayMatrix,
]);
}
#### Update Pay Matrix
public function updatePayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$input = $request->all();
$data = $input;
$PayMatrixId = $request->input('PayMatrixId');
$id = $request->input('id');
$EmployeeId = $request->input('EmployeeId');
// Get Effective date
$EffectiveDate = '';
if ($request->input('EffectiveFrom')) {
$EffectiveFrom = str_replace('/', '-', $request->input('EffectiveFrom'));
$EffectiveDate = date('Y-m-d', strtotime($EffectiveFrom));
$data['EffectiveDate'] = $EffectiveDate;
}
$GetEmpLowerPayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*', 'tbl_payscale.PayScaleName as PayScale', 'tbl_payband.PayBandName as PayBand', 'tbl_gradepay.GradePayName as GradePay', 'tbl_paylevel.PayLevelName as PayLevel', 'tbl_paylevel_amount.PayLevelAmount as LevelAmount')
->leftJoin('tbl_payscale', 'tbl_employees_paymatrix.PayScaleId', '=', 'tbl_payscale.PayScaleId')
->leftJoin('tbl_payband', 'tbl_employees_paymatrix.PayBandId', '=', 'tbl_payband.PayBandId')
->leftJoin('tbl_gradepay', 'tbl_employees_paymatrix.GradePayId', '=', 'tbl_gradepay.GradePayId')
->leftJoin('tbl_paylevel', 'tbl_employees_paymatrix.PayLevelId', '=', 'tbl_paylevel.PayLevelId')
->leftJoin('tbl_paylevel_amount', 'tbl_employees_paymatrix.PayLevelAmountId', '=', 'tbl_paylevel_amount.PayLevelAmountId')
->where('tbl_employees_paymatrix.EmployeeId', $EmployeeId)
->where('tbl_employees_paymatrix.IsDeleted', '0')
->where('tbl_employees_paymatrix.id', '<', $id)
->where('tbl_employees_paymatrix.PayMatrixId', '!=', $PayMatrixId)
//->where('tbl_employees_paymatrix.EffectiveDate', '<', date('Y-m-d', strtotime($EffectiveDate)))
->orderBy('tbl_employees_paymatrix.EffectiveDate', 'DESC')
->get()->first();
// print_r(json_encode($GetEmpLowerPayMatrix));
// exit;
$SanctionedOrderDate = '';
if ($request->input('OrderDate')) {
$OrderDate = str_replace('/', '-', $request->input('OrderDate'));
$SanctionedOrderDate = date('Y-m-d', strtotime($OrderDate));
$data['SanctionedOrderDate'] = $SanctionedOrderDate;
}
$NextIncrementDate = '';
if ($request->input('NextIncDate')) {
$NextIncDate = str_replace('/', '-', $request->input('NextIncDate'));
$NextIncrementDate = date('Y-m-d', strtotime($NextIncDate));
$data['NextIncrementDate'] = $NextIncrementDate;
}
$HoldFromDate = '';
if ($request->input('HoldFrom')) {
$HoldFrom = str_replace('/', '-', $request->input('HoldFrom'));
$HoldFromDate = date('Y-m-d', strtotime($HoldFrom));
$data['HoldFromDate'] = $HoldFromDate;
}
$ReleaseDate = '';
if ($request->input('ReleasedFromDate')) {
$ReleasedFromDate = str_replace('/', '-', $request->input('ReleasedFromDate'));
$ReleaseDate = date('Y-m-d', strtotime($ReleasedFromDate));
$data['ReleaseDate'] = $ReleaseDate;
}
// Sanction Order File
$CertName = $this->userLib->useridGenrator();
$SanctionedOrderFilePath = '';
if ($request->hasFile('SanctionedOrderFile')) {
$file = $request->file('SanctionedOrderFile');
$extension = $file->getClientOriginalExtension();
$FileName = $CertName . '-' . time() . '.' . $extension;
Storage::putFileAs(
'public/payscale_sanction_order',
$file,
$FileName
);
$SanctionedOrderFilePath = Storage::url('payscale_sanction_order/' . $FileName);
$data['SanctionedOrderFilePath'] = $SanctionedOrderFilePath;
}
unset($data['_token']);
unset($data['SanctionedOrderFile']);
unset($data['OrderDate']);
unset($data['EffectiveFrom']);
unset($data['NextIncDate']);
unset($data['HoldFrom']);
unset($data['ReleasedFromDate']);
if ($GetEmpLowerPayMatrix) {
$data['LowerPayScale'] = $GetEmpLowerPayMatrix->PayScale;
$data['LowerPayBand'] = $GetEmpLowerPayMatrix->PayBand;
$data['LowerGradePay'] = $GetEmpLowerPayMatrix->GradePay;
$data['LowerPayLevel'] = $GetEmpLowerPayMatrix->PayLevel;
$data['LowerPayLevelAmount'] = $GetEmpLowerPayMatrix->PayLevelAmount;
$data['LowerPayMatrixScale'] = $GetEmpLowerPayMatrix->PayMatrixScale;
$data['LowerPayLevelAmountId'] = $GetEmpLowerPayMatrix->PayLevelAmountId;
$data['LowerEffectiveDate'] = $GetEmpLowerPayMatrix->EffectiveDate;
}
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
// print_r(json_encode($data));
// exit;
$PayMatrix = EmployeePayMatrix::where('PayMatrixId', $PayMatrixId)->update($data);
if ($PayMatrix) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Hold PayMatrix
public function holdPayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$PayMatrixId = $request->input('PayMatrixId');
$HoldFromDate = '';
if ($request->input('PaymatrixHoldFromDate')) {
$HoldFrom = str_replace('/', '-', $request->input('PaymatrixHoldFromDate'));
$HoldFromDate = date('Y-m-d', strtotime($HoldFrom));
}
$HoldReason = $request->input('PaymatrixHoldReason');
$values = array();
$values['IsHold'] = '1';
$values['HoldFromDate'] = $HoldFromDate;
$values['HoldReason'] = $HoldReason;
$values['IsReleased'] = '0';
$values['Updated_by'] = session('UserId');
$values['Updated_at'] = date('Y-m-d H:i:s', time());
$HoldPayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*')
->where('PayMatrixId', $PayMatrixId)
->update($values);
if ($HoldPayMatrix) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Release PayMatrix
public function releasePayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$PayMatrixId = $request->input('PayMatrixId');
$ReleaseDate = '';
if ($request->input('ReleaseFromDate')) {
$ReleaseFrom = str_replace('/', '-', $request->input('ReleaseFromDate'));
$ReleaseDate = date('Y-m-d', strtotime($ReleaseFrom));
}
$ReleaseReason = $request->input('PaymatrixReleaseReason');
$values = array();
$values['IsReleased'] = '1';
$values['ReleaseDate'] = $ReleaseDate;
$values['ReleaseReason'] = $ReleaseReason;
$values['Status'] = 0;
$values['Updated_by'] = session('UserId');
$values['Updated_at'] = date('Y-m-d H:i:s', time());
$ReleasePayMatrix = EmployeePayMatrix::select('tbl_employees_paymatrix.*')
->where('PayMatrixId', $PayMatrixId)
->update($values);
// Release PayMatrix and Create new row with active status
if ($ReleasePayMatrix) {
$GetHoldPayMatrix = EmployeePayMatrix::where('PayMatrixId', $PayMatrixId)->get()->first();
$data['PayMatrixId'] = $this->userLib->useridGenrator();
$data['EmployeeId'] = $GetHoldPayMatrix->EmployeeId;
$data['EmployeeCode'] = $GetHoldPayMatrix->EmployeeCode;
$data['PayLevelAmountId'] = $GetHoldPayMatrix->PayLevelAmountId;
$data['PayLevelAmount'] = $GetHoldPayMatrix->PayLevelAmount;
$data['PayLevelId'] = $GetHoldPayMatrix->PayLevelId;
$data['GradePayId'] = $GetHoldPayMatrix->GradePayId;
$data['PayBandId'] = $GetHoldPayMatrix->PayBandId;
$data['PayScaleId'] = $GetHoldPayMatrix->PayScaleId;
$data['PayFixationId'] = $GetHoldPayMatrix->PayFixationId;
$data['EffectiveDate'] = $GetHoldPayMatrix->EffectiveDate;
$data['PayFixationAfterOrder'] = $GetHoldPayMatrix->PayFixationAfterOrder;
$data['SanctionedOrderNo'] = $GetHoldPayMatrix->SanctionedOrderNo;
$data['SanctionedOrderDate'] = $GetHoldPayMatrix->SanctionedOrderDate;
$data['SanctionedOrderFilePath'] = $GetHoldPayMatrix->SanctionedOrderFilePath;
$data['NextIncrementDate'] = $GetHoldPayMatrix->NextIncrementDate;
// if ($GetHoldPayMatrix->SanctionedOrderDate) {
// $data['SanctionedOrderDate'] = $GetHoldPayMatrix->SanctionedOrderDate;
// } else {
// $data['SanctionedOrderDate'] = null;
// }
$data['LowerPayScale'] = $GetHoldPayMatrix->LowerPayScale;
$data['LowerPayBand'] = $GetHoldPayMatrix->LowerPayBand;
$data['LowerGradePay'] = $GetHoldPayMatrix->LowerGradePay;
$data['LowerPayLevel'] = $GetHoldPayMatrix->LowerPayLevel;
$data['LowerPayLevelAmount'] = $GetHoldPayMatrix->LowerPayLevelAmount;
$data['LowerPayLevelAmountId'] = $GetHoldPayMatrix->LowerPayLevelAmountId;
$data['IsHold'] = 0;
$data['IsReleased'] = 1;
$data['IsDeleted'] = 0;
$data['Status'] = 1;
$data['Created_by'] = session('UserId');
$data['Created_at'] = date('Y-m-d H:i:s', time());
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
$PayMatrix = EmployeePayMatrix::insert($data);
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Cancel Employee PayMatrix with Order No.
public function cancelPayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$SanctionedOrderNo = $request->input('OrderNumber');
$EmployeeCode = $request->input('EmployeeCode');
$CancelReason = $request->input('PaymatrixCancelReason');
$values = array();
$values['IsCancelled'] = 1;
$values['CancelReason'] = $CancelReason;
$values['Updated_by'] = session('UserId');
$values['Updated_at'] = date('Y-m-d H:i:s', time());
$CancelPayMatrix = EmployeePayMatrix::where('SanctionedOrderNo', $SanctionedOrderNo)->update($values);
if ($CancelPayMatrix) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Cancel Single Pay Matrix
public function cancelSinglePayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$data = array();
$PayMatrixId = $request->input('PayMatrixId');
$CancelReason = $request->input('CancelReason');
$data['IsCancelled'] = 1;
$data['CancelReason'] = $CancelReason;
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
$cancelData = EmployeePayMatrix::where('PayMatrixId', $PayMatrixId)->update($data);
if ($cancelData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Confirm Pay Matrix
public function confirmPayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$data = array();
$PayMatrixId = $request->input('PayMatrixId');
$data['IsCancelled'] = 0;
$data['CancelReason'] = NULL;
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
$ConfirmData = EmployeePayMatrix::where('PayMatrixId', $PayMatrixId)->update($data);
if ($ConfirmData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Delete Pay Matrix
public function deletePayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$data = array();
$PayMatrixId = $request->input('PayMatrixId');
$data['IsDeleted'] = 1;
$data['Status'] = 0;
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
$deleteData = EmployeePayMatrix::where('PayMatrixId', $PayMatrixId)->update($data);
if ($deleteData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Delete Permanent Pay Matrix
public function destroyPayMatrix(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$PayMatrixId = $request->input('PayMatrixId');
$destroyData = EmployeePayMatrix::where('PayMatrixId', $PayMatrixId);
$destroyData->delete();
if ($destroyData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Submit For Approval
public function SubmitEmpPayMatrixApproval(Request $request, $ProfileId = '')
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$data = array();
$EmployeeId = $request->input('EmployeeId');
$ProfileId = $request->input('ProfileId');
$UserId = $request->input('UserId');
$ApprovalRemark = $request->input('ApprovalRemark');
// In case of Farward for review
$ModuleId = $request->input('ModuleId');
$data['ApprovalStatus'] = 0;
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
if ($ModuleId) {
$GetNoOfApproval = EmployeePayMatrix::where('EmployeeId', $EmployeeId)
->where('ApprovalLock', '1')
->where('ApprovalStatus', '=', '0')
->where('IsDeleted', '0')
->get();
foreach ($GetNoOfApproval as $key => $ApprovalCount) {
$NoOfApproval = $ApprovalCount->NoOfApproval + 1;
// Update Employee PayMatrix Table in case of Farward for review
$data['NoOfApproval'] = $NoOfApproval;
$ApprovalRequest = EmployeePayMatrix::where('EmployeeId', $EmployeeId)
->where('ApprovalLock', '1')
->where('ApprovalStatus', '0')
->where('IsDeleted', '0')
->update($data);
}
// Update Approval Table in case of Farward for review
$update_approval['ApprovalStatus'] = '3'; // Approve = 1, Reject = 2, Forward = 3.
$update_approval['ApprovalLevel'] = $NoOfApproval;
$update_approval['Updated_by'] = session('UserId');
$update_approval['Updated_at'] = date('Y-m-d H:i:s', time());
$Update_Approval_Module = Approval::where('ModuleId', $ModuleId)
->where('ProfileId', session('ProfileId'))
->where('UserId', session('UserId'))
->where('ApprovalStatus', '=', '0')
->update($update_approval);
if ($Update_Approval_Module) {
$approval = array();
$approval['ModuleId'] = $ModuleId;
$approval['EmployeeId'] = $EmployeeId;
$approval['ModuleTitle'] = 'PayMatrix';
$approval['ApprovalStatus'] = '0';
$approval['ApprovalComments'] = $ApprovalRemark;
$approval['ApprovalFrom'] = session('UserId');
$approval['ProfileId'] = $ProfileId;
$approval['UserId'] = $UserId;
//$approval['ApprovalLevel'] = '';
$approval['Created_at'] = date('Y-m-d H:i:s', time());
$approval['Created_by'] = session('UserId');
$approval['Updated_by'] = session('UserId');
$approval['Updated_at'] = date('Y-m-d H:i:s', time());
$Approval_Module_New = Approval::insert($approval);
if ($Approval_Module_New) {
return response()->json('status_success');
} else {
return response()->json('status_fail');
}
}
} else {
$data['ApprovalLock'] = 1;
$data['NoOfApproval'] = 0;
$data['ApprovalComment'] = '';
$ApprovalRequest = EmployeePayMatrix::where('EmployeeId', $EmployeeId)
->where('ApprovalStatus', '=', '0')
->where('ApprovalLock', '0')
->where('IsDeleted', '0')
->update($data);
if ($ApprovalRequest) {
$approval = array();
$approval['ModuleId'] = $this->userLib->useridGenrator();
$approval['EmployeeId'] = $EmployeeId;
$approval['ModuleTitle'] = 'PayMatrix';
$approval['ApprovalStatus'] = '0';
$approval['ApprovalComments'] = $ApprovalRemark;
$approval['ApprovalFrom'] = session('UserId');
$approval['ProfileId'] = $ProfileId;
$approval['UserId'] = $UserId;
//$approval['ApprovalLevel'] = '';
$approval['Created_at'] = date('Y-m-d H:i:s', time());
$approval['Created_by'] = session('UserId');
$approval['Updated_at'] = date('Y-m-d H:i:s', time());
$approval['Updated_by'] = session('UserId');
$Approval_Module = Approval::insert($approval);
if ($Approval_Module) {
return response()->json('status_success');
} else {
return response()->json('status_fail');
}
}
}
}
#### Approve Employee PayMatrix Detail
public function ApproveEmpPayMatrix(Request $request, $EmployeeId = '', $ModuleId = '')
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$LoginUserProfileId = session('ProfileId');
$UserId = session('UserId');
$EmployeeId = $request->input('EmployeeId');
$ModuleId = $request->input('ModuleId');
$ApprovalStatusTbl = $request->input('ApprovalStatus');
$GetNoOfApproval = EmployeePayMatrix::select('NoOfApproval')
->where('EmployeeId', $EmployeeId)
->where('ApprovalStatus', '0')
->where('ApprovalLock', '1')
//->where('NoOfApproval', '!=', '0')
->where('IsDeleted', '0')
->orderBy('id', 'DESC')
->get()
->first();
$NoOfApproval = $GetNoOfApproval->NoOfApproval + 1;
$approval = array();
$approval['ApprovalStatus'] = $ApprovalStatusTbl;
$approval['ApprovalLevel'] = $NoOfApproval;
$approval['Updated_by'] = session('UserId');
$approval['Updated_at'] = date('Y-m-d H:i:s', time());
$ApprovalUpdate = Approval::where('ModuleId', $ModuleId)->where('EmployeeId', $EmployeeId)->where('ProfileId', $LoginUserProfileId)->where('UserId', $UserId)->update($approval);
if ($ApprovalUpdate) {
// Update PayMatrix Table
$data = array();
$data['ApprovalStatus'] = 1;
$data['NoOfApproval'] = $NoOfApproval;
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
$approveData = EmployeePayMatrix::where('EmployeeId', $EmployeeId)
->where('ApprovalLock', '1')
->where('ApprovalStatus', '0')
->where('IsDeleted', '0')
->update($data);
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
}
#### Reject Employee PayMatrix Detail
public function RejectEmpPrimaryDetail(Request $request)
{
$this->UserSessionId = session('UserId');
if (empty($this->UserSessionId)) {
return redirect('/');
}
$data = array();
$EmployeeId = $request->input('EmployeeId');
$Comment = $request->input('RejectComment');
$LoginUserProfileId = session('ProfileId');
$UserId = session('UserId');
$ModuleId = $request->input('ModuleId');
$ApprovalStatusTbl = $request->input('ApprovalStatus');
$GetNoOfApproval = EmployeePayMatrix::select('NoOfApproval')
->where('EmployeeId', $EmployeeId)
->where('ApprovalStatus', '0')
->where('ApprovalLock', '1')
//->where('NoOfApproval', '!=', '0')
->where('IsDeleted', '0')
->orderBy('id', 'DESC')
->get()
->first();
$NoOfApproval = $GetNoOfApproval->NoOfApproval + 1;
// Rejected = 2,
$data['ApprovalStatus'] = $ApprovalStatusTbl;
$data['ApprovalLock'] = 0;
$data['NoOfApproval'] = $NoOfApproval;
$data['ApprovalComment'] = $Comment;
$data['Updated_by'] = session('UserId');
$data['Updated_at'] = date('Y-m-d H:i:s', time());
$approval = array();
$approval['ApprovalStatus'] = $ApprovalStatusTbl;
$approval['ApprovalLevel'] = $NoOfApproval;
$approval['ApprovalComments'] = $Comment;
$approval['Updated_by'] = session('UserId');
$approval['Updated_at'] = date('Y-m-d H:i:s', time());
$ApprovalUpdate = Approval::where('ModuleId', $ModuleId)->where('EmployeeId', $EmployeeId)->where('ProfileId', $LoginUserProfileId)->where('UserId', $UserId)->update($approval);
if ($ApprovalUpdate) {
$rejectData = EmployeePayMatrix::where('EmployeeId', $EmployeeId)
->where('ApprovalLock', '1')
->where('ApprovalStatus', '0')
->where('IsDeleted', '0')->update($data);
if ($rejectData) {
return response()->json('status_success');
} else {
return response()->json('status_failed');
}
} else {
return response()->json('status_failed');
}
}
}