MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/ntc_cafsinfotech_in_bk/application/controllers/Module_setting.php
<?php
/**********************************************************
	   Filename: Module Setting
	Description: Module Setting for creating new Dynamic module and adding main menu.
		 Author: udhayakumar Anandhan
	 Created on: ‎‎26 ‎November ‎2018
	Reviewed by:
	Reviewed on:
	Approved by:
	Approved on:
	-------------------------------------------------------
	Modification Details
	Changed by:
	Change Info:
	-------------------------------------------------------
***********************************************************/
if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Secure_Controller.php");
class Module_setting  extends Secure_Controller{
 
	public function __construct(){
		parent::__construct('module_setting');
	}
	
	public function index(){
		if(!$this->Appconfig->isAppvalid()){
			redirect('config');
		}
		$data['table_headers']=$this->xss_clean(get_form_setting_headers());
		$this->load->view('module_setting/manage',$data);
	}
	
	/* ==============================================================*/
	/* =================== MENU OPEARTION - START ===================*/
	/* ==============================================================*/
	//MENU VIEW OPEARTION
	public function menu_view($prime_module_id =-1){
		$role_info   = $this->db->query("CALL sp_a_run ('SELECT','SELECT * FROM `cw_role` where trans_status = 1')");
		$role_result = $role_info->result();
		$role_info->next_result();
		$menu_for[""] = "---- Menu For ----";
		foreach($role_result as $for){
			$role_id   = $for->prime_role_id;
			$role_name = $for->role_name;
			$menu_for[$role_id] = $role_name;
		}
		$data['menu_for']  = $menu_for;
		
		$menu_list_rslt = $this->view_menu_list();
		$menu_list_rslt = json_decode($menu_list_rslt);
		$data['menu_list'] =  $menu_list_rslt->menu_list;
		
		$cw_main_menu_info   = $this->db->query("CALL sp_a_run ('SELECT','SELECT * FROM `cw_main_menu` where trans_status = 1')");
		$cw_main_menu_result = $cw_main_menu_info->result();
		$cw_main_menu_info->next_result();
		$menu_array = array('1','2');
		$main_menu[""] = "---- Main Menu ----";
		foreach($cw_main_menu_result as $menu){
			$prime_menu_id   = $menu->prime_menu_id;
			$menu_name = $menu->menu_name;
			if(!in_array($prime_menu_id, $menu_array)){
				$main_menu[$prime_menu_id] = $menu_name;
			}
		}
		$data['main_menu']  = $main_menu;
		
		$menu_list_rslt = $this->view_sub_menu_list();
		$menu_list_rslt = json_decode($menu_list_rslt);
		$data['sub_menu_list'] = $menu_list_rslt->sub_menu_list;
		
		$menu_sort_order_rslt = $this->menu_sort_order();
		$menu_sort_order_rslt = json_decode($menu_sort_order_rslt);
		$data['menu_sort_order_list'] = $menu_sort_order_rslt;
		$this->load->view("module_setting/menu_view",$data);
	}
	
	//SAVE MENU VIEW OPEARTION
	public function save_menu(){
		$prime_menu_id = $this->input->post('prime_menu_id');
		$menu_name     = $this->input->post('menu_name');
		$menu_for      = implode(",",$this->input->post('menu_for[]'));
		$menu_for      = ltrim($menu_for,',');
		$logged_id        = $this->session->userdata('logged_id');
		$date          = date("Y-m-d h:i:s");
		
		$is_exist_qry  = 'SELECT * FROM `cw_main_menu` where menu_name = "'.$menu_name.'"';
		$is_exist_data = $this->db->query("CALL sp_a_run ('SELECT','$is_exist_qry')");
		$exist_count   = $is_exist_data->num_rows();
		$is_exist_data->next_result();
		$sts = false;
		$msg = "";
		if((int)$exist_count === 0){
			$count_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT count(*) as rslt_count FROM `cw_main_menu` where trans_status = 1')");
			$count_result = $count_data->result();
			$count_data->next_result();
			$menu_sort = (int)$count_result[0]->rslt_count + 1;
			if((int)$prime_menu_id === 0){
				$save_qry  = 'INSERT INTO cw_main_menu (menu_name, menu_for, menu_sort, trans_created_by, trans_created_date) VALUES ("'.$menu_name.'","'.$menu_for.'","'.$menu_sort.'","'.$logged_id.'","'.$date.'")';
				$this->db->query("CALL sp_a_run ('RUN','$save_qry')");
				$sts = true;
				$msg = "Menu added successfully";
			}else{
				$save_qry  = 'UPDATE  cw_main_menu SET menu_name = "'.$menu_name.'",menu_for = "'.$menu_for.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where prime_menu_id = "'.$prime_menu_id.'"';
				$this->db->query("CALL sp_a_run ('RUN','$save_qry')");
				$sts = true;
				$msg = "Menu updated successfully";
			}
		}else{
			if((int)$prime_menu_id !== 0){
				$save_qry  = 'UPDATE  cw_main_menu SET menu_name = "'.$menu_name.'",menu_for = "'.$menu_for.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where prime_menu_id = "'.$prime_menu_id.'"';
				$this->db->query("CALL sp_a_run ('RUN','$save_qry')");
				$sts = true;
				$msg = "Menu updated successfully";
			}else{
				$sts = false;
				$msg = "Menu already exist";
			}
		}
		
		$menu_list_rslt = $this->view_menu_list();
		$menu_list_rslt = json_decode($menu_list_rslt);
		$menu_list      = $menu_list_rslt->menu_list;		
		echo json_encode(array('success' => $sts, 'msg' => $msg, 'menu_list' => $menu_list));
	}
	//MENU VIEW_MENU_LIST
	public function view_menu_list(){
		$menu_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT * FROM `cw_main_menu` where trans_status = 1 order by abs(menu_sort) asc')");
		$menu_result = $menu_data->result();
		$menu_data->next_result();
		
		$li_list = "";
		$count = 0;
		foreach($menu_result as $menu){
			$count++;
			$prime_menu_id = $menu->prime_menu_id;
			$menu_name     = $menu->menu_name;
			$li_id = "li_".$prime_menu_id;
			$a_id  = "a_".$prime_menu_id."_$count";
			$li_list .= "<li class='ui-state-default' id='$li_id'>
					<table style='width:100%;'>
						<tr>
							<td style='font-weight:bold'>
								<label>$menu_name</label><br/>						
							</td>
							<td style='text-align:right;'>
								<a id='$a_id' style='color:#1883E9;' onclick=get_view_menu_list('$prime_menu_id','$a_id');><i class='fa fa-pencil-square-o fa-2x' aria-hidden='true'></i></a>
							</td>
						</tr>
					</table>
				</li>";
		}
		$menu_list = "<p style='color:#1883E9;text-align:center;'><i class='fa fa-hand-rock-o fa-2x' aria-hidden='true'></i> Drag and drop for align field postion</p><ul id='view_sortable' class='sortable'>$li_list</ul>";
		return json_encode(array('menu_list' => $menu_list));
	}
	
