select( 'm_plan.*, CONCAT_WS(" ", U.first_name, U.last_name) AS user_name, U.employee_code as employee_code, CONCAT_WS(" ", C.first_name, C.last_name) AS plan_created_by, CONCAT_WS(" ", T.first_name, T.last_name) AS traveller_name, TS.status_value, TT.dropdown_value as trip_type_value, IB.dropdown_value as is_billable_value, POT.dropdown_value as purpose_of_travel_value, FD.dropdown_value as functional_department_value, Dep.name as cost_center_value' ) ->join('m_users U', 'U.user_id = m_plan.user_id ', 'left') ->join('m_users C', 'C.user_id = m_plan.created_by ', 'left') ->join('m_traveller T', 'T.traveller_id = m_plan.traveller_id ', 'left') ->join('m_travel_statuses TS', 'TS.id = m_plan.status ', 'left') ->join('m_dropdown TT', 'TT.dropdown_key = m_plan.trip_type AND TT.dropdown = "plan_trip_type"', 'left') ->join('m_dropdown IB', 'IB.dropdown_key = m_plan.is_billable AND IB.dropdown = "plan_is_billable"', 'left') ->join('m_dropdown POT', 'POT.dropdown_key = m_plan.purpose_of_travel AND POT.dropdown = "plan_purpose_of_travel"', 'left') ->join('m_dropdown FD', 'FD.dropdown_key = m_plan.functional_department AND FD.dropdown = "plan_functional_department"', 'left') ->join('m_department Dep', 'Dep.department_id = m_plan.cost_center_id ', 'left') ->where('m_plan.is_active', 1)->where('m_plan.org_id', $org_id); if($getBy == 'ALL' || $getBy == null) { return $data->findAll(); } else if($getBy == 'USER') { // return $data->where('m_plan.created_by', $user_id)->findAll(); return $data ->groupStart() ->where('m_plan.created_by', $user_id) ->orWhere('m_plan.user_id', $user_id) ->groupEnd() ->findAll(); } else if($getBy == 'PLAN') { return $data->where('m_plan.plan_id', $planIds)->first(); } else if($getBy == 'APPROVAL') { return $data->whereIn('m_plan.plan_id', $planIds)->findAll(); } else if($getBy == 'AGENT') { $data->whereIn('status',[3,5,6]); return $data->whereIn('m_plan.plan_id', $planIds)->findAll(); } } // Insert a new travel plan public function insertPlan($data) { return $this->insert($data); } // Update an existing plan public function updatePlan($planId, $data) { return $this->where('plan_id', $planId)->set($data)->update(); } // Soft delete (deactivate) a plan public function deactivatePlan($planId) { return $this->where('plan_id', $planId)->set(['is_active' => 0])->update(); } }