<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Sales extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('MStocks');
        $this->load->model('MSales');
        checkLogin();
    }



    public function _remap($alias = "", $params = array())
    {
        $data['dataValue'] = $this->session;
        $data['pageTitle'] = "Sales";
        switch ($alias) {
            case 'create':
                $data['items'] = $this->MStocks->getSellableItems();
                $data['fiscalStart'] = NepaliDate($this->session->userdata['FiscalYear']->fiscalyear_from);
                $data['fiscalEnd'] = NepaliDate($this->session->userdata['FiscalYear']->fiscalyear_to);
                loadView("inventory/sales/create", $data);
                break;
            case 'store':

                // print_r(filter_var($_POST['salesDate']));die;
                if (isset($_POST['accounts_id'])) {
                    $TableData = array(
                        'transaction_type' => "Sales Entry",
                        'accounts_id' => filter_var($_POST['accounts_id']),
                        'sales_date' => filter_var($_POST['salesDate']),
                        'discount' => filter_var($_POST['discountpercentage']),
                        'vatToggle' => filter_var($_POST['vatToggleValue']),
                        'created_on' => date('Y-m-d H:i:s'),
                        'created_by' => 'admin',
                        'remarks' => '',
                        'status' => 1,
                    );
                    $this->db->insert('tbl_sales', $TableData);
                    $sales_id = $this->db->insert_id();
                    $i = 0;
                    // print_r($_POST);die;

                    foreach ($_POST['item_id'] as $item) {
                        if ($item != 0 || $_POST['qty'][$i] != 0 || $_POST['rate'][$i] != 0 || $_POST['vat'][$i] != 0) :
                            $TableData = array(
                                'sales_id' => $sales_id,
                                'items_id' => $item,
                                'qty' => $_POST['qty'][$i],
                                'rate' => $_POST['rate'][$i],
                                'vat' => $_POST['vat'][$i],
                                'created_on' => date('Y-m-d H:i:s'),
                                'created_by' => 'admin',
                                'status' => 1,
                            );
                            $i += 1;
                            $this->db->insert('tbl_salesdetails', $TableData);
                        endif;
                    }
                }
                // print_r($TableData);
                // die;

                // $this->db->where('sales_id', $sales_id);
                $this->MStocks->addSalesToStock($this->db->where('sales_id', $sales_id)->get('tbl_salesdetails')->result());
                redirect("inventory/sales/list");
                break;
            case 'sales_register':

                if (!isset($_POST['fromDate'])) {
                    $data['fromDate'] = null;
                }
                if (!isset($_POST['toDate'])) {
                    $data['toDate'] = null;
                }
                if (isset($_POST)) {
                    $data = $_POST;
                }
                $data['fiscalStart'] =  NepaliToEnglishDate($data['fromDate'] ?? $this->session->userdata['FiscalYear']->fiscalyear_from);
                $data['fiscalEnd'] = NepaliToEnglishDate($data['toDate'] ?? $this->session->userdata['FiscalYear']->fiscalyear_to);
                $data['pageTitle'] = "Sales & Register";

                $data['SalesRecords'] = $this->MSales->getSalesRecords($data['fiscalStart'],$data['fiscalEnd']);
                loadView("inventory/sales/register", $data);
                break;
            case 'details':
                $id = $this->uri->segment(4);
                $data['Sales'] = $this->db->where('sales_id', $id)->get("tbl_sales")->row();
                $data['SalesDetails'] = $this->db->where('sales_id', $id)->get('tbl_salesdetails')->result();
                loadView("inventory/sales/view", $data);
                break;
            case 'edit':
                if (isset($_POST['submit'])) {
                    $id = $this->uri->segment(4);
                    $TableData = array(
                        'transaction_type' => filter_var($_POST['transaction_type']),
                        'accounts_id' => filter_var($_POST['accounts_id']),
                        'sales_date' => filter_var($_POST['sales_date']),
                        'discount' => filter_var($_POST['discountpercentage']),
                        'created_on' => date('Y-m-d H:i:s'),
                        'created_by' => 'admin',
                        'remarks' => filter_var($_POST['remarks']),
                        'status' => 1,
                    );
                    $this->db->where('sales_id', $id);
                    $this->db->update('tbl_sales', $TableData);
                    redirect("inventory/sales/list");
                }
                loadView("inventory/sales/edit", $data);
                break;
            case 'delete':
                $id = $this->uri->segment(4);
                $this->db->where('sales_id', $id);
                $this->db->delete('tbl_sales');
                $this->db->where('sales_id', $id);
                $this->db->delete('tbl_salesdetails');
                redirect("inventory/sales/list");
                break;

            case 'getunitbyitem':
                $id = $this->uri->segment(4);
                $unit = $this->MStocks->getUnitByItemId($id);
                echo json_encode($unit);
                break;

            default:
                $data['SalesRecords'] = $this->MSales->getSalesRecords();
                loadView("inventory/sales/list", $data);
        }
    }


    // public function getUnitByItemId($id) {
    //     $unitName = $this->MStocks->getUnitByItemId($id);
    //     echo json_encode(['unitName' => $unitName]);
    // }
}