	// MENU SORT
	public function update_menu_sortorder(){
		$view_idsInOrder = $this->input->post('view_idsInOrder');
		$logged_id          = $this->session->userdata('logged_id');
		$sort_order = 0;
		foreach($view_idsInOrder as $order){
			if($order){
				$sort_order++;
				$order = explode("_",$order);
				$prime_menu_id = $order[1];
				$upd_qry  = 'UPDATE  cw_main_menu SET menu_sort = "'.$sort_order.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where prime_menu_id = "'.$prime_menu_id.'"';
				$this->db->query("CALL sp_a_run ('RUN','$upd_qry')");
			}
		}
		echo json_encode(array('success' => TRUE, 'message' => "Sort position updated to database"));
	}
	
	//MENU EDIT GET INFORMATION
	public function get_view_menu_list(){
		$prime_menu_id = $this->input->post('prime_menu_id');
		$menu_qry  = 'SELECT * FROM `cw_main_menu` where prime_menu_id = "'.$prime_menu_id.'"';
		$menu_data = $this->db->query("CALL sp_a_run ('SELECT','$menu_qry')");
		$menu_result = $menu_data->result();
		$menu_data->next_result();
		echo json_encode(array('success' => TRUE, 'menu_result' => $menu_result[0]));
	}
	
