diff --git a/.gitignore b/.gitignore index be97383..1128019 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ # Ignore env File here .env +/writable/pdf/forex/* +/writable/pdf/trips/* + diff --git a/app/Controllers/PlanController.php b/app/Controllers/PlanController.php index fb7f86f..4f2f580 100644 --- a/app/Controllers/PlanController.php +++ b/app/Controllers/PlanController.php @@ -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 '
';
- 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;
diff --git a/app/Helpers/common_helper.php b/app/Helpers/common_helper.php
index d02d7b9..4c66aff 100644
--- a/app/Helpers/common_helper.php
+++ b/app/Helpers/common_helper.php
@@ -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
{
diff --git a/app/Helpers/mail_helper.php b/app/Helpers/mail_helper.php
index b6da284..fef5a8e 100644
--- a/app/Helpers/mail_helper.php
+++ b/app/Helpers/mail_helper.php
@@ -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; }
diff --git a/app/Helpers/status_helper.php b/app/Helpers/status_helper.php
index e69d44d..4b8005c 100644
--- a/app/Helpers/status_helper.php
+++ b/app/Helpers/status_helper.php
@@ -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) {
diff --git a/app/Models/AccomodationModel.php b/app/Models/AccomodationModel.php
index 0f4a43c..120bba2 100644
--- a/app/Models/AccomodationModel.php
+++ b/app/Models/AccomodationModel.php
@@ -12,6 +12,7 @@ class AccomodationModel extends Model
protected $allowedFields = [
'plan_id',
'destination_city',
+ 'hotel_id',
'hotel_name',
'class',
'checkin_date',
diff --git a/app/Models/ReportsModel.php b/app/Models/ReportsModel.php
index cec9530..61fe497 100644
--- a/app/Models/ReportsModel.php
+++ b/app/Models/ReportsModel.php
@@ -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)