Tracket issue : GWM
This commit is contained in:
parent
a832ea284c
commit
b47cd582e2
3
.gitignore
vendored
3
.gitignore
vendored
@ -10,3 +10,6 @@
|
||||
# Ignore env File here
|
||||
.env
|
||||
|
||||
/writable/pdf/forex/*
|
||||
/writable/pdf/trips/*
|
||||
|
||||
|
||||
@ -1018,8 +1018,11 @@ class PlanController extends ResourceController
|
||||
|
||||
$todayStart = date('Y-m-d 00:00:00');
|
||||
$todayEnd = date('Y-m-d 23:59:59');
|
||||
$startOfWeek = date('Y-m-d 00:00:00', strtotime('monday this week'));
|
||||
$endOfWeek = date('Y-m-d 23:59:59', strtotime('sunday this week'));
|
||||
// $startOfWeek = date('Y-m-d 00:00:00', strtotime('monday this week'));
|
||||
// $endOfWeek = date('Y-m-d 23:59:59', strtotime('sunday this week'));
|
||||
$startOfWeek = date('Y-m-d 00:00:00', strtotime('-6 days'));
|
||||
$endOfWeek = date('Y-m-d 23:59:59'); // today
|
||||
|
||||
|
||||
$typeResultToday = [];
|
||||
$typeResultWeekly = [];
|
||||
@ -1215,8 +1218,9 @@ class PlanController extends ResourceController
|
||||
$plan['flight'] = $flights;
|
||||
|
||||
//get accomodation details
|
||||
$plan['accomodation'] = $this->accomodationModel->select('c_accomodation.* , C.dropdown_value as hotel_class')
|
||||
$plan['accomodation'] = $this->accomodationModel->select('c_accomodation.*, C.dropdown_value as hotel_class, H.hotel_name')
|
||||
->join('m_dropdown C', 'C.dropdown_key = c_accomodation.class AND C.dropdown = "hotel_class"', 'left')
|
||||
->join('m_hotels H', 'H.hotel_id = c_accomodation.hotel_id', 'left')
|
||||
->where('c_accomodation.plan_id', $planId)
|
||||
->where('c_accomodation.is_active', 1)->findAll();
|
||||
|
||||
@ -1476,7 +1480,9 @@ class PlanController extends ResourceController
|
||||
public function url()
|
||||
{
|
||||
echo '<pre>';
|
||||
print_r(getPlanApproverAction(119)); die;
|
||||
$user = $this->userModel->where('email', 'pavithrakavi1100@gmail.com')->first();
|
||||
echo getUserPlanCreationRestrictionStatus($user); die;
|
||||
print_r(getPlanApproverAction(126)); die;
|
||||
|
||||
return $this->generatePlanPdf(57, true);
|
||||
die;
|
||||
|
||||
@ -51,19 +51,55 @@ if (!function_exists('checkUserExist')) {
|
||||
if (!function_exists('getUserPlanCreationRestrictionStatus')) {
|
||||
function getUserPlanCreationRestrictionStatus($user)
|
||||
{
|
||||
if($user['group_id'] != null && ( $user['first_approver'] != null || $user['second_approver'] != null || $user['third_approver'] != null ) )
|
||||
if($user['group_id'] != null)
|
||||
{
|
||||
$groupModel = new GroupModel();
|
||||
$groupData = $groupModel->find($user['group_id']);
|
||||
if($groupData)
|
||||
{
|
||||
if($groupData['domestic_policy_id'] != null && $groupData['international_policy_id'] != null)
|
||||
return 'Both Type Plan Creation Allowed';
|
||||
else if($groupData['domestic_policy_id'] != null)
|
||||
return 'Only Domestic Plan Creation Allowed';
|
||||
else if($groupData['international_policy_id'] != null)
|
||||
return 'Only International Plan Creation Allowed';
|
||||
|
||||
$domesticPolicyId = $groupData['domestic_policy_id'];
|
||||
$internationalPolicyId = $groupData['international_policy_id'];
|
||||
$policyDetailsModel = new PolicyDetailsModel();
|
||||
|
||||
if($domesticPolicyId != null && $internationalPolicyId != null)
|
||||
{
|
||||
$domesticPolicy = $policyDetailsModel->where('policy_id',$domesticPolicyId)->where('service_id', 1)->find();
|
||||
$domesticCheck = checkApproverSetOrNotBasedOnPolicy($domesticPolicy,$user);
|
||||
$internationalPolicy = $policyDetailsModel->where('policy_id',$internationalPolicyId)->where('service_id', 1)->find();
|
||||
$internationalCheck = checkApproverSetOrNotBasedOnPolicy($internationalPolicy,$user);
|
||||
|
||||
if($domesticCheck == true && $internationalCheck == true)
|
||||
return 'Both Type Plan Creation Allowed';
|
||||
else
|
||||
return 'Plan Creation Not Allowed';
|
||||
|
||||
}
|
||||
else if($domesticPolicyId != null)
|
||||
{
|
||||
$domesticPolicy = $policyDetailsModel->where('policy_id',$domesticPolicyId)->where('service_id', 1)->find();
|
||||
$check = checkApproverSetOrNotBasedOnPolicy($domesticPolicy,$user);
|
||||
$internationalPolicy = $policyDetailsModel->where('policy_id',$domesticPolicyId)->where('service_id', 1)->find();
|
||||
$check = checkApproverSetOrNotBasedOnPolicy($internationalPolicy,$user);
|
||||
|
||||
if($check == true)
|
||||
return 'Only Domestic Plan Creation Allowed';
|
||||
else
|
||||
return 'Plan Creation Not Allowed';
|
||||
|
||||
}
|
||||
else if($internationalPolicyId != null)
|
||||
{
|
||||
|
||||
$internationalPolicy = $policyDetailsModel->where('policy_id',$internationalPolicyId)->where('service_id', 1)->find();
|
||||
$check = checkApproverSetOrNotBasedOnPolicy($internationalPolicy,$user);
|
||||
|
||||
if($check == true)
|
||||
return 'Only International Plan Creation Allowed';
|
||||
else
|
||||
return 'Plan Creation Not Allowed';
|
||||
|
||||
}
|
||||
|
||||
|
||||
}else{
|
||||
return 'Plan Creation Not Allowed';
|
||||
@ -77,6 +113,51 @@ if (!function_exists('getUserPlanCreationRestrictionStatus')) {
|
||||
}
|
||||
}
|
||||
|
||||
function checkApproverSetOrNotBasedOnPolicy($Policy,$user)
|
||||
{
|
||||
// Step 1: Determine required approver levels (a1 to a4)
|
||||
$requiredApprovers = [];
|
||||
|
||||
foreach (['', '_exceptional', '_amendment'] as $type) {
|
||||
for ($i = 1; $i <= 4; $i++) {
|
||||
$key = "a{$i}{$type}_action";
|
||||
if (isset($Policy[0][$key]) && $Policy[0][$key] === 'Approval') {
|
||||
$requiredApprovers[] = $i; // add level (1 to 4)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove duplicates (in case multiple types require same level)
|
||||
$requiredApprovers = array_unique($requiredApprovers);
|
||||
|
||||
// Step 2: Check user profile for each required approver level
|
||||
$missingApprovers = [];
|
||||
|
||||
foreach ($requiredApprovers as $level) {
|
||||
$profileKey = match ($level) {
|
||||
1 => 'first_approver',
|
||||
2 => 'second_approver',
|
||||
3 => 'third_approver',
|
||||
4 => 'fourth_approver',
|
||||
};
|
||||
|
||||
if (empty($user[$profileKey]) || $user[$profileKey] == 0) {
|
||||
$missingApprovers[] = $profileKey;
|
||||
}
|
||||
}
|
||||
|
||||
// Step 3: Final check
|
||||
if (!empty($missingApprovers)) {
|
||||
// One or more approvers missing
|
||||
// echo "Missing approvers in user profile: " . implode(', ', $missingApprovers);
|
||||
return false;
|
||||
} else {
|
||||
// echo "All required approvers are set in user profile.";
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!function_exists('isDataChanged')) {
|
||||
function isDataChanged($model, $id, array $newData): bool
|
||||
{
|
||||
|
||||
@ -46,7 +46,7 @@ if (!function_exists('sendPlanCreationMail')) {
|
||||
// Skip if action is None
|
||||
if ($value['action'] === 'None') { continue; }
|
||||
// mail success check
|
||||
if ($value['is_mail_send'] === 1) { continue; }
|
||||
if ($value['is_mail_send'] == 1) { continue; }
|
||||
// skip with below condition
|
||||
if($mailOn == 'send_mail_to_only_approver' && $action['parallel_process_from'] == 1){ continue; }
|
||||
|
||||
|
||||
@ -748,7 +748,6 @@ if (!function_exists('getPlanApproverAction')) {
|
||||
->whereIn($actionField, ['Approval', 'Notification', 'None'])
|
||||
->where('is_active', 1)
|
||||
->first();
|
||||
|
||||
if ($record) {
|
||||
$user = $userModel->where('user_id', $record[$idField])->first();
|
||||
if ($user) {
|
||||
|
||||
@ -12,6 +12,7 @@ class AccomodationModel extends Model
|
||||
protected $allowedFields = [
|
||||
'plan_id',
|
||||
'destination_city',
|
||||
'hotel_id',
|
||||
'hotel_name',
|
||||
'class',
|
||||
'checkin_date',
|
||||
|
||||
@ -74,6 +74,7 @@ class ReportsModel extends Model
|
||||
GROUP BY plan_id
|
||||
) AS al ON m_plan.plan_id = al.plan_id
|
||||
|
||||
|
||||
WHERE
|
||||
mts.is_active = 1
|
||||
AND mts.status_value = 'Approved'
|
||||
@ -415,8 +416,12 @@ class ReportsModel extends Model
|
||||
|
||||
JOIN m_plan mp ON cf.plan_id = mp.plan_id
|
||||
|
||||
WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)
|
||||
AND cf.created_on < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY)
|
||||
WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
|
||||
AND cf.created_on < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
|
||||
|
||||
|
||||
-- WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)
|
||||
-- AND cf.created_on < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY)
|
||||
|
||||
-- previous week
|
||||
-- WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 7) DAY)
|
||||
@ -482,8 +487,11 @@ class ReportsModel extends Model
|
||||
|
||||
JOIN m_plan mp ON ca.plan_id = mp.plan_id
|
||||
|
||||
WHERE ca.created_on >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)
|
||||
AND ca.created_on < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY)
|
||||
WHERE ca.created_on >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
|
||||
AND ca.created_on < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
|
||||
|
||||
-- WHERE ca.created_on >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)
|
||||
-- AND ca.created_on < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY)
|
||||
|
||||
-- previous week
|
||||
-- WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 7) DAY)
|
||||
@ -547,8 +555,11 @@ class ReportsModel extends Model
|
||||
|
||||
JOIN m_plan mp ON cf.plan_id = mp.plan_id
|
||||
|
||||
WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)
|
||||
AND cf.created_on < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY)
|
||||
WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
|
||||
AND cf.created_on < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
|
||||
|
||||
-- WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)
|
||||
-- AND cf.created_on < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY)
|
||||
|
||||
-- previous week
|
||||
-- WHERE cf.created_on >= DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 7) DAY)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user