<?php

namespace App\Admin\Forms;

use App\Models\GoodSku;
use App\Models\MerchantStore;
use App\Models\MerchantGoodSku;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Form\NestedForm;
use Dcat\Admin\Widgets\Table;
use Dcat\Admin\Widgets\Tool;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Illuminate\Support\Facades\DB;
//
class MerchantStoreForms extends Form implements LazyRenderable
{
  use LazyWidget;
  protected $modalId = 'show-current-user';

  /**
   * Handle the form request.
   *
   * @param array $input
   *
   * @return mixed
   */
  public function handle(array $input)
  {
    $typeid = (int)$_POST['typeid']; //1:增加 2:编辑
    $goods_id = (int)$_POST['goods_id'];
    $mgs_id = (int)$_POST['mgs_id'];
    $attr_ids = $_POST['attr_id'];
    $stocks = $_POST['stock'];
    $sskuids = isset($_POST['sskuid']) ? $_POST['sskuid'] : [];
    if (!$goods_id || !$mgs_id || !$attr_ids || !$stocks) {
      return $this->response()->error('参数错误')->refresh();
    }
    $logData = [];
    if ($typeid == 1) {
      foreach ($attr_ids as $kk => $vv) {
        $gskuObj = GoodSku::find($vv);
        $stockNum = ($gskuObj->stock >= $stocks[$kk] && $stocks[$kk]) ? (int)$stocks[$kk] : 0;
        //$tmp['stock'] = $stockNum;
        //查下库存记录是否存在
        $skuObj = MerchantGoodSku::where(['mgs_id' => $mgs_id, 'goods_id' => $goods_id, 'attr_id' => $vv])->first();
        if ($skuObj) {
          $skuObj->stock += $stockNum;
          $skuObj->save();
        } else {
          $skuObj = new MerchantGoodSku();
          $skuObj->mgs_id = $mgs_id;
          $skuObj->goods_id = $goods_id;
          $skuObj->attr_id = $vv;
          $skuObj->stock = $stockNum;
          $skuObj->save();
        }

        //记录操作日志
        $logData[$kk]['mgs_id'] = $mgs_id;
        $logData[$kk]['goods_id'] = $goods_id;
        $logData[$kk]['attr_id'] = $gskuObj->id;
        $logData[$kk]['change'] = $stockNum;
        $logData[$kk]['created_at'] = date('Y-m-d H:i:s');
        $this->addStoreLog($logData);
      }
    } else {
      if (!$sskuids) {
        return $this->response()->error('参数错误')->refresh();
      }
      foreach ($sskuids as $kk => $vv) {
        //商家规格数据
        $skuObj = MerchantGoodSku::find($vv);
        $store_num = (int)$stocks[$kk]; //减少库存数
        $diffnum = $skuObj->stock - $store_num; //减少差值
        if ($store_num && $diffnum >= 0) {
          $skuObj->stock = $diffnum;
          $skuObj->save();
          //记录操作日志
          $logData[$kk]['mgs_id'] = $mgs_id;
          $logData[$kk]['attr_id'] = $skuObj->attr_id;
          $logData[$kk]['goods_id'] = $goods_id;
          $logData[$kk]['change'] = -$store_num;
          $logData[$kk]['created_at'] = date('Y-m-d H:i:s');
          $this->addStoreLog($logData);
        }
      }
    }


    return $this
      ->response()
      ->success('Processed successfully.')
      ->refresh();
  }

  private function addStoreLog($data = [])
  {
    if (!$data) {
      return true;
    }
    DB::table('merchant_store_sku_log')->insert($data);
  }

  /**
   * Build a form here.
   */
  public function form()
  {
    //$this->text('name')->required();
    //$this->email('email')->rules('email');

    // 异步加载的字段
    $this->html('<div class="row">
                        <div class="col-md-12">
                            <table class="table">
                                <thead>
                                    <tr>
                                        <th width="23%" style="text-align:center;">商品名称</th>
                                        <th width="23%" style="text-align:center;">商品规格</th>
                                        <th width="23%" style="text-align:center;" id="storeTitle"></th>
                                        <th width="23%" style="text-align:center;">剩余库存</th>
                                    </tr>
                                </thead>
                                <tbody id="tabletr">
                                    <!-- 表格数据 -->
                                    <!--<tr>
                                        <td style="text-align:center;vertical-align: middle;">数据1</td>
                                        <td style="text-align:center;vertical-align: middle;">蓝色、大号</td>
                                        <td ><input type="text" name="remark" value="" class="form-control field_remark _normal_" placeholder=""></td>
                                        <td style="text-align:center;vertical-align: middle;">123</td>
                                    </tr>-->
                                    <!-- 更多行数据 -->
                                </tbody>
                            </table>
                        </div>
                    </div>', $synchronized = false);
  }


  public function render2()
  {
    // // 构建表单
    return view('admin.mstore');
    //return parent::render();
  }

  /**
   * The data of the form.
   *
   * @return array
   */
  public function default()
  {
    return [
      'name'  => '6785678567',
      'email' => 'John.Doe@gmail.com',
    ];
  }
}