<?php
class Warehouse_DayCardController extends Ec_Controller_Action
{
    public function preDispatch()
    {
        $this->tplDirectory = "warehouse/views/default/";
        $this->serviceClass = new Service_WarehouseCardDay();
    }

	/**
     * [listAction description]
     * @return [type] [description]
     */
    public function listAction()
    {
        $status = Service_WarehouseCardDay::status('auto');
        if ($this->_request->isPost()) {
            $page = $this->_request->getParam('page', 1);
            $pageSize = $this->_request->getParam('pageSize', 20);
            $page = $page ? $page : 1;
            $pageSize = $pageSize ? $pageSize : 20;
            $return = array(
                "state" => 0,
                "message" => "No Data"
            );
            $params = $this->_request->getParams();
            $condition = $this->serviceClass->getMatchFields($params);
            $count = $this->serviceClass->getByCondition($condition, 'count(*)');
            $return['total'] = $count;
            if ($count) {
                $showFields=array(
                    'wcd_id',
                    'wcd_customer_code',
                    'wcd_warehouse_code',
                    'wcd_card_day_num',
                    'wcd_card_day_time',
                    'wcd_add_time',
                    'wcd_update_time',
                    'wcd_status',
                    'wcd_code'
                );
                $showFields = $this->serviceClass->getFieldsAlias($showFields);
                $rows = $this->serviceClass->getByCondition($condition,$showFields, $pageSize, $page, array('wcd_id desc'));
                $return['data'] = $rows;
                $return['state'] = 1;
                $return['status'] = $status;
                $return['message'] = "";
            }
            die(Zend_Json::encode($return));
        }
        $this->view->areaType = $areaType;
        $this->view->category = $category;
        $this->view->curDate  = date('Y-m-d H:i:s');
        echo Ec::renderTpl($this->tplDirectory . "day_card_index.tpl", 'layout');
    }
    
    /**
     * [editAction description]
     * @return [type] [description]
     */
    public function editAction()
    {
        $return = array(
            'state' => 0,
            'message' => '',
            'errorMessage'=>array('Fail.')
        );
        $_date = date('Y-m-d H:i:s');
        if ($this->_request->isPost()) {
            $params = $this->_request->getParams();
            $row = array(
                'wcd_id'=>'',
                'wcd_customer_code'=>'',
                'wcd_warehouse_code'=>'',
                'wcd_card_day_num'=>'',
                'wcd_card_day_time'=>'',
                'wcd_status'=>'',
            );
            $row = $this->serviceClass->getMatchEditFields($params, $row);
            $paramId = $row['wcd_id'];
            if (!empty($row['wcd_id'])) {
                unset($row['wcd_id']);
            }
            $errorArr = $this->serviceClass->validator($row, $paramId);
            if (!empty($errorArr)) {
                $return = array(
                    'state' => 0,
                    'message'=>'',
                    'errorMessage' => $errorArr
                );
                die(Zend_Json::encode($return));
            }
            $row['wcd_customer_code'] = strtoupper($row['wcd_customer_code']);
            if(!empty($row['wcd_warehouse_code'])){
                $warehouseData = Service_Warehouse::getByField($row['wcd_warehouse_code'], 'warehouse_id', array('warehouse_code'));
                $row['wcd_warehouse_code'] = $warehouseData['warehouse_code'];
            }else {
                $row['wcd_warehouse_code'] = 'ALL';
            }
            $row['wcd_update_time'] = $_date;
            $row['wcd_update_user_id'] = $this->_userAuth->user['user_id'];
            //更新暂时没用
            if (!empty($paramId)) {
                $count = $this->serviceClass->getByCondition(array('no_wcd_id'=>$paramId, 'wcd_customer_code' => $row['wcd_customer_code'], 'wcd_warehouse_code' => $row['wcd_warehouse_code']), 'count(*)');
                if($count){
                    $result = false;
                    $return['errorMessage'] = array('客户['.$row['wcd_customer_code'].']-仓库['.$row['wcd_warehouse_code'].']'.Ec::Lang('exist').',请在原始数据上修改即可。');
                }else {
                    $result = $this->serviceClass->update($row, $paramId);
                }

            }else {
                $row['wcd_code'] = Common_GetNumbers::getCode('warehouse_day_card_number', 12, 'WCD', '仓库日卡位维护编号');
                $row['wcd_add_time'] = $_date;
                $row['wcd_add_user_id'] = $this->_userAuth->user['user_id'];
                $result = $this->serviceClass->add($row);
                //扣费
                if($result){
                    $row['wcd_id'] = $result;
                    $obj = Process_QckwfProcess::getInstance();
                    $deductResult = $obj->deductDayQckwfFee('QCKWF-01', $row);
                    if($deductResult['state'] == 0){
                        $result = false;
                        $return['errorMessage'] = array($deductResult['message']);
                    }
                }
            }
            if ($result) {
                $return['state'] = 1;
                $return['message'] = array('Success.');
            }
        }
        die(Zend_Json::encode($return));
    }

    public function getByJsonAction()
    {
        $result = array('state' => 0, 'message' => 'Fail', 'data' => array());
        $paramId = $this->_request->getParam('paramId', '');
        if (!empty($paramId) && $rows = $this->serviceClass->getByField($paramId, 'wcd_id')) {
            $rows = $this->serviceClass->getVirtualFields($rows);
            $warehouseData = Service_Warehouse::getByField($rows['E2'], 'warehouse_code', array('warehouse_id'));
            $rows['E2'] = $warehouseData['warehouse_id'];
            $result = array('state' => 1, 'message' => '', 'data' => $rows);
        }
        die(Zend_Json::encode($result));
    }

    public function deleteAction()
    {
        $result = array(
            "state" => 0,
            "message" => "Fail."
        );
        if ($this->_request->isPost()) {
            $paramId = $this->_request->getPost('paramId');
            if (!empty($paramId)) {
                if ($this->serviceClass->delete($paramId)) {
                    $result['state'] = 1;
                    $result['message'] = 'Success.';
                }
            }
        }
        die(Zend_Json::encode($result));
    }
}