	// SUB MENU SAVE
	public function save_sub_menu(){
		$prime_sub_menu_id = $this->input->post('prime_sub_menu_id');
		$main_menu         = $this->input->post('main_menu');
		$sub_menu_name     = $this->input->post('sub_menu_name');
		$logged_id         = $this->session->userdata('logged_id');
		$date              = date("Y-m-d h:i:s");
		
		$is_exist_qry  = 'SELECT * FROM `cw_sub_menu` where map_main_menu = "'.$main_menu.'" and sub_menu_name = "'.$sub_menu_name.'"';
		$is_exist_data = $this->db->query("CALL sp_a_run ('SELECT','$is_exist_qry')");
		$exist_count   = $is_exist_data->num_rows();
		$is_exist_data->next_result();
		$sts = false;
		$msg = "";
		if((int)$exist_count === 0){
			$count_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT count(*) as rslt_count FROM `cw_sub_menu` where trans_status = 1')");
			$count_result = $count_data->result();
			$count_data->next_result();
			$menu_sort = (int)$count_result[0]->rslt_count + 1;
			if((int)$prime_sub_menu_id === 0){
				$save_qry  = 'INSERT INTO cw_sub_menu (map_main_menu, sub_menu_name, sub_menu_sort, trans_created_by, trans_created_date) VALUES ("'.$main_menu.'","'.$sub_menu_name.'","'.$menu_sort.'","'.$logged_id.'","'.$date.'")';
				$this->db->query("CALL sp_a_run ('RUN','$save_qry')");
				$sts = true;
				$msg = "Menu added successfully";
			}else{
				$save_qry  = 'UPDATE  cw_sub_menu SET map_main_menu = "'.$main_menu.'",sub_menu_name = "'.$sub_menu_name.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where prime_sub_menu_id = "'.$prime_sub_menu_id.'"';
				$this->db->query("CALL sp_a_run ('RUN','$save_qry')");
				$sts = true;
				$msg = "Menu updated successfully";
			}
		}else{
			if((int)$prime_sub_menu_id !== 0){
				$save_qry  = 'UPDATE  cw_sub_menu SET map_main_menu = "'.$main_menu.'",sub_menu_name = "'.$sub_menu_name.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where prime_sub_menu_id = "'.$prime_sub_menu_id.'"';
				$this->db->query("CALL sp_a_run ('RUN','$save_qry')");
				$sts = true;
				$msg = "Menu updated successfully";
			}else{
				$sts = false;
				$msg = "Menu already exist";
			}
		}
		$menu_list_rslt = $this->view_sub_menu_list();
		$menu_list_rslt = json_decode($menu_list_rslt);
		$sub_menu_list      = $menu_list_rslt->sub_menu_list;
		echo json_encode(array('success' => $sts, 'msg' => $msg, 'sub_menu_list' => $sub_menu_list));
	}
	// SUB MENU LIST
	public function view_sub_menu_list(){
		$menu_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT cw_sub_menu.prime_sub_menu_id,menu_name,sub_menu_name FROM cw_sub_menu left join cw_main_menu on cw_main_menu.prime_menu_id = cw_sub_menu.map_main_menu where cw_sub_menu.trans_status = 1 order by abs(cw_sub_menu.sub_menu_sort) asc')");
		$menu_result = $menu_data->result();
		$menu_data->next_result();
		
		$li_list = "";
		$count = 0;
		foreach($menu_result as $menu){
			$count++;
			$prime_menu_id = $menu->prime_sub_menu_id;
			$menu_name     = $menu->menu_name;
			$sub_menu_name = $menu->sub_menu_name;
			$li_id = "li_".$prime_menu_id;
			$a_id  = "a_".$prime_menu_id."_$count";
			$li_list .= "<li class='ui-state-default' id='$li_id'>
					<table style='width:100%;'>
						<tr>
							<td style='font-weight:bold'>
								<label>$sub_menu_name</label><br/>
								<span style='font-size:13px;font-weight:normal;color:#999999;'> $menu_name </span>
							</td>
							<td style='text-align:right;'>
								<a id='$a_id' style='color:#1883E9;' onclick=get_view_sub_menu_list('$prime_menu_id','$a_id');><i class='fa fa-pencil-square-o fa-2x' aria-hidden='true'></i></a>
							</td>
						</tr>
					</table>
				</li>";
		}
		$sub_menu_list = "<p style='color:#1883E9;text-align:center;'><i class='fa fa-hand-rock-o fa-2x' aria-hidden='true'></i> Drag and drop for align field postion</p><ul id='sub_menu_sortable' class='sortable'>$li_list</ul>";
		return json_encode(array('sub_menu_list' => $sub_menu_list));
	}
	// SUB MENU SORT
	public function update_sub_menu_sortorder(){
		$view_idsInOrder = $this->input->post('view_idsInOrder');
		$logged_id          = $this->session->userdata('logged_id');
		$sort_order = 0;
		foreach($view_idsInOrder as $order){
			if($order){
				$sort_order++;
				$order = explode("_",$order);
				$prime_menu_id = $order[1];
				$upd_qry  = 'UPDATE  cw_sub_menu SET sub_menu_sort = "'.$sort_order.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where prime_sub_menu_id = "'.$prime_menu_id.'"';
				$this->db->query("CALL sp_a_run ('RUN','$upd_qry')");
			}
		}
		echo json_encode(array('success' => TRUE, 'message' => "Sort position updated to database"));
	}
	
