<?php

namespace app\api\controller;

use app\common\model\StockConfig;
use app\api\service\StockService;
use app\common\model\StockLog;
use think\exception\ValidateException;
use app\api\validate\Stock as StockValidate;
use think\facade\Db;

class Inventory extends Base
{


    //品种包装箱/出入库列表
    public function stockList(StockConfig $stockConfig)
    {
        $type_id = $this->request->post('type_id', 'variety_name');
        if(!in_array($type_id, [$stockConfig::VarietyName, $stockConfig::PackingBox, $stockConfig::Material])) $this->error(__('参数错误'));
        $list = $stockConfig::where('type_id', $type_id)->field('id,title,field_name,unit')->select();
        $this->success('ok', $list);
    }


    //添加出入库
    public function stock(StockLog $stockLog, StockService $stockService)
    {
        $data = $this->request->post();
        $result = false;
        Db::startTrans();
        try {
          
            validate(StockValidate::class)->scene('add')->check($data);
            
            $resData = $stockService::setGoOutStock($this->userinfo['id'], $data);
        
            $result = $stockLog->saveAll($resData);
            Db::commit();
        }catch (ValidateException $e) {
      
            return $this->error($e->getError());
        } catch (\Exception $e) {
            Db::rollback();
            $this->error($e->getMessage());
        }
        if ($result === false) {
            $this->error(__('没有新增任何数据'));
        }
        $this->success();
    }

    //出入库记录
    public function stocklog(StockLog $stockLog)
    {
        $where = [];
        $type    = $this->request->post('type/s', '');
        $type_id = $this->request->post('type_id/s', '');
        $spec_id = $this->request->post('spec/s', '');
        $limit = $this->request->post('limit/d', 15);  //条数
        $time = $this->request->post('create_time/s'); //日期
        if(!empty($type))    $where[] = ['a.type', '=', $type];
        if(!empty($type_id)) $where[] = ['a.type_id', '=',$type_id];
        if(!empty($spec_id)) $where[] = ['a.variety_id', '=',$spec_id];
        if(!empty($time)){
            $arr = explode(',', $time);
            $where[] = ['a.createtime', '>=', strtotime($arr[0])];
            $where[] = ['a.createtime', '<=', strtotime($arr[1])];
        }
        $list = $stockLog::alias('a')
                ->leftjoin('stock_config b', 'a.variety_id = b.id')
                ->where('a.user_id', $this->userinfo['id'])
                ->where($where)
                ->field('a.*,b.title')
                ->order('a.id desc')
                ->paginate($limit);
        $this->success('ok', $list);
    }

   
   
}