<?php

namespace App\Http\Controllers\Statistics;

use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\View;

/**
 * web端前台系统控制器基类
 * Class StatisticsBaseController
 * @package App\Http\Controllers\Web
 */
class StatisticsBaseController extends BaseController
{
    protected function sendSuccessResponse($data = [])
    {
        $responseData['message']='OK';
        $responseData['data']=$data;
        return response()->json($responseData);
    }

    protected function sendErrorResponse($message, $data = [], $status = 400)
    {
        $responseData['message']=$message;
        $responseData['errors']=$data;
        return response()->json($responseData)->setStatusCode($status);
    }

    /**
     * 显示信息页面
     * @param $message
     * @param $jump_url
     * @param bool $is_error
     * @param string $return_page_name
     * @param int $count_down
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    protected function showMessage($message, $jump_url, $is_error = false, $return_page_name = "上一页", $count_down = 10)
    {
        return view('app.show_message', compact(['message', 'jump_url', 'is_error', 'return_page_name', 'count_down']));
    }

    /**
     * 平板查询失败页面
     * @param $message
     * @param $jump_url
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    protected function notFount($message)
    {
        return view('app.hardware.pad.notfound', compact(['message']));
    }

    protected function putSeoData($key, $value)
    {
        $unset_keys=['username', 'password', 'remember_token'];
        foreach ($unset_keys as $unset_key) {
            unset($value[$unset_key]);
        }
        $seo_data=View::shared('seo_data', []);
        $seo_data[$key]=$value;
        View::share('seo_data', $seo_data);
    }

    /**
     * @return \Illuminate\Contracts\Auth\Authenticatable|null
     */
    protected function getLoginUser()
    {
        if (Auth::guard('web-statistics')->check()) {
            return Auth::guard('web-statistics')->user();
        }

        return null;
    }

    //日期过滤
    public function getDateDetail($params)
    {
        if (array_has($params, 'starttime')) {
            $start_date = $params['starttime'];
        } else {
            $sdate = date('Y-m-01', strtotime(date("Y-m-d")));
            $start_date = session('caiqing_start_date', $sdate);
        }
        if (array_has($params, 'endtime')) {
            $end_date = $params['endtime'];
        } else {
            $end_date = session('caiqing_end_date', date('Y-m-d'));
        }

        session(['caiqing_start_date' => $start_date]);
        session(['caiqing_end_date' => $end_date]);

        return [
            'start_date' => $start_date,
            'end_date'   => $end_date
        ];
    }
    //获取对比时间
    public function getCompareDate($params)
    {
        $start_date = '';
        $end_date   = '';
        if (array_has($params, 'start_date')) {
            $start_date = $params['start_date'];
        } else {
            $start_date = session('caiqing_compare_start_date', null);
        }
        if (array_has($params, 'end_date')) {
            $end_date = $params['end_date'];
        } else {
            $end_date = session('caiqing_compare_end_date', null);
        }

        if (!$start_date && !$end_date) {
            $start_date = null;
            $sdate = date('Y-m-01', time());
            $edate = date('Y-m-d', time());
            $end_date = $sdate.' - '.$edate;    //月初 - 当前时间
        }
        session(['caiqing_compare_start_date' => $start_date]);
        session(['caiqing_compare_end_date' => $end_date]);

        $compare_start_date_arr = array();
        $compare_end_date_arr   = array();
        if ($start_date) {
            $compare_start_date_arr = explode(' - ', $start_date);
        }
        if ($end_date) {
            $compare_end_date_arr   = explode(' - ', $end_date);
        }
        return array(
            'start_date_arr'     => $compare_start_date_arr,
            'end_date_arr'       => $compare_end_date_arr,
            'compare_start_date' => $start_date,
            'compare_end_date'   => $end_date,
        );
    }

    //时间过滤条件
    public function getDateParams($params)
    {
        //判断是否有时间过滤,没有则选择读取session中的时间值,session没有值时读取当前年月时间
        if (array_has($params, 'start_year')) {
            $start_year = $params['start_year'];
        } else {
            $start_year = session('caiqing_start_year', date('Y'));
        }
        if (array_has($params, 'start_mouth')) {
            $start_month = $params['start_mouth'];
        } else {
            $start_month = session('caiqing_start_month', date('m'));
        }

        if (array_has($params, 'end_year')) {
            $end_year = $params['end_year'];
        } else {
            $end_year = session('caiqing_end_year', date('Y'));
        }
        if (array_has($params, 'end_mouth')) {
            $end_month = $params['end_mouth'];
        } else {
            $end_month = session('caiqing_end_month', date('m'));
        }

        if (array_has($params, 'starttime')) {
            $start_date = $params['starttime'];
        } else {
            $sdate = date('Y-m-01', strtotime(date("Y-m-d")));
            $start_date = session('caiqing_start_date', $sdate);
        }
        if (array_has($params, 'endtime')) {
            $end_date = $params['endtime'];
        } else {
            $end_date = session('caiqing_end_date', date('Y-m-d'));
        }

        session(['caiqing_start_date' => $start_date]);
        session(['caiqing_end_date' => $end_date]);

        session(['caiqing_start_year' => $start_year]);
        session(['caiqing_start_month' => $start_month]);
        session(['caiqing_end_year' => $end_year]);
        session(['caiqing_end_month' => $end_month]);

        return [
            'start_year' => $start_year,
            'start_month'=> (int)$start_month,
            'end_year'   => $end_year,
            'end_month'  => (int)$end_month,
            'start_date' =>$start_date,
            'end_date'   =>$end_date
        ];
    }
    public function getDataType($params)
    {
        if (array_has($params, 'type')) {
            $data_type = $params['type'];
        } else {
            $data_type = session('caiqing_data_type', 1);
        }
        session(['caiqing_data_type' => $data_type]);
        return $data_type;
    }
    public function getFilterType($params)
    {
        if (array_has($params, 'filter_type')) {
            $filter_type = $params['filter_type'];
        } else {
            $filter_type = session('caiqing_filter_type', 2);
        }
        session(['caiqing_filter_type' => $filter_type]);
        return $filter_type;
    }
    public function getFiterJobfair($params)
    {
        if (array_has($params, 'jobfair_id')) {
            $jobfair_id = $params['jobfair_id'];
        } else {
            $jobfair_id = session('caiqing_data_jobfairid', '');
        }
        session(['caiqing_data_jobfairid' => $jobfair_id]);
        return $jobfair_id;
    }
}