	//SBU MENU EDIT GET INFORMATION
	public function get_view_sub_menu_list(){
		$prime_menu_id = $this->input->post('prime_menu_id');
		$menu_qry  = 'SELECT * FROM `cw_sub_menu` where prime_sub_menu_id = "'.$prime_menu_id.'"';
		$menu_data = $this->db->query("CALL sp_a_run ('SELECT','$menu_qry')");
		$menu_result = $menu_data->result();
		$menu_data->next_result();
		echo json_encode(array('success' => TRUE, 'sub_menu_result' => $menu_result[0]));
	}
	//MENU LIST ORDER VIEW 08MARCH2019
	public function menu_sort_order(){
		$menu_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT * from cw_main_menu left join cw_sub_menu on cw_sub_menu.map_main_menu = cw_main_menu.prime_menu_id where cw_main_menu.trans_status = 1 and prime_menu_id not in (1,2) group by prime_menu_id ORDER BY menu_sort asc')");//no admin and super admin
		$menu_result = $menu_data->result();
		$menu_data->next_result();
		$menu_sort_order = "<p style='color:#1883E9;text-align:center;'><i class='fa fa-hand-rock-o fa-2x' aria-hidden='true'></i> Drag and drop for align field postion</p>";
		$id_array = array();
		foreach($menu_result as $menu){
			$prime_menu_id = $menu->prime_menu_id;
			$menu_name     = $menu->menu_name;
			$sub_menu_qry  = 'select * from `cw_modules` left join cw_sub_menu on cw_sub_menu.prime_sub_menu_id =  cw_modules.sub_menu_id  where cw_modules.trans_status = 1 and cw_modules.show_module=1 and menu_id = "'.$prime_menu_id.'" order by abs(cw_modules.sort)';
			$module_name_data   = $this->db->query("CALL sp_a_run ('SELECT','$sub_menu_qry')");
			$module_name_result = $module_name_data->result();
			$module_name_data->next_result();
			$ul_li    = "";
			$input_li = "";
			foreach($module_name_result as $module){
				$module_id     = $module->module_id;
				$module_name   = $module->module_name;
				$sub_menu_name = $module->sub_menu_name;
				if($sub_menu_name){
					$sub_menu_name = "(".$sub_menu_name.")";
				}
				$li_id     = "li_".$module_id;
				$input_li .=  "<li class='ui-state-default' id='$li_id'>
								<table style='width:100%;'>
									<tr>
										<td style='font-weight:bold'>
											<span style='font-size:13px;font-weight:bold;'>
												$module_name 
											</span>
											<span style='font-size:13px;font-weight:normal;color:#999999;'>
												$sub_menu_name
											</span>
										</td>
									</tr>
								</table>
							</li>";
			}
			$ul_id      = "menu_sort_order_".$prime_menu_id;
			$id_array[] = $ul_id;
			$ul_li      = "<ul class='sortable' id=$ul_id>$input_li</ul>";
			$menu_sort_order .= "<div style='font-size: inherit; box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2); background-color: #FFFFFF; border: 0px; border-radius: 2px;padding:8px;margin-bottom:10px;'>
									<h4 style='color:#1883E9;'>$menu_name</h4>
									$ul_li
								</div>";
		}
		return json_encode(array('menu_sort_order' => $menu_sort_order,'id_array'=>$id_array));
	}
	
	//MENU LIST ORDER SORT UPDATE 08MARCH2019
	public function update_menu_order(){
		$idsInOrder = $this->input->post('idsInOrder');
		$logged_id  = $this->session->userdata('logged_id');
		$date       = date("Y-m-d H:i:s");
		
		$sort_order = 0;
		foreach($idsInOrder as $order){
			if($order){
				$sort_order++;
				//$module_id = str_replace("li_","",$order); //replace
				$prefix = 'li_';
				if(substr($order, 0, strlen($prefix)) == $prefix){
					$module_id = substr($order, strlen($prefix));
				}
				$upd_qry  = 'UPDATE cw_modules SET sort = "'.$sort_order.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where module_id = "'.$module_id.'"';
				$this->db->query("CALL sp_a_run ('RUN','$upd_qry')");
			}
		}
		echo json_encode(array('success' => TRUE, 'message' => "Menu name is successfully sorted."));
	}
	/* ==============================================================*/
	/* ==================== MENU OPEARTION - END ====================*/
	/* ==============================================================*/
	
	/* ==============================================================*/
	/* ================== MODULE OPEARTION - START ==================*/
	/* ==============================================================*/
	
	//MODULE SEARCH OPEARTION
	public function search(){
		$search       = $this->input->get('search');
		$limit        = $this->input->get('limit');
		$offset       = $this->input->get('offset');
		$sort         = $this->input->get('sort');
		$order        = $this->input->get('order');
		
		if(!$sort){
			$sort = "abs(menu_sort),abs(sort)";
		}
		if(!$order){
			$order = "asc";
		}
		// Fetch Records
		$info     = $this->db->query("CALL sp_form_setting_search ('SEARCH','$search','$offset','$limit','$sort','$order')");
		$result   = $info->result();
		$info->next_result();
		$data_rows     = array();
		foreach ($result as $form_setting){
			$data_rows[]=get_form_setting_datarows($form_setting,$this);
		}
		$data_rows=$this->xss_clean($data_rows);
		
		// Fetch Records Count
		$count_info     = $this->db->query("CALL sp_form_setting_search ('COUNT','$search','$offset','$limit','$sort','$order')");
		$count_result   = $count_info->result();
		$count_info->next_result();
		$num_rows = $count_result[0]->data_count;
		
		echo json_encode(array('total'=>$num_rows,'rows'=>$data_rows));
	}
	
