HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /var/www/html/pmw24/driver_settlement/application/controllers/admin/Roster.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Roster extends MY_Controller
{
	public function __construct()
	{
		parent::__construct();
		ini_set('post_max_size','2000M');
		//$this->redirect_guest();
		$this->admin = $this->session->userdata('admin');
		$this->load->model('admin/mcar');
		$this->load->model('admin/mroster');
		$this->load->model('admin/mdriver');


		if ($this->session->userdata('admin') != 1) {
			redirect('admin');
			die();
		}
	}


	/*
	author: soumya hazra
	purpose: Get roster page dashboard.
	date: 6-9-2019
	*/
	public function index()
	{
		//echo phpinfo();die;
		$result = array();

			$ddate = date('Y-m-d');
			$date = new DateTime($ddate);
			$week = $date->format("W");
			
			$get_car_no_view=$this->input->post('get_car_no_view');
			$get_week_no_edit=$this->input->post('get_week_no_edit');
			$view_roster_week=$this->input->get('view_roster_week');
			$view_car_no=$this->input->get('view_car_no');
			//echo $view_roster_week;die;
			
			if(isset($view_roster_week) && !empty($view_roster_week)){
				$week = $view_roster_week;
			}
			else{
				if(isset($get_week_no_edit) && !empty($get_week_no_edit)){

					$week = $get_week_no_edit;
				}
			}
			$car_no='';
			if(isset($view_car_no) && !empty($view_car_no)){
				$car_no = $view_car_no;
			}
			else{
				if(isset($get_car_no_view) && !empty($get_car_no_view)){

					$car_no = $get_car_no_view;
				}
			}
			$result['get_car_by_wk'] =  $this->mroster->get_roster_details($week,$car_no);
			$result['get_newly_added_car'] =  $this->mroster->get_newly_added_car($week,$car_no);
			//echo '<pre>'; print_r($result['get_newly_added_car']);die;
			$result['week_no']=$week;
			$result['car_no']=$car_no;
			$result['cars'] = $this->mcar->get_car($car_no);
			$result['car_list'] = $this->mcar->get_car();
			
			//pr($result['cars']);
			$result['weeks'] = $this->mroster->get_all_wk();
			$result['driver_list'] = $this->mdriver->get_driver_master_list();
			$result['get_car_inactive'] = $this->mcar->get_car_inactive();
			$result['content'] = 'admin/roster/roster';
			$this->_load_view($result);
	}

	public function view_roster(){

		$ddate = date('Y-m-d');
			$date = new DateTime($ddate);
			$week = $date->format("W");

			$get_week_no_view=$this->input->post('get_week_no_view');
			$get_car_no_view=$this->input->post('get_car_no_view');
			//echo $get_week_no_edit;die;
			if(isset($get_week_no_view) && !empty($get_week_no_view)){

				$week = $get_week_no_view;
			}


			$car_no='';
			if(isset($get_car_no_view) && !empty($get_car_no_view)){

				$car_no = $get_car_no_view;
			}
			
		$result['get_car_by_wk'] =  $this->mroster->get_roster_details($week,$car_no);
		$result['week_no']=$week;
		$result['car_no']=$car_no;
		$result['cars'] = $this->mcar->get_car();
		$result['weeks'] = $this->mroster->get_all_wk();
		$result['driver_list'] = $this->mdriver->get_driver_master_list();
		$result['get_car_inactive'] = $this->mcar->get_car_inactive();
		$result['content'] = 'admin/roster/view_roster';
		
		$this->_load_view($result);

	}

	// Default load function for header and footer inculded
	private function _load_view($data)
	{
		$this->load->view('admin/layouts/index', $data);
	}

	/*
	author: soumya hazra
	purpose: Add roster
	date: 6-9-2019
	*/
	public function add_roster(){
		

		// echo '<pre>';
		// print_r($_POST);
		// echo '</pre>';
		$data = array();
		$result =  array();
		$car_id = '';

		$car_id =  $this->input->post('car_id');
		
		$week_no =  $this->input->post('week_no');


		$breakdown =  $this->input->post('breakdown');
		//pr($car_id);
		$breakdown_reason =  $this->input->post('breakdown_reason');
		//pr($breakdown_reason);
		// echo "</pre>";
		// print_r($breakdown);
		// die();

		$dayname = $this->input->post('dayname');
		$day_date = $this->input->post('day_date');
		$shift_name = $this->input->post('shift_name');
		$driver_id = $this->input->post('driver_id');
		$roster_id_hidden = $this->input->post('roster_id_hidden');
		$roster_shift_id_hidden = $this->input->post('roster_shift_id_hidden');
		$roster_driver_id_hidden = $this->input->post('roster_driver_id_hidden');
		// echo "<pre>"; 
		// 	print_r($this->input->post('roster_shift_id_hidden')); 
		// 	print_r($this->input->post('shift_name')); 
		// die;
		

		$j = 0;
		foreach ($car_id as $key => $car) {
			$i = 0;
			foreach ($dayname[$j] as $day) {

				if (empty($roster_id_hidden[$j][$i])) {

					$condition = array('day_date'=>$day_date[$j][$i],'car_id'=>$car);
					$roster_data=$this->mcommon->getRow('roster',$condition);
					if(empty($roster_data) ){
						if(isset($day_date[$j][$i])){
							$data =  array(
								'car_id' => $car,
								'week_no' => $week_no,
								'dayname' => $day,
								'day_date' => $day_date[$j][$i],
								'breakdown' => $breakdown[$j][$i],
								'breakdown_reason' => $breakdown_reason[$j][$i],
								'created_by' => $this->session->userdata('user_data'),
								'created_ts' =>  date('Y-m-d H:i:s'),
							);
							$result =  $this->mroster->insert_roster($data);
						}
					} else {

						$result = $roster_data['roster_id'];

					}
				} else {

					$data =  array(
						'updated_by' => $this->session->userdata('user_data'),
						'updated_ts' =>  date('Y-m-d H:i:s'),
					);
					
					
					if (!empty($breakdown[$j][$i])) {
						$data['breakdown'] = $breakdown[$j][$i];
						$data['breakdown_reason'] = $breakdown_reason[$j][$i];
					}
					else{

						$data['breakdown'] = 0;
						$data['breakdown_reason'] = '';
					}

					$result = $roster_id_hidden[$j][$i];
					$condition_roster = array('roster_id' => $result);
					$this->mcommon->update('roster', $condition_roster, $data);
				}
				if ($result) {

					if (!empty($roster_shift_id_hidden[$j][$i])) {

						
						foreach ($roster_shift_id_hidden[$j][$i] as $key => $shift_id_hidden) {
							//echo $shift_name[$j][$i][$key].'<br>';
							$check_already_driver_shift_started = array();
							$check_already_driver_shift_started['shift_cnt'] = 0;
							$check_already_driver_shift_started['shift_payin_cnt'] = 0;
							
							if (empty($shift_id_hidden)) {
								
								if (!empty($shift_name[$j][$i][$key])) {
									
									$check_already_driver_exists=$this->mroster->check_already_driver_shift_exists($day_date[$j][$i],$driver_id[$j][$i][$key],$car);

									$check_already_driver_shift_started=$this->mroster->check_already_driver_shift_started($day_date[$j][$i],$driver_id[$j][$i][$key]);
									
									if($check_already_driver_exists['cnt'] == 0 && $check_already_driver_shift_started['shift_cnt'] == 0 && $check_already_driver_shift_started['shift_payin_cnt'] == 0){
										$shift_data = array(
											'roster_id' => $result,
											'shift_name' => $shift_name[$j][$i][$key],
											'created_by' => $this->session->userdata('user_data'),
											'created_ts' =>  date('Y-m-d H:i:s'),
										);

										$result_shift =  $this->mroster->insert_shift($shift_data);
									}
								}
							} else {
								
								if (isset($shift_name[$j][$i][$key]) && !empty($shift_name[$j][$i][$key])) {
									$check_already_driver_exists=$this->mroster->check_already_driver_shift_exists($day_date[$j][$i],$driver_id[$j][$i][$key],$car);
									$check_already_driver_shift_started=$this->mroster->check_already_driver_shift_started($day_date[$j][$i],$driver_id[$j][$i][$key]);
									//echo '<pre>';print_r($check_already_driver_exists);die;
									if($check_already_driver_exists['cnt'] == 0 && $check_already_driver_shift_started['shift_cnt'] == 0 && $check_already_driver_shift_started['shift_payin_cnt'] == 0){
									
										$shift_data = array(
											'shift_name' => $shift_name[$j][$i][$key],
											'updated_by' => $this->session->userdata('user_data'),
											'updated_ts' =>  date('Y-m-d H:i:s')
										);

										$result_shift = $shift_id_hidden;
										$condition_roster_shift = array('roster_shift_id' => $result_shift);
										$this->mcommon->update('roster_shift_maping', $condition_roster_shift, $shift_data);
									}
								} else {
									//echo $shift_id_hidden;
									$result_shift = $shift_id_hidden;
									$condition_roster_shift = array('roster_shift_id' => $result_shift);
									$check_already_exists = $this->mroster->check_already_shift_started($result_shift);
									//echo '<pre>';print_r($check_already_exists);
									if(!empty($check_already_exists) && $check_already_exists['cnt'] == 0){
										$this->mcommon->delete('roster_shift_maping', $condition_roster_shift);
									}
								}
							}




							if (isset($result_shift) && $result_shift) {

								if (empty($roster_driver_id_hidden[$j][$i][$key])) {

									if (!empty($driver_id[$j][$i][$key])) {
										
										$check_already_driver_exists=$this->mroster->check_already_driver_shift_exists($day_date[$j][$i],$driver_id[$j][$i][$key],$car);
										$check_already_driver_shift_started=$this->mroster->check_already_driver_shift_started($day_date[$j][$i],$driver_id[$j][$i][$key]);
										if($check_already_driver_exists['cnt'] == 0 && $check_already_driver_shift_started['shift_cnt'] == 0 && $check_already_driver_shift_started['shift_payin_cnt'] == 0){
											$driver_data = array(
												'roster_id' => $result,
												'roster_shift_id' => $result_shift,
												'driver_id' => $driver_id[$j][$i][$key],
												'created_by' => $this->session->userdata('user_data'),
												'created_ts' => date('Y-m-d H:i:s'),
											);

											$result_driver =  $this->mroster->insert_driver($driver_data);
										}
									}
								} else {

									if (isset($shift_name[$j][$i][$key]) &&  !empty($shift_name[$j][$i][$key]) && !empty($driver_id[$j][$i][$key])) {
										$check_already_driver_exists=$this->mroster->check_already_driver_shift_exists($day_date[$j][$i],$driver_id[$j][$i][$key],$car);
										$check_already_driver_shift_started=$this->mroster->check_already_driver_shift_started($day_date[$j][$i],$driver_id[$j][$i][$key]);
										if($check_already_driver_exists['cnt'] == 0 && $check_already_driver_shift_started['shift_cnt'] == 0 && $check_already_driver_shift_started['shift_payin_cnt'] == 0){
											$driver_data = array(
												'driver_id' => $driver_id[$j][$i][$key],
												'updated_by' => $this->session->userdata('user_data'),
												'updated_ts' => date('Y-m-d H:i:s')
											);

											$result_driver = $roster_driver_id_hidden[$j][$i][$key];
											$condition_roster_driver = array('roster_driver_id' => $result_driver);
											$this->mcommon->update('roster_driver_maping', $condition_roster_driver, $driver_data);
										}
									} else {

										$result_driver = $roster_driver_id_hidden[$j][$i][$key];
										$condition_roster_driver = array('roster_driver_id' => $result_driver);
										$check_already_exists = $this->mcommon->getRow('driver_shift_details',$condition_roster_driver);
										//echo '<pre>';print_r($check_already_exists);die;
										if(empty($check_already_exists)){
											$this->mcommon->delete('roster_driver_maping', $condition_roster_driver);
										}
									}
								}

							}
							
						}
						
					}
				}
				$i++;
			}
			$j++;
			
		}
		//die;

		$this->session->set_flashdata('msg', '<div class="alert alert-success alert-dismissible"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Roster Successfully Set!</div>');

		redirect('admin/roster?view_roster_week='.$week_no);
	}

	public function import_roster_submit(){
		$data = array();
		$result =  array();
		
		$car_id =  $this->input->post('car_id');
		$week_no =  $this->input->post('week_no');

		$breakdown =  $this->input->post('breakdown');
		$breakdown_reason =  $this->input->post('breakdown_reason');
		$dayname = $this->input->post('dayname');
		$day_date = $this->input->post('day_date');
		$shift_name = $this->input->post('shift_name');
		$driver_id = $this->input->post('driver_id');
		$roster_id_hidden = $this->input->post('roster_id_hidden');
		$roster_shift_id_hidden = $this->input->post('roster_shift_id_hidden');
		$roster_driver_id_hidden = $this->input->post('roster_driver_id_hidden');

		//echo '<pre>';
		//print_r($breakdown);
		// print_r($dayname);
		// print_r($day_date);
		// print_r($roster_id_hidden);
		// print_r($roster_shift_id_hidden);
		// print_r($roster_driver_id_hidden);
		//die;
		
		$check_already_exists=$this->mcommon->getRow('roster',array('week_no'=>$week_no));
		if(empty($check_already_exists)){
			$j = 0;
			foreach ($car_id as $key => $car) {
				$i = 0;
				foreach ($dayname[$j] as $day) {

					if (empty($roster_id_hidden[$j][$i])) {

						$data =  array(
							'car_id' => $car,
							'week_no' => $week_no,
							'dayname' => $day,
							'day_date' => $day_date[$j][$i],
							'breakdown' => isset($breakdown[$j][$i])?$breakdown[$j][$i]:0,
							'breakdown_reason' => isset($breakdown_reason[$j][$i])?$breakdown_reason[$j][$i]:'',
							'created_by' => $this->session->userdata('user_data'),
							'created_ts' =>  date('Y-m-d H:i:s'),
						);


						$result =  $this->mroster->insert_roster($data);
					} 


					if ($result) {

						if (!empty($roster_shift_id_hidden[$j][$i])) {


							foreach ($roster_shift_id_hidden[$j][$i] as $key => $shift_id_hidden) {
								
								if (empty($shift_id_hidden)) {

									if (!empty($shift_name[$j][$i][$key])) {
										$shift_data = array(
											'roster_id' => $result,
											'shift_name' => $shift_name[$j][$i][$key],
											'created_by' => $this->session->userdata('user_data'),
											'created_ts' =>  date('Y-m-d H:i:s'),
										);

										$result_shift =  $this->mroster->insert_shift($shift_data);
									}
								} 

								if (isset($result_shift) && $result_shift) {
									
									if (empty($roster_driver_id_hidden[$j][$i][$key])) {

										if (!empty($driver_id[$j][$i][$key])) {
											$driver_data = array(
												'roster_id' => $result,
												'roster_shift_id' => $result_shift,
												'driver_id' => $driver_id[$j][$i][$key],
												'created_by' => $this->session->userdata('user_data'),
												'created_ts' => date('Y-m-d H:i:s'),
											);

											$result_driver =  $this->mroster->insert_driver($driver_data);
										}
									} 
									
								}
								
							}
						}
					}
					$i++;
				}
				$j++;
			}
			$this->session->set_flashdata('msg', '<div class="alert alert-success alert-dismissible"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Roster Imported Successfully!</div>');
			
		}
		else{
			$this->session->set_flashdata('msg', '<div class="alert alert-danger alert-dismissible"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Roster Already set for selected week</div>');
			
		}
		redirect('admin/roster');	
	
	}

	/*
	author: soumya hazra
	purpose: Edit roster View
	date: 26-9-2019
	*/
	public function edit_roster()
	{


		$week_no = '';
		$week_no =  $this->input->post('get_week_no_edit');


		//die();
		$result['week_no'] = $week_no;
		$result['get_car_by_wk'] =  $this->mroster->get_roster_details($week_no);
		$result['cars'] = $this->mcar->get_car();
		$result['driver_list'] = $this->mdriver->get_driver_master_list();
		$result['get_car_inactive'] = $this->mcar->get_car_inactive();
		//echo '<pre>';print_r($result);die;
		$result['content'] = 'admin/roster/roster_edit';
		$this->_load_view($result);
	}



	/*
	author: soumya hazra
	purpose: get roster details
	date: 6-9-2019
	*/
	public function get_roster_details()
	{
		$result =  array();
		$week_no =  $this->input->post('get_week_no');
		//$week_no =  39;
		$result =  $this->mroster->get_roster_details($week_no);
	}


	/*
	author: soumya hazra
	purpose: get Driver details
	date: 27-9-2019
	*/
	public function get_driver_details($user_id)
	{
		$result =  array();
		$content = '';
		$result =  $this->mroster->get_driver_data($user_id);



		$content .= '<p>DC : ' . $result['dc_no'] . '</p>';
		$content .= '<p>Full Name : ' . $result['full_name'] . '</p>';
		$content .= '<p>Mobile : ' . $result['mobile'] . '</p>';
		$content .= '<p>Commission : ' . $result['commission_name'] . '</p>';
		$content .= '<p>Address : ' . $result['address'] . '</p>';


		echo $content;
	}


	/*
	author: soumya hazra
	purpose: search by date
	date: 27-9-2019
	*/
	public function search_date()
	{
		$day_date_from = $this->input->post('day_date_from');
		$day_date_to = $this->input->post('day_date_to');

		
		
		$result['day_details'] =  $this->mroster->get_roster_by_date($day_date_from);
		$result['cars'] = $this->mcar->get_car();
		$result['driver_list'] = $this->mdriver->get_driver_master_list();
		$result['days_used'] = $this->mroster->days_used();
		$result['day_date_from'] = $day_date_from;
		$result['day_date_to'] = $day_date_to;
		$result['content'] = 'admin/roster/day_roster';
		$this->_load_view($result);
	}



	/*
	author: soumya hazra
	purpose: Update by date
	date: 27-9-2019
	*/
	public function update_day_roster(){
		//echo '<pre>';print_r($this->input->post());die;
		
		$day_date = $this->input->post('day_date');
		$day_date = date('Y-m-d', strtotime(str_replace('/', '-', $day_date)));
		$dayname = date('l', strtotime($day_date));
		$week_no = date('W', strtotime($day_date));
		//echo $week_no;die;

		$roster_id = $this->input->post('roster_id');
		$user_id = $this->input->post('driver_id');
		$car_id = $this->input->post('car_id');

		$shift_name = $this->input->post('shift_name');
		
		//echo $day_date;die;
		$check_already_exists=$this->mroster->check_already_exist_roster($day_date);
		
		
		if($check_already_exists['cnt'] == 0){
				
			$this->mroster->delete_roster_main($day_date);
			$this->mroster->delete_roster_shift_maping($day_date);
			
			$i = 0;
			foreach ($roster_id as $roster) {
				
				$result = $this->mroster->update_day_roster($dayname, $week_no, $car_id[$i], $day_date);

				if ($result) {
					if (!empty($shift_name[$i])) {
						$j = 0;
						foreach ($shift_name[$i] as $key =>  $shift) {
						if (!empty($user_id[$i][$key])) {	
						$check_already_driver_exists=$this->mroster->check_already_driver_shift_exists($day_date,$user_id[$i][$key],$car_id[$i]);
						$check_already_driver_shift_started=$this->mroster->check_already_driver_shift_started($day_date,$user_id[$i][$key]);
						if($check_already_driver_exists['cnt'] == 0 && $check_already_driver_shift_started['shift_cnt'] == 0 && $check_already_driver_shift_started['shift_payin_cnt'] == 0){	
							$result_add_shift = $this->mroster->update_day_roster_shift($result, $shift);

							if ($result_add_shift) {
								
									$driver_data = array(
										'roster_id' => $result,
										'roster_shift_id' => $result_add_shift,
										'driver_id' => $user_id[$i][$key],
										'created_by' => $this->session->userdata('user_data'),
										'created_ts' => date('Y-m-d H:i:s'),
									);
									$result_driver =  $this->mroster->insert_driver($driver_data);
								
							}

							$j++;
							}
							}
						}
					}
				}

				$i++;
			}
		}
		else{
			$this->session->set_flashdata('msg', '<div class="alert alert-danger alert-dismissible"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Roster Already set for selected date</div>');
			redirect('admin/roster/search_date');
		}
		redirect('admin/roster');
	}


	public function import_roster(){
		
		$result = array();
		
		$get_week_no_roster=$this->input->post('get_week_no_roster');
		$set_week_no_roster=$this->input->post('set_week_no_roster');
		
		$result['get_car_by_wk'] =  $this->mroster->get_roster_details($get_week_no_roster);
		$result['get_week_no_roster']=$get_week_no_roster;
		$result['set_week_no_roster']=$set_week_no_roster;
		$result['cars'] = $this->mcar->get_car();
		$result['weeks'] = $this->mroster->get_all_wk();
		$result['driver_list'] = $this->mdriver->get_driver_master_list();
		$result['get_car_inactive'] = $this->mcar->get_car_inactive();
		$result['content'] = 'admin/roster/roster_import';
		
		$this->_load_view($result);
	}
}