<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Billing_temple_institution extends REF_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->library('upload');
        $this->load->model('billing/temple_institution_model', '', TRUE);
        $this->load->model('login_details_model', '', TRUE);
        $this->uri_key_index = 0;
    }
    
    public function index($id = 16) {
        $data = array();
        $data['results'] = $this->temple_institution_model->list_all();
        if (!empty($this->session->flashdata('success'))) 
            $data['success'] = $this->session->flashdata('success');
        else 
            $data['error'] = $this->session->flashdata('error');
        
        $actions = $this->actions();
        $service_menu = get_billing_controller($actions['controller']);
        $data['add_btn']    = 'Create New Temple Activities';
        $data['view_link']  = $actions['view'] . '/';
        $data['add_link']   = $actions['add'] . '/' . $id ;
        $data['edit_link']  = $actions['edit'] . '/';
        $data['delete_link']= $actions['delete'] . '/';
        $data['print'] = base_url() . 'billing_temple_institution/print_list/';
        
        $data['menu_id'] = $id;
        $data['title'] = $service_menu->service_name;
        $data['service_menu_id'] = array('service_menu_id' => $service_menu->id, 'menu_type' => '4');
        $this->render($data, 'billing/temple_institution/list');
    }
    
    public function class_types() {
        $type = array(
            '1' => 'Individual in Home',
            '2' => 'Individual in Temple',
            '3' => 'Group in Home',
            '4' => 'Group in Temple'
        );
        return $type;
    }
    
    public function add($type_id= '') {
        $data = array();
        $actions = $this->actions();
        $service_menu = get_billing_controller($actions['controller']);
        
        $data['class_types'] = $this->class_types();
        $data['payments'] = $this->temple_institution_model->payment_mode_lists();
        $data['service_type'] = $this->temple_institution_model->get_service_type($type_id);
        $data['service_type_id'] = $type_id;
        
        $data['form_action'] = $actions['insert'];
        $data['title'] = $service_menu->service_name;
        $this->render($data, 'billing/temple_institution/add');
    }
    
    private function get_temple_url_key($name, $id = '') {
        $url_key = get_url_key($name);
        if ($this->temple_institution_model->temple_url_key_exists($url_key, $id)) {
            $this->uri_key_index ++;
            return $this->get_temple_url_key($name . '_' . $this->uri_key_index, $id);
        }
        
        return $url_key;
    }
    
    public function insert() {
        $services = $this->temple_institution_model->service_type_exists($this->input->post('service_type'));
        $gst_details = $this->login_details_model->get_amount_by_service_id($this->input->post('service_type'));
        
        if($gst_details->gst == 1) {
            $gst = get_general_setting()->gst; 
            $gst_amount = ($gst / 100) * ($this->input->post('amount'));
        } else {
            $gst = '0.00';
            $gst_amount = '0.00';
        }
        
        $insert = array(
            'type_id' => $this->input->post('service_type_id'),
            'service_id' => $this->input->post('service_type'),
            'term'=> $this->input->post('term'),
            'transport_facility' => $this->input->post('transport_facility'),
            'bus_no' => $this->input->post('bus_no'),
            'class_type' => $this->input->post('class_type'),
            'class'=> $this->input->post('class'),
            'fee' => $this->input->post('fee'),
            'devotee_name' => $this->input->post('devotee_name'),
            'tamil_name' => htmlspecialchars( $this->input->post('tamil_devotee_name') ),
            'contact_no'=> $this->input->post('contact_no'),
            'email' => $this->input->post('email'),
            'url_key' => $this->get_temple_url_key($this->input->post('devotee_name')),
            'sex' => $this->input->post('sex'),
            'address' => $this->input->post('address'),
            'desc'=> $this->input->post('desc'),
            'amount' => $this->input->post('amount'),
            'gst' => $gst,
            'gst_value' => $gst_amount,
            'payment_mode' => $this->input->post('payment_mode'),
            'created_by' => $this->user_data['user_id'],
            'created_on' => date('Y-m-d H:i:s')
        );
        
        $insert_id = $this->temple_institution_model->insert($insert);
        
        if ($insert_id > 0) {
            $this->session->set_flashdata('success', 'Billing for Temple Activities is added successfully');
            if($services->num_rows() > 0) {
                $last_receipt_no = $services->row()->receipt_no;
                $last_no = (int)$last_receipt_no;
                $receipt_no = (($last_no + 1)  > 9999) ? ($last_no + 1)  : sprintf('0%03d', ($last_no + 1) );
            } else
                $receipt_no = '0001';
            
            $update = array(
                'receipt_no' => $receipt_no
            );
            $this->temple_institution_model->update($update, $insert_id);
            
            $pay_type = $this->input->post('pay_type');
            foreach( $pay_type as $key => $value ) {
                if($value != '') {
                    
                    $this->db->select('slug');
                    $q = $this->db->get_where( TBL_PAY_TYPE, array('id' => $key) );
                    $prow = $q->row_array();
                   
                    $pay_details = array();
                    if( $prow['slug'] == 'cheque' && !empty($value) ) :
                        // Cheque
                        $e = explode('-', $this->input->post('chq_date'));
                        $pay_details = array(
                            'name'   => $this->input->post('chq_bnk_name'),
                            'no'   => $this->input->post('chq_no'),
                            'date'   => $e[2].'-'.$e[1].'-'.$e[0],
                        );
                    endif;
                   
                    $pay_details = json_encode( $pay_details );
                   
                    $insert = array(
                        'pay_ref_type'  => 16,
                        'pay_ref_id'    => $insert_id,
                        'pay_type_id'   => $key,
                        'pay_amount'    => trim($value),
                        'pay_details'   => $pay_details,
                        'status'        => 1,
                        'created_by'    => $this->user_data['user_id'],
                        'created_on'    => date('Y-m-d H:i:s')
                    );
                    $this->temple_institution_model->insert_payment($insert);
                }
            }
            
            /*** To Print Receipt - Start ***/
            $service_menu = $this->login_details_model->get_service_menu_by_id($this->input->post('service_type_id'));
            $prefix = get_general_setting()->prefix;
            
            // Get Temple Activity Details by Last Inserted Id
            $temple_institute = $this->temple_institution_model->get_by_id($insert_id);
            
            $bus_no = ($temple_institute->transport_facility == 1) ? $temple_institute->bus_no : '';
            $args = array(
                'type'      => '1', // Default = 1 // Normal (Double print), '2' => Archanai,   '3' = Hall Booking | Wedding Hall
                'rec_no'    => (($prefix == 1) ? $gst_details->prefix : '') . $receipt_no,
                'title'     => $service_menu->service_name . ' - ' . $gst_details->name,
                'amount'    => array($this->input->post('amount')),
                'gst'       => $gst_details->gst,
                'created_on' => date('Y-m-d H:i:s'),
                
                'data'      => array(
                    // Type = 1 && 3 
                    'name'      => array($this->input->post('devotee_name'), $this->input->post('tamil_devotee_name')),
                    'contact_no'=> $this->input->post('contact_no'),
                    'email'     => $this->input->post('email'),
                    'address'   => $this->input->post('address'),
                    'desc'      => $this->input->post('desc'),
                    
                    'section'  => array(
                        array(
                            'Term<div class="sub-lbl"> காலம்</div>'          => $temple_institute->term_str,
                            'Class Type<div class="sub-lbl"> வகுப்பு வகை</div>'    => $temple_institute->class_type_str,
                            'Class<div class="sub-lbl"> வகுப்பு</div>'         => $temple_institute->class_str,
                            'Transport Facility<div class="sub-lbl"> போக்குவரத்து வசதி</div>'   => $temple_institute->transport,
                            'Bus No<div class="sub-lbl"> பஸ் எண்</div>'    => $bus_no,
                        ),
                    ),
                ),
                
            );
            
            print_rec($args);            
            /*** End ***/
            
        }
        else
            $this->session->set_flashdata('error', 'Billing for Temple Activities is not added!');   
       
        redirect('billing_temple_institution', 'refresh');
    }
    
    public function edit($id = '') {
        if (empty($id)) {
            show_400_error();
        }
        
        $data = array();
        $actions = $this->actions();
        $service_menu = get_billing_controller($actions['controller']);
        
        $data['class_types'] = $this->class_types();
        $data['payments'] = $this->temple_institution_model->payment_mode_lists();
        $data['temple_institute'] = $this->temple_institution_model->get_by_id($id);
        $data['paid_amount'] = $this->temple_institution_model->total_paid_amount($data['temple_institute']->type_id,$data['temple_institute']->id);
        $data['service_type'] = $this->temple_institution_model->get_service_type($data['temple_institute']->type_id);
        
        $actions = $this->actions();
        $data['title'] = $service_menu->service_name;
        $data['form_action'] = $actions['update'] . '/' . $id;
        $this->render($data, 'billing/temple_institution/edit');
    }
    
    public function update($id = '') {
        if (empty($id)) {
            show_400_error();
        }
        
        $temple_institute = $this->temple_institution_model->get_by_id($id);
        $gst_details = $this->login_details_model->get_amount_by_service_id($this->input->post('service_type'));
        
        if($gst_details->gst == 1) {
            $gst = get_general_setting()->gst; 
            $gst_amount = ($gst / 100) * ($this->input->post('amount'));
        } else {
            $gst = '0.00';
            $gst_amount = '0.00';
        }
        
        $update = array(
            'type_id' => $this->input->post('service_type_id'),
            'service_id' => $this->input->post('service_type'),
            'term'=> $this->input->post('term'),
            'transport_facility' => $this->input->post('transport_facility'),
            'bus_no' => $this->input->post('bus_no'),
            'class_type' => $this->input->post('class_type'),
            'class'=> $this->input->post('class'),
            'fee' => $this->input->post('fee'),
            'devotee_name' => $this->input->post('devotee_name'),
            'tamil_name' => $this->input->post('tamil_devotee_name'),
            'contact_no'=> $this->input->post('contact_no'),
            'email' => $this->input->post('email'),
            'url_key' => $this->get_temple_url_key($this->input->post('devotee_name')),
            'sex' => $this->input->post('sex'),
            'address' => $this->input->post('address'),
            'desc'=> $this->input->post('desc'),
            'amount' => $this->input->post('amount'),
            'gst' => $gst,
            'gst_value' => $gst_amount,
            'payment_mode' => $this->input->post('payment_mode'),
            'updated_by' => $this->user_data['user_id'],
            'updated_on' => date('Y-m-d H:i:s')
        );
        
        if ($this->temple_institution_model->update($update, $id) > 0) {
            $this->session->set_flashdata('success', 'Billing for Temple Activities is updated successfully');
            
            $paid_hidden_id = $this->input->post('paid_hidden_id');
            if(!empty($paid_hidden_id)) :
                $this->temple_institution_model->delete_payment_by_paid_id($paid_hidden_id);
            endif;

            $pay_type = $this->input->post('pay_type');
            foreach( $pay_type as $key => $value ) {
                if($value != '') {
                    
                    $this->db->select('slug');
                    $q = $this->db->get_where( TBL_PAY_TYPE, array('id' => $key) );
                    $prow = $q->row_array();
                   
                    $pay_details = array();
                    if( $prow['slug'] == 'cheque' && !empty($value) ) :
                        // Cheque
                        $e = explode('-', $this->input->post('chq_date'));
                        $pay_details = array(
                            'name'   => $this->input->post('chq_bnk_name'),
                            'no'   => $this->input->post('chq_no'),
                            'date'   => $e[2].'-'.$e[1].'-'.$e[0],
                        );
                    endif;
                   
                    $pay_details = json_encode( $pay_details );
                   
                    $insert = array(
                        'pay_ref_type'  => 16,
                        'pay_ref_id'    => $id,
                        'pay_type_id'   => $key,
                        'pay_amount'    => trim($value),
                        'pay_details'   => $pay_details,
                        'status'        => 1,
                        'created_by'    => $this->user_data['user_id'],
                        'created_on'    => $temple_institute->created_on
                    );
                    $this->temple_institution_model->insert_payment($insert);
                }
            }            
        }
        else
            $this->session->set_flashdata('error', 'Billing for Temple Activities is not updated!');    
        
        redirect('billing_temple_institution','refresh');
    }
    
    public function view($id = '') {
        if (empty($id)) {
            show_400_error();
        }
        
        $data = array();
        $actions = $this->actions();
        $service_menu = get_billing_controller($actions['controller']);
        
        $data['temple_institute'] = $this->temple_institution_model->get_by_id($id);
        $data['payments'] = $this->temple_institution_model->get_paid_type_by_id($data['temple_institute']->type_id,$id);
        $data['paid_amount'] = $this->temple_institution_model->total_paid_amount($data['temple_institute']->type_id,$data['temple_institute']->id);
        $data['title'] = $service_menu->service_name;
        $this->render($data, 'billing/temple_institution/view');
    }
    
    public function delete($id = '', $menu_id = '') {
        if (empty($id)) {
            show_400_error();
        }
        
        $update = array ( 
            'amount' => 0,
            'del_reason' => $this->input->post('hidden_del_reason'),
            'status' => 2,
            'updated_by' => $this->user_data['user_id'],
            'updated_on' => date('Y-m-d H:i:s')
        );

        if ($this->temple_institution_model->update($update,$id) > 0) {
            $this->session->set_flashdata('success', 'Billing for Temple Activities is deleted successfully');
            $temple_institute = $this->temple_institution_model->get_by_id($id);
            
            $update = array ( 
                'pay_amount' => 0,
                'updated_by' => $this->user_data['user_id'],
                'updated_on' => date('Y-m-d H:i:s')
            );
            
            $this->temple_institution_model->update_paid_type($update,$temple_institute->type_id,$id);
        }
           
        else 
            $this->session->set_flashdata('error', 'Billing for Temple Activities is not deleted!');
        
        redirect( 'billing_temple_institution/index/' . $menu_id, 'refresh');
    }
    
    public function get_amount_by_service_id() {
        $data =  $this->temple_institution_model->get_amount_by_service_id($_POST['service_type']);
        echo json_encode($data);
        exit(0);
    }
    
    public function print_list($id,$menu_id) {
        $temple_institute = $this->temple_institution_model->get_by_id($id);
        
        /*** To Print Receipt - Start ***/
            $service_menu = $this->login_details_model->get_service_menu_by_id($temple_institute->type_id);
            $gst_details = $this->login_details_model->get_amount_by_service_id($temple_institute->service_id);
            $prefix = get_general_setting()->prefix;
            
            $bus_no = ($temple_institute->transport_facility == 1) ? $temple_institute->bus_no : '-';
            $args = array(
                'type'      => '1', // Default = 1 // Normal (Double print), '2' => Archanai,   '3' = Hall Booking | Wedding Hall
                'rec_no'    => (($prefix == 1) ? $gst_details->prefix : '') . $temple_institute->receipt_no,
                'title'     => $service_menu->service_name . ' - ' . $gst_details->name,
                'amount'    => array($temple_institute->amount),
                'gst'       => $gst_details->gst,
                'status'    => $temple_institute->status,
                'created_on' => $temple_institute->created_on,
                
                'data'      => array(
                    // Type = 1 && 3 
                    'name'      => array($temple_institute->devotee_name .','.  $temple_institute->tamil_name),
                    'contact_no'=> $temple_institute->contact_no,
                    'email'     => $temple_institute->email,
                    'address'   => $temple_institute->address,
                    'desc'      => $temple_institute->desc,
                    
                    'section'  => array(
                        array(
                            'Term<div class="sub-lbl"> காலம்</div>'          => $temple_institute->term_str,
                            'Class Type<div class="sub-lbl"> வகுப்பு வகை</div>'    => $temple_institute->class_type_str,
                            'Class<div class="sub-lbl"> வகுப்பு</div>'         => $temple_institute->class_str,
                            'Transport Facility<div class="sub-lbl"> போக்குவரத்து வசதி</div>'   => $temple_institute->transport,
                            'Bus No<div class="sub-lbl"> பஸ் எண்</div>' => $bus_no,
                        ),
                    ),
                ),
                
            );
            
            if(print_rec($args))
                $this->session->set_flashdata('success', 'Receipt has been printed successfully');
            
            else 
                $this->session->set_flashdata('error', 'Receipt has not been printed!');
                
            /*** End ***/
            
            redirect( 'billing_temple_institution/index/' . $menu_id, 'refresh');
    }
    
    function ajax() {
        
        $post = $this->input->post();
        
        
        switch( $post['act'] ) :
            
            case 'search-student':
               $return = $this->temple_institution_model->search_student(); 
            break;
        
            case 'update' :
                $last_id = $this->temple_institution_model->stu_update();
                $return = $this->temple_institution_model->get_ref_no($last_id);
                
            break;
                
            default :
                
            
            break;
        endswitch;
        
        
        echo json_encode( $return );
        
    }
}
?>