<?php

namespace App\Admin\Controllers;

use App\Models\Activity;
use App\Http\Controllers\Controller;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Show;
use Illuminate\Http\Request;
use App\Imports\GoodsImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Admin\Extensions\Tools\UserGender;
use App\Models\Goods;
use Matrix\Exception;

class ActivityController extends Controller {
	use HasResourceActions;

	/**
	 * Index interface.
	 *
	 * @param Content $content
	 * @return Content
	 */
	public function index(Content $content) {
		return $content->header ( '活动' )->description ( '列表' )->body ( $this->grid () );
	}

	/**
	 * Edit interface.
	 *
	 * @param mixed $id
	 * @param Content $content
	 * @return Content
	 */
	public function edit($id, Content $content) {
		return $content->header ( '活动' )->description ( '编辑' )->body ( $this->form ()->edit ( $id ) );
	}

	/**
	 * Create interface.
	 *
	 * @param Content $content
	 * @return Content
	 */
	public function create(Content $content) {
		return $content->header ( '活动' )->description ( '发起' )->body ( $this->form () );
	}

	/**
	 * Make a grid builder.
	 *
	 * @return Grid
	 */
	protected function grid() {
		$grid = new Grid ( new Activity () );
		$grid->id ( '活动编号' )->sortable ();
		$grid->name ( '活动名称' );
		$grid->goods_num ( '商品数量' )->display ( function () {
			return  Goods::where('activity_id',$this->id)->count(); 
		} );
		$grid->status ( '状态' )->display ( function ($status) {
			return $status ? '生效中' : '未生效';
		} );
		$grid->starttime ( '开始时间' );
		$grid->endtime ( '结束时间' );
		$grid->actions ( function ($actions) {
			$actions->disableView ();
			$url1 = url ( 'admin/activity_excel?activity_id=' ) . $actions->row->id;
			$actions->append ( "<a href='{$url1}'> 批量导入</a>" );
			$url2 = url ( 'admin/goods?activity_id=' ) . $actions->row->id;
			$actions->append ( "<a href='{$url2}'> 商品列表</a>" );
			$url3 = url ( 'admin/activity_change_status?activity_id=' ) . $actions->row->id;
			$text=$actions->row->status?'下线':'上线';
			$actions->append ( "<a href='{$url3}'> {$text}</a>" );
		} );
		$grid->disableExport ();
		$grid->filter ( function ($filter) {

			$filter->disableIdFilter ();
			$filter->like ( 'name', '活动名称' );
			$filter->like ( 'sn', '活动编码' );
			$filter->between ( 'starttime', '开始时间' )->date ();
			$filter->between ( 'endtime', '结束时间' )->date ();
			$filter->equal ( 'status', '状态' )->select ( Activity::$statusArr );
		} );

		return $grid;
	}

	/**
	 * Make a form builder.
	 *
	 * @return Form
	 */
	protected function form() {
		$form = new Form ( new Activity () );

		$form->text ( 'name', '活动名称' )->required ();
		$form->textarea ( 'description', '活动描述' )->required ();
		$form->datetime ( 'starttime', '生效时间' )->default ( date ( 'Y-m-d H:i:s' ) )->required ();
		$form->datetime ( 'endtime', '结束时间' )->default ( date ( 'Y-m-d H:i:s' ) )->required ();
		$form->hidden ( 'status' )->value(0);
//		$states = [
//				'on' => [
//						'value' => 1,
//						'text' => '开启',
//						'color' => 'success'
//				],
//				'off' => [
//						'value' => 0,
//						'text' => '关闭',
//						'color' => 'danger'
//				]
//		];
//
//		$form->switch ( 'status', '状态' )->states ( $states );
        $form->tools(function (Form\Tools $tools) {
            $tools->disableView();
        });
        $form->disableViewCheck();
		return $form;
	}
	public function excel(Content $content) {
		$form = new Form ( new Activity () );
        $form->html('<a href="https://openxons.oss-cn-beijing.aliyuncs.com/leyou/sample.xlsx">sample.xlsx</a>', 'demo下载');
		$form->setAction ( url ( 'admin/activity_upload_excel' ) );
		$form->file ( 'excel' )->placeholder ( '请上传excel表格,顺序:' );
		$form->hidden ( 'activity_id' )->default ( request ()->activity_id );
		return $content->header ( '活动' )->description ( '导入商品' )->body ( $form );
	}
	public function uploadExcel(Request $request) {
	    try {
            Excel::import(new GoodsImport (), $request->excel);
        }catch(\Exception $exception){
            admin_toastr($exception->getMessage(), 'error');
            return redirect ( '/admin/activity_excel?activity_id=' . request ()->activity_id );
        }
		return redirect ( '/admin/goods?activity_id=' . request ()->activity_id );
	}
	function changeStatus(Request $request){
		$activityId=$request->activity_id;
		$activity=Activity::find($activityId);
		if($activity->status==1){
			$activity->status=0;
		}else{
			$activity->status=1;
// 			$start = $activity->starttime;
// 			$end = $activity->endtime;
// 			//查找所有线上活动
//             $activities = Activity::where('status', Activity::STATUS_ONLINE)->get();
//             foreach ($activities as $singleActivity){
//                 //查找线上是否有时间重合的活动
//                 if(strtotime($end) <= strtotime($singleActivity->starttime) || strtotime($start) >= strtotime($singleActivity->endtime)){
//                     continue;
//                 }else{
//                     admin_toastr('线上活动与当前活动时间重叠', 'error');
//                     return redirect ( '/admin/activity');
//                 }
//             }
		}
		$activity->save();
        admin_toastr('操作成功！', 'success');
		return redirect ( '/admin/activity');
	}
}