	//MODULE VIEW OPEARTION
	public function module_view($prime_module_id){
		if($prime_module_id === "-1"){
			$prime_module_id = 0;
		}
		$data['prime_module_id'] = $prime_module_id;
		$module_qry  = 'SELECT * FROM `cw_modules` where module_id = "'.$prime_module_id.'"';
		$module_data = $this->db->query("CALL sp_a_run ('SELECT','$module_qry')");
		$module_rslt = $module_data->result();			
		$module_data->next_result();
		$data['module_info'] = $module_rslt[0];
		
		$role_info   = $this->db->query("CALL sp_a_run ('SELECT','SELECT * FROM `cw_role` where trans_status = 1')");
		$role_result = $role_info->result();
		$role_info->next_result();
		$module_for[""] = "---- Module For ----";
		foreach($role_result as $for){
			$role_id   = $for->prime_role_id;
			$role_name = $for->role_name;
			$module_for[$role_id] = $role_name;
		}
		$data['module_for']  = $module_for;
		
		$menu_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT * FROM `cw_main_menu` where trans_status = 1 order by abs(menu_sort) asc')");
		$menu_result = $menu_data->result();
		$menu_data->next_result();
		$menu_array = array('1','2');
		$map_menu_to[""] = "---- Map Menu to ----";
		foreach($menu_result as $menu){
			$prime_menu_id   = $menu->prime_menu_id;
			$menu_name       = ucwords($menu->menu_name);
			if(!in_array($prime_menu_id, $menu_array)){
				$map_menu_to[$prime_menu_id] = $menu_name;
			}
		}
		$data['map_menu_to']  = $map_menu_to;
		
		$sub_menu_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT cw_sub_menu.prime_sub_menu_id,menu_name,sub_menu_name FROM cw_sub_menu left join cw_main_menu on cw_main_menu.prime_menu_id = cw_sub_menu.map_main_menu where cw_sub_menu.trans_status = 1 order by abs(cw_sub_menu.sub_menu_sort) asc')");
		$sub_menu_result = $sub_menu_data->result();
		$sub_menu_data->next_result();
		$sub_map_menu_to[""] = "---- Map Sub Menu to ----";
		foreach($sub_menu_result as $sub_menu){
			$prime_sub_menu_id = $sub_menu->prime_sub_menu_id;
			$menu_name         = $sub_menu->menu_name;
			$sub_menu_name     = ucwords($sub_menu->sub_menu_name);
			$sub_name = $menu_name ." - ".  $sub_menu_name;
			$sub_map_menu_to[$prime_sub_menu_id] = $sub_name;
		}
		$data['sub_map_menu_to']  = $sub_map_menu_to;
		
		$quick_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT * FROM `cw_modules` where menu_id not in (1,2) order by abs(sort) asc')");
		$quick_result = $quick_data->result();
		$quick_data->next_result();
		$quicklink_list[""] = "---- Quick link  ----";
		foreach($quick_result as $quick){
			$module_id   = $quick->module_id;
			$module_name = ucwords(str_replace("_"," ",$quick->module_id));
			$quicklink_list[$module_id] = $module_name;
		}
		$data['quicklink_list']  = $quicklink_list;
		
		$role_info   = $this->db->query("CALL sp_a_run ('SELECT','SELECT * FROM `cw_role` where trans_status = 1')");
		$role_result = $role_info->result();
		$role_info->next_result();
		$field_for[""] = "---- Field For ----";
		foreach($role_result as $for){
			$role_id   = $for->prime_role_id;
			$role_name = $for->role_name;
			$field_for[$role_id] = $role_name;
		}
		$data['field_for'] = $field_for;
		
		$table_prime    = "cw_".$prime_module_id;
		$table_prime_id = "prime_".$prime_module_id."_id";
		$table_cf       = "cw_".$prime_module_id."_cf";
		$table_cf_id    = "prime_".$prime_module_id."_cf_id";		
		$table_names    = '"'.$table_prime.'","'.$table_cf.'"';
		$prime_ids      = '"'.$table_prime_id.'","'.$table_cf_id.'"';
		$get_colums = 'SELECT TABLE_NAME as table_info,COLUMN_NAME as column_info  FROM `INFORMATION_SCHEMA`.`COLUMNS`  WHERE `TABLE_SCHEMA`="'.$this->db->database.'" AND `TABLE_NAME` IN ('.$table_names.') AND COLUMN_NAME NOT LIKE "%trans%" AND COLUMN_NAME NOT IN ('.$prime_ids.')';
		$column_info   = $this->db->query("CALL sp_a_run ('SELECT','$get_colums')");
		$column_result = $column_info->result();
		$column_info->next_result();
		$column_list[""] = "---- Select Column ----";
		foreach($column_result as $column){
			$table_info   = $column->table_info;
			$column_info  = $column->column_info;
			$column_value = $table_info.".".$column_info;
			$column_name  = ucwords(str_replace("_"," ",$column_info));
			$column_list[$column_value] = $column_name;
		}
		$data['column_list']      = $column_list;
		$data['table_query_list'] = $this->get_saved_query_list($prime_module_id);
		$this->load->view("module_setting/module_view",$data);
	}
	
