myLogger = \Config\Services::mylogger(); $this->dropdownModel = new DropdownModel(); $this->departmentModel = new DepartmentModel(); $this->travelStatusModel = new TravelStatusModel(); $this->countryModel = new CountryModel(); $this->airportCodeModel = new AirportCodeModel(); $this->trainStationsModel = new TrainStationsModel(); $this->userModel = new UserModel(); $this->organizationModel = new OrganizationModel(); $this->groupModel = new GroupModel(); $this->policyModel = new PolicyModel(); $this->policyDetailsModel = new PolicyDetailsModel(); $this->serviceModel = new ServiceModel(); $this->forexPerdiemModel = new ForexPerdiemModel(); $this->hotelModel = new HotelModel(); $this->costCenterModel = new CostCenterModel(); $this->airlineModel = new AirlineModel(); $this->mailTemplateModel = new MailTemplateModel(); } public function getDropdownMaster() { $data = $this->dropdownModel->select('dropdown')->groupBy('dropdown')->findAll(); if (!$data) { return $this->failNotFound('No data found'); } if ($data) { foreach ($data as &$val) { $temp[$val['dropdown']] = $this->dropdownModel->where('dropdown', $val['dropdown'])->where('is_active',1)->findAll(); } } return $this->respond(['status' => 200,'message' => 'success','data' => $temp]); } public function getTravelStatusMaster() { $data = $this->travelStatusModel->where('is_active',1)->findAll(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function getcountryMaster() { $data = $this->countryModel->where('is_active',1)->findAll(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function getAirlineMaster() { $data = $this->airlineModel->findAll(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function getAirportCodeMaster() { $type = $this->request->getGet('trip_type'); // Build the query $query = $this->airportCodeModel->where('is_active', 1); if ($type == 1) { $query->where('Country_Code', 'IN'); } // Execute the query and get the result $data = $query->findAll(); // Check if data exists if (empty($data)) { return $this->failNotFound('No data found'); } // Return success response return $this->respond([ 'status' => 200, 'message' => 'success', 'data' => $data ]); } public function getTrainCodeMaster() { $data = $this->trainStationsModel->where('is_active',1)->findAll(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function getFlightAndTrainClass() { $trip_type = $this->request->getGet('trip_type'); $user_id = $this->request->getVar('user_id'); $user = $this->userModel->where('user_id', $user_id)->first(); $groupData = $this->groupModel->find($user['group_id']); if($groupData) { if($trip_type == 1) { $policyId = $groupData['domestic_policy_id'];}else{ $policyId = $groupData['international_policy_id'];} if($policyId != null) { $minFlightRow = $this->policyDetailsModel->where('policy_id', $policyId)->where('service_id', 1)->get()->getRow(); $minTrainRow = $this->policyDetailsModel->where('policy_id', $policyId)->where('service_id', 2)->get()->getRow(); $minHotelRow = $this->policyDetailsModel->where('policy_id', $policyId)->where('service_id', 5)->get()->getRow(); $minFlightClassKey = $minFlightRow ? $minFlightRow->class : null; $minTrainClassKey = $minTrainRow ? $minTrainRow->class : null; $minHotelClassKey = $minHotelRow ? $minHotelRow->class : null; } //flight $allFlightClass = $this->dropdownModel->where('dropdown', 'flight_class')->orderBy('dropdown_key','ASC')->findAll(); $minFlightClassKey = $minFlightClassKey ?? 0; $data['flight_class'] = []; foreach ($allFlightClass as $key => $value) { if((int)$value['dropdown_key'] >= (int)$minFlightClassKey){ $value['is_allowed'] = 'yes'; array_push($data['flight_class'] , $value); }else{ $value['is_allowed'] = 'No'; array_push($data['flight_class'] , $value); } } //train $allTrainClass = $this->dropdownModel->where('dropdown', 'train_class')->orderBy('dropdown_key','ASC')->findAll(); $minTrainClassKey = $minTrainClassKey ?? 0; $data['train_class'] = []; foreach ($allTrainClass as $key => $value) { if((int)$value['dropdown_key'] >= (int)$minTrainClassKey){ $value['is_allowed'] = 'yes'; array_push($data['train_class'] , $value); }else{ $value['is_allowed'] = 'No'; array_push($data['train_class'] , $value); } } //hotel $allHotelClass = $this->dropdownModel->where('dropdown', 'hotel_class')->orderBy('dropdown_key','ASC')->findAll(); $minHotelClassKey = $minHotelClassKey ?? 0; $data['hotel_class'] = []; foreach ($allHotelClass as $key => $value) { if((int)$value['dropdown_key'] >= (int)$minHotelClassKey){ $value['is_allowed'] = 'yes'; array_push($data['hotel_class'] , $value); }else{ $value['is_allowed'] = 'No'; array_push($data['hotel_class'] , $value); } } } if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } // Department crud public function getDepartmentList() { $for = $this->request->getVar('for'); if (isset($for) && $for === 'table_view') { $data = $this->dropdownModel->where('dropdown','plan_functional_department')->findAll(); } else { $data = $this->dropdownModel->where('dropdown','plan_functional_department')->where('is_active', 1)->findAll(); } if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function createDepartment() { $data = $this->request->getJSON(true); $data['dropdown'] = 'plan_functional_department'; $data['is_active'] = 1; $existData = $this->dropdownModel->where('dropdown','plan_functional_department')->findAll(); $data['dropdown_key'] = count($existData) + 1; if (!$this->dropdownModel->insert($data)) { return $this->failValidationErrors($this->dropdownModel->errors()); } return $this->respondCreated([ 'status' => 201, 'message' => 'Department created successfully' ]); } public function findDepartment() { $id = $this->request->getGet('id'); $data = $this->dropdownModel->where('id',$id)->find(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function updateDepartment($id = null) { $data = $this->request->getJSON(true); if (!$this->dropdownModel->find($id)) { return $this->failNotFound('Department not found'); } if (!$this->dropdownModel->update($id, $data)) { return $this->failValidationErrors($this->dropdownModel->errors()); } return $this->respond([ 'status' => 200, 'message' => 'Department updated successfully' ]); } // Purpose of travel crud public function getPurposeOfTravelList() { $for = $this->request->getVar('for'); if (isset($for) && $for === 'table_view') { $data = $this->dropdownModel->where('dropdown','plan_purpose_of_travel')->findAll(); } else { $data = $this->dropdownModel->where('dropdown','plan_purpose_of_travel')->where('is_active', 1)->findAll(); } if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function createPurposeOfTravel() { $data = $this->request->getJSON(true); $data['dropdown'] = 'plan_purpose_of_travel'; $data['is_active'] = 1; $existData = $this->dropdownModel->where('dropdown','plan_purpose_of_travel')->findAll(); $data['dropdown_key'] = count($existData) + 1; if (!$this->dropdownModel->insert($data)) { return $this->failValidationErrors($this->dropdownModel->errors()); } return $this->respondCreated([ 'status' => 201, 'message' => 'Department created successfully' ]); } public function findPurposeOfTravel() { $id = $this->request->getGet('id'); $data = $this->dropdownModel->where('id',$id)->find(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function updatePurposeOfTravel($id = null) { $data = $this->request->getJSON(true); if (!$this->dropdownModel->find($id)) { return $this->failNotFound('Department not found'); } if (!$this->dropdownModel->update($id, $data)) { return $this->failValidationErrors($this->dropdownModel->errors()); } return $this->respond([ 'status' => 200, 'message' => 'Department updated successfully' ]); } // Cost center crud public function getCostCenterMaster() { $for = $this->request->getVar('for'); if (isset($for) && $for === 'table_view') { $data = $this->costCenterModel->findAll(); } else { $data = $this->costCenterModel->where('is_active', 1)->findAll(); } if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function createCostCenter() { $data = $this->request->getJSON(true); if (!$this->costCenterModel->insert($data)) { return $this->failValidationErrors($this->costCenterModel->errors()); } return $this->respondCreated([ 'status' => 201, 'message' => 'Cost Center created successfully' ]); } public function findCostCenter() { $id = $this->request->getGet('cost_center_id'); $data = $this->costCenterModel->where('cost_center_id',$id)->find(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function updateCostCenter($id = null) { $data = $this->request->getJSON(true); if (!$this->costCenterModel->find($id)) { return $this->failNotFound('Cost Center not found'); } if (!$this->costCenterModel->update($id, $data)) { return $this->failValidationErrors($this->costCenterModel->errors()); } return $this->respond([ 'status' => 200, 'message' => 'Cost Center updated successfully' ]); } // Forex crud public function getForexPerdiemList() { $for = $this->request->getVar('for'); if (isset($for) && $for === 'table_view') { $data = $this->forexPerdiemModel->findAll(); } else { $data = $this->forexPerdiemModel->where('is_active', 1)->findAll(); } if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function createForexPerdiem() { try { $data = $this->request->getJSON(true); if (!$this->forexPerdiemModel->insert($data)) { return $this->failValidationErrors($this->forexPerdiemModel->errors()); } return $this->respondCreated([ 'status' => 201, 'message' => 'Forex Perdiem created successfully' ]); } catch (\CodeIgniter\Database\Exceptions\DatabaseException $e) { if (strpos($e->getMessage(), 'Duplicate entry') !== false) { return $this->respond([ 'status' => 404, 'message' => 'Duplicate entry' ],404); } // For other DB-related exceptions return $this->failServerError($e->getMessage()); } } public function findForexPerdiem() { $id = $this->request->getGet('forex_perdiem_id'); $data = $this->forexPerdiemModel->where('forex_perdiem_id',$id)->find(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function updateForexPerdiem($id = null) { try{ $data = $this->request->getJSON(true); if (!$this->forexPerdiemModel->find($id)) { return $this->failNotFound('Forex Perdiem not found'); } if (!$this->forexPerdiemModel->update($id, $data)) { return $this->failValidationErrors($this->forexPerdiemModel->errors()); } return $this->respond([ 'status' => 200, 'message' => 'Forex Perdiem updated successfully' ]); } catch (\CodeIgniter\Database\Exceptions\DatabaseException $e) { if (strpos($e->getMessage(), 'Duplicate entry') !== false) { return $this->respond([ 'status' => 404, 'message' => 'Duplicate entry' ]); } // For other DB-related exceptions return $this->failServerError($e->getMessage()); } } // Hotels crud public function getHotels() { $for = $this->request->getVar('for'); if (isset($for) && $for === 'table_view') { $hotels = $this->hotelModel->select('m_hotels.* , C.country_name') ->join('m_country C', 'C.country_code = m_hotels.country_code', 'left') ->findAll(); } else { $hotels = $this->hotelModel->select('m_hotels.* , C.country_name') ->join('m_country C', 'C.country_code = m_hotels.country_code', 'left') ->where('m_hotels.is_active', 1) ->findAll(); } return $this->response->setJSON([ 'status' => 200, 'message' => 'Hotel list fetched successfully', 'data' => $hotels ]); } public function createHotels() { $data = $this->request->getJSON(true); if (!$this->hotelModel->insert($data)) { return $this->failValidationErrors($this->hotelModel->errors()); } return $this->respondCreated([ 'status' => 201, 'message' => 'Hotels created successfully' ]); } public function findHotels() { $id = $this->request->getGet('hotel_id'); $data = $this->hotelModel->where('hotel_id',$id)->find(); if (!$data) { return $this->failNotFound('No data found'); } return $this->respond(['status' => 200,'message' => 'success','data' => $data]); } public function updateHotels($id = null) { $data = $this->request->getJSON(true); if (!$this->hotelModel->find($id)) { return $this->failNotFound('Hotels not found'); } if (!$this->hotelModel->update($id, $data)) { return $this->failValidationErrors($this->hotelModel->errors()); } return $this->respond([ 'status' => 200, 'message' => 'Hotels updated successfully' ]); } public function forex_signature_upload() { $data = $this->request->getPost(); // Handle file upload $file = $this->request->getFile('signature'); if ($file && $file->isValid() && !$file->hasMoved()) { $newName = $file->getRandomName(); // Generate a unique name // $uploadPath = WRITEPATH.'uploads/signature'; $uploadPath = FCPATH.'public/assets/images/signature'; // print_r( $uploadPath); die; // Move file to the specified directory $file->move($uploadPath, $newName); // Save file path in database $path = $uploadPath . '/' . $newName; } else { return $this->failValidationErrors(['passport_document' => 'Invalid file upload']); } try { $this->mailTemplateModel->set(['image_location' => $newName])->where('template_name','forex')->update(); return $this->respondCreated([ 'status' => 201, 'message' => 'organization created successfully', 'data' => $data ]); } catch (\Exception $e) { return $this->failServerError('Failed to create organization: ' . $e->getMessage()); } } // public function getForexSignaturePath() // { // $data = $this->mailTemplateModel->where('template_name','forex')->first(); // return $this->respond([ // 'status' => 200, // 'message' => 'success', // 'data' => $data // ]); // } public function getForexSignaturePath() { $data = $this->mailTemplateModel->where('template_name', 'forex')->first(); if (!$data || empty($data['image_location'])) { return $this->respond([ 'status' => 404, 'message' => 'Image not found', 'url' => null ]); } // If the DB stores only the filename, adjust accordingly $fileName = basename($data['image_location']); $imageUrl = base_url('public/assets/images/signature/' . $fileName); // Add both the URL and ready-made HTML tag $data['image_url'] = $imageUrl; $data['image_tag'] = 'Signature'; return $this->respond([ 'status' => 200, 'message' => 'success', 'url' => $imageUrl ]); } }