<?php

namespace App\Admin\Forms;

use App\Models\GoodSku;
use App\Models\MerchantGoodsStore;
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 MerchantSubStoreForms 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)
  {
    $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();
    }

    if (!$sskuids) {
      return $this->response()->error('参数错误')->refresh();
    }
    $logData = [];
    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'] = $skuObj->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->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;">减少库存</th>
                                        <th width="23%" style="text-align:center;">剩余库存</th>
                                    </tr>
                                </thead>
                                <tbody id="tabletr2">
                                </tbody>
                            </table>
                        </div>
                    </div>');
  }



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