	//SAVE MODULE VIEW OPEARTION
	public function save_module(){
		$prime_module_id  = $this->input->post('prime_module_id');
		$module_id        = $this->input->post('module_id');
		$module_name      = $this->input->post('module_name');
		$rights_to       = implode(",",$this->input->post('rights_to[]'));
		$rights_to       = ltrim($rights_to,',');		
		$module_for       = implode(",",$this->input->post('module_for[]'));
		$module_for       = ltrim($module_for,',');		
		$map_menu_to      = $this->input->post('map_menu_to');
		$sub_map_menu_to  = $this->input->post('sub_map_menu_to');
		$quicklink        = implode(",",$this->input->post('quicklink[]'));
		$quicklink        = ltrim($quicklink,',');		
		$show_module      = $this->input->post('show_module');
		$module_type      = $this->input->post('module_type');
		$logged_id        = $this->session->userdata('logged_id');
		$date          = date("Y-m-d h:i:s");
		
		$module_id     = strtolower(str_replace(" ","_",$module_id));
		$module_name   = ucwords($module_name);
		if($prime_module_id === "0"){			
			$is_exist_qry  = 'SELECT count(*) as rslt_count FROM `cw_modules` where module_id = "'.$module_id.'"';
			$is_exist_data = $this->db->query("CALL sp_a_run ('SELECT','$is_exist_qry')");
			$exist_rslt    = $is_exist_data->result();			
			$is_exist_data->next_result();			
			if((int)$exist_rslt[0]->rslt_count === 0){				
				$sort_qry   = 'SELECT count(*) as rslt_count FROM `cw_modules` where trans_status = 1  and menu_id not in (1,2)';
				$sort_data  = $this->db->query("CALL sp_a_run ('SELECT','$sort_qry')");
				$sort_rslt = $sort_data->result();
				$sort_data->next_result();
				$sort_order    = (int)$sort_rslt[0]->rslt_count + 1;
				
				$module_qry  = 'INSERT INTO cw_modules (sort, module_id,module_name,module_type,menu_id,sub_menu_id,module_for,rights_to,show_module,quicklink,trans_created_by, trans_created_date) VALUES ("'.$sort_order.'","'.$module_id.'","'.$module_name.'","'.$module_type.'","'.$map_menu_to.'","'.$sub_map_menu_to.'","'.$module_for.'","'.$rights_to.'","'.$show_module.'","'.$quicklink.'","'.$logged_id.'","'.$date.'")';
				$this->db->query("CALL sp_a_run ('RUN','$module_qry')");
				
				$permissions_qry  = 'INSERT INTO cw_permissions (permission_id, module_id) VALUES ("'.$module_id.'","'.$module_id.'")';
				$this->db->query("CALL sp_a_run ('RUN','$permissions_qry')");
				
				$grants_qry  = 'INSERT INTO cw_grants (permission_id, prime_employees_id, access_add, access_update,access_delete,access_search,access_export,access_import) VALUES ("'.$module_id.'","1","1","1","1","1","1","1")';
				$this->db->query("CALL sp_a_run ('RUN','$grants_qry')");
				
				$this->creat_file_structure($module_id);				
				echo json_encode(array('success' => true, 'message' => "New Module successfully added"));				
			}else{
				echo json_encode(array('success' => FALSE, 'message' => "Module already exist"));
			}			
		}else{
			$upd_qry  = 'UPDATE  cw_modules SET module_name = "'.$module_name.'",module_type = "'.$module_type.'",menu_id = "'.$map_menu_to.'",sub_menu_id = "'.$sub_map_menu_to.'",module_for = "'.$module_for.'",show_module = "'.$show_module.'",quicklink = "'.$quicklink.'",rights_to = "'.$rights_to.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where module_id = "'.$prime_module_id.'"';
			$this->db->query("CALL sp_a_run ('RUN','$upd_qry')");
			echo json_encode(array('success' => true, 'message' => "Module successfully updated"));
		}
	}
	function creat_file_structure($module_id){		
		$ucfirst    = ucfirst($module_id);
		$strtolower = strtolower($module_id);
		$controller_file_name = $ucfirst.".php";
		$controller_file_name = $ucfirst.".php";
		
		$controller_file = file_get_contents('module_creation/controllers.php', true);
		$controller_file = str_replace("@MODULE_NAME@",$ucfirst, $controller_file);
		$controller_file = str_replace("@MODULE_NAME_CONSTRUCT@",$strtolower, $controller_file);
		
		fopen("./application/controllers/$controller_file_name", "w");
		file_put_contents("./application/controllers/$controller_file_name",$controller_file);
		
		
		if(!file_exists("./application/views/$strtolower")) {
			mkdir("./application/views/$strtolower", 0777, true);
		}
		$form_file   = file_get_contents('module_creation/form.php', true);
		fopen("./application/views/$strtolower/form.php", "w");
		file_put_contents("./application/views/$strtolower/form.php",$form_file);
		
		$import_file = file_get_contents('module_creation/import.php', true);
		fopen("./application/views/$strtolower/import.php", "w");
		file_put_contents("./application/views/$strtolower/import.php",$import_file);
		
		$manage_file = file_get_contents('module_creation/manage.php', true);
		fopen("./application/views/$strtolower/manage.php", "w");
		file_put_contents("./application/views/$strtolower/manage.php",$manage_file);
		return true;
	}
	
	// PROVIDE PICKLIST AND SESSION VALUES
	function get_column_info(){
		$query_module_id  = $this->input->post('query_module_id');
		$query_column     = $this->input->post('query_column');
		$label_name       = explode(".",$query_column);
		$get_colums_info = 'SELECT * FROM cw_form_setting WHERE  prime_module_id = "'.$query_module_id.'" and label_name = "'.$label_name[1].'"';
		$colums_info   = $this->db->query("CALL sp_a_run ('SELECT','$get_colums_info')");
		$colums_result = $colums_info->result();
		$colums_info->next_result();
		if($colums_result){
			$field_type     = (int)$colums_result[0]->field_type;
			$pick_list_type = (int)$colums_result[0]->pick_list_type;
			$pick_list 	    = $colums_result[0]->pick_list;
			$pick_table 	= $colums_result[0]->pick_table;
			
			$session_val_qry    = 'SELECT * FROM cw_session_value WHERE  trans_status = 1 order by abs(session_for)';
			$get_session_val    = $this->db->query("CALL sp_a_run ('SELECT','$session_val_qry')");
			$session_val_result = $get_session_val->result();
			$get_session_val->next_result();
			if($session_val_result){
				foreach($session_val_result as $col){
					$col_id    = (int)$col->session_for;	
					$session_for = "Employee";
					if($col_id === 2){
						$session_for = "Customer";
					}
					$col_value = $col->session_value;
					$key_value = $col_id."|".$col_value;				
					$session_list[$key_value] = "$session_for - $col_value";
				}
			}
				
			if(($field_type === 5) || ($field_type === 7)){
				if($pick_list_type === 1){
					$pick_colum_qry    = 'SELECT '.$pick_list.' FROM '.$pick_table.' WHERE  trans_status = 1';
					$get_pick_colum    = $this->db->query("CALL sp_a_run ('SELECT','$pick_colum_qry')");
					$pick_colum_result = $get_pick_colum->result();
					$get_pick_colum->next_result();
					if($pick_colum_result){
						$colum = explode(",",$pick_list);
						foreach($pick_colum_result as $col){
							$col_id    = $col->$colum[0];
							$col_value = $col->$colum[1];
							$pick_list_info[$col_id] = "$col_id - $col_value";
						}
					}
				}else
				if($pick_list_type === 2){					
					$id     = $pick_table."_id";
					$value  = $pick_table."_value";
					$status = $pick_table."_status";
					$select_info = "$id,$value";
					$pick_colum_qry    = 'SELECT '.$select_info.' FROM '.$pick_table.' WHERE  '.$status.' = 1';
					$get_pick_colum    = $this->db->query("CALL sp_a_run ('SELECT','$pick_colum_qry')");
					$pick_colum_result = $get_pick_colum->result();
					$get_pick_colum->next_result();
					if($pick_colum_result){
						foreach($pick_colum_result as $col){
							$col_id    = $col->$id;
							$col_value = $col->$value;
							$pick_list_info[$col_id] = "$col_id - $col_value";
						}
					}
				}
				echo json_encode(array('success' => true,'type'=>'pick_list','msg'=>"Pick list value","pick_list"=>$pick_list_info,"session_list"=>$session_list));				
			}else{				
				echo json_encode(array('success' => true,'type'=>'session_list','msg'=>"Session list","session_list"=>$session_list));
			}
		}else{
			echo json_encode(array('success' => false,'msg'=>"Invalid column"));
		}
	}
	
	//SAVE BASIC QUERY
	function save_query_info(){
		$prime_table_id   = (int)$this->input->post('prime_table_id');
		$query_module_id  = $this->input->post('query_module_id');
		$query_for        = $this->input->post('query_for');
		$where_condition  = strtolower($this->input->post('where_condition'));
		$logged_id        = $this->session->userdata('logged_id');
		$date             = date("Y-m-d h:i:s");
		$exist_query  = 'SELECT * FROM cw_form_table_search WHERE  query_module_id = "'.$query_module_id.'" and query_for = "'.$query_for.'" and trans_status = 1';		
		$exist_info   = $this->db->query("CALL sp_a_run ('SELECT','$exist_query')");
		$exist_count  = (int)$exist_info->num_rows();
		$exist_result = $exist_info->result();
		$exist_info->next_result();		
		if($exist_count === 0){
			$search_qry  = 'INSERT INTO cw_form_table_search (query_module_id, query_for,where_condition,trans_created_by, trans_created_date) VALUES ("'.$query_module_id.'","'.$query_for.'","'.$where_condition.'","'.$logged_id.'","'.$date.'")';
			$this->db->query("CALL sp_a_run ('RUN','$search_qry')");
			$table_query_list = $this->get_saved_query_list($query_module_id);
			echo json_encode(array('success' => true,'message'=>"Basic Query added successfully !!!",'table_query_list'=>$table_query_list));
		}else{
			$db_prime_table_id = (int)$exist_result[0]->prime_table_id;	
			if($db_prime_table_id === $prime_table_id){
				$upd_qry  = 'UPDATE  cw_form_table_search SET query_module_id = "'.$query_module_id.'",query_for = "'.$query_for.'",where_condition = "'.$where_condition.'",trans_updated_by = "'.$logged_id.'",trans_updated_date = "'.$date.'" where prime_table_id = "'.$prime_table_id.'"';			
				$this->db->query("CALL sp_a_run ('RUN','$upd_qry')");
				$table_query_list = $this->get_saved_query_list($query_module_id);
				echo json_encode(array('success' => true,'message'=>"Basic Query updated successfully !!!",'table_query_list'=>$table_query_list));
			}else{
				echo json_encode(array('success' => false,'message'=>"Basic Query already exist"));
			}
		}
	}
	function get_saved_query_list($query_module_id){
		$query_list  = 'SELECT prime_table_id,query_module_id,role_name,where_condition FROM cw_form_table_search INNER join cw_role on cw_role.prime_role_id = cw_form_table_search.query_for WHERE  cw_form_table_search.query_module_id = "'.$query_module_id.'" and cw_form_table_search.trans_status = 1';
		$query_list_info   = $this->db->query("CALL sp_a_run ('SELECT','$query_list')");
		$query_list_result = $query_list_info->result();
		$query_list_info->next_result();
		print_r();
		foreach($query_list_result as $rslt){
			$prime_table_id  = $rslt->prime_table_id;
			$role_name       = $rslt->role_name;
			$where_condition = $rslt->where_condition;
			$query_tr_line .= "<tr>
								<td>$role_name</td>
								<td>$where_condition</td>
								<td style='text-align:center;'><a class='btn btn-xs btn-edit' onclick=edit_query('$prime_table_id')> <i class='fa fa-pencil-square-o' aria-hidden='true'></i> Edit</a></td>
								<td style='text-align:center;'><a class='btn btn-xs btn-danger' onclick=remove_query('$prime_table_id')> <i class='fa fa-trash-o' aria-hidden='true'></i> Delete</a></td>
							</tr>";
		}
		$table_query_content = "<table class='table table-bordered table-stripted'>
									<tr style='background-color:#1883E9;color:#FFFFFF;'>
										<th style='text-align: center;'>Query For</th>
										<th style='text-align:center;'>Condition Information</th>
										<th style='text-align:center;'>Edit</th>
										<th style='text-align:center;'>Delete</th>
									</tr>
									$query_tr_line
								</table>";
		return $table_query_content;
	}
	public function get_edit_info(){
		$prime_table_id   = (int)$this->input->post('prime_table_id');
		$edit_query  = 'SELECT * FROM cw_form_table_search WHERE  prime_table_id = "'.$prime_table_id.'" and trans_status = 1';
		$edit_info   = $this->db->query("CALL sp_a_run ('SELECT','$edit_query')");
		$edit_result = $edit_info->result();
		$edit_info->next_result();
		if($edit_result){
			$prime_table_id  = $edit_result[0]->prime_table_id;
			$query_for       = $edit_result[0]->query_for;
			$where_condition = $edit_result[0]->where_condition;
			echo json_encode(array('success' => true,'prime_table_id'=>$prime_table_id,'query_for'=>$query_for,'where_condition'=>$where_condition));
		}else{
			echo json_encode(array('success' => false,'message'=>"Unable process your request"));
		}
	}
	public function remove_query_info(){
		$prime_table_id   = (int)$this->input->post('prime_table_id');
		$query_module_id  = $this->input->post('query_module_id');
		$logged_id        = $this->session->userdata('logged_id');
		$date             = date("Y-m-d h:i:s");
		$remove_qry  = 'UPDATE  cw_form_table_search SET trans_status = 0 ,trans_deleted_by = "'.$logged_id.'",trans_deleted_date = "'.$date.'" where prime_table_id = "'.$prime_table_id.'"';
		$this->db->query("CALL sp_a_run ('SELECT','$remove_qry')");
		$table_query_list = $this->get_saved_query_list($query_module_id);
		echo json_encode(array('success' => true,'message'=>'Table Query Remove Successfully !!!','table_query_list'=>$table_query_list));
	}
	
	//GET SUB MENU FOR MAIN MENU
	public function get_sub_menu(){
		$prime_menu_id   = (int)$this->input->post('prime_menu_id');
		$sub_menu_data = $this->db->query("CALL sp_a_run ('SELECT','SELECT cw_sub_menu.prime_sub_menu_id,sub_menu_name,menu_name FROM cw_main_menu join cw_sub_menu on cw_main_menu.prime_menu_id = cw_sub_menu.map_main_menu where cw_main_menu.prime_menu_id = $prime_menu_id and cw_sub_menu.trans_status = 1 order by abs(cw_sub_menu.sub_menu_sort) asc')");
		$sub_menu_result = $sub_menu_data->result();
		$sub_menu_data->next_result();
		$sub_map_menu_to[""] = "<option value='' disabled>---- Map Sub Menu to ----</option>";
		foreach($sub_menu_result as $sub_menu){
			$prime_sub_menu_id = $sub_menu->prime_sub_menu_id;
			$menu_name         = $sub_menu->menu_name;
			$sub_menu_name     = ucwords($sub_menu->sub_menu_name);
			$sub_name = $menu_name ." - ".  $sub_menu_name;
			$sub_map_menu_to .= "<option value='$prime_sub_menu_id'>$sub_name</option>";
		}
		echo json_encode(array('success' => TRUE,'message'=>$sub_map_menu_to));
	}
	/* ==============================================================*/
	/* =================== MODULE OPEARTION - END ===================*/
	/* ==============================================================*/
}
?>