<?php
/**
 * Created by PhpStorm.
 * User: michaelwu
 * Date: 2018/10/31
 * Time: 10:02
 */

namespace App\Http\Controllers\Mobile\Company;

use App\Http\Controllers\Mobile\MobileBaseController;
use App\Models\CompanyTalent;
use App\Models\CompanyTalentBase;
use App\Models\CompanyTalentNeed;
use App\Models\CompanyTalentSuggest;
use Illuminate\Http\Request;

class TalentController extends MobileBaseController
{
    private $_sub_site = '';

    public function __construct()
    {
        if (get_subsite_id() > 0) {
            $this->_sub_site = 'jkq.';
        }
    }

    /**
     * 人才管理
     */
    public function index()
    {
        $company = auth('web-company')->user();
        $base    = CompanyTalentBase::where('id', $company->id)->first();
        if (empty($base)) {
            return redirect(route($this->_sub_site . 'mobile.company.talent.base_info'));
        }

        return view('mobile.app.company.talent.index', ['wap_title' => '人才管理', 'company' => $company, 'base' => $base]);
    }

    /**
     * 企业基础信息
     */
    public function baseInfo()
    {
        $company = auth('web-company')->user();
        $base    = CompanyTalentBase::where('id', $company->id)->first();
        if (empty($base)) {
            $base = [
                'company_grade'    => 1,
                'laboratory_grade' => 1,
            ];
        }

        $data = [
            'wap_title'        => '企业基础信息',
            'company'          => $company,
            'base'             => $base,
            'company_grade'    => CompanyTalentBase::$company_grade,
            'laboratory_grade' => CompanyTalentBase::$laboratory_grade,
        ];
        return view('mobile.app.company.talent.base_info', $data);
    }

    /**
     * 提交基础信息
     */
    public function baseInfoSave(Request $request)
    {
        $company = auth('web-company')->user();
        $data    = $request->all();

        foreach ($data as &$v) {
            if (empty($v)) {
                $v = 0;
            }
        }

        $data['updated_at'] = date('Y-m-d H:i:s');
        $base               = CompanyTalentBase::where('id', $company->id)->first();
        if (empty($base)) {
            $data['id'] = $company->id;
            CompanyTalentBase::create($data);
        } else {
            CompanyTalentBase::where('id', $company->id)->update($data);
        }

        return $this->sendSuccessResponse();
    }

    /**
     * 人才信息
     */
    public function talentList(Request $request)
    {
        $company = auth('web-company')->user();

        $size = 8;
        $rst  = CompanyTalent::where('company_id', $company->id)->paginate($size);

        if ($request->ajax()) {
            if ($rst->lastPage() < $rst->currentPage()) {
                return response()->json(['status' => 0]);
            }
            return response()->json(['status' => 1, 'data' => view('mobile.app.company.talent.ajax_talent_list', ['list' => $rst])->render()]);
        }
        $mobile_dropload = false;
        if ($rst->total() > $size) {
            $mobile_dropload = true;
        }
        $return_data = [
            'list'            => $rst,
            'current_url'     => \Illuminate\Support\Facades\Request::getRequestUri(),
            'wap_title'       => '人才信息列表',
            'mobile_dropload' => $mobile_dropload,
            'back_url'        => route('mobile.company.talent.index'),
        ];

        return view('mobile.app.company.talent.talent_list', $return_data);
    }

    /**
     * 人才删除
     */
    public function talentDelete(Request $request)
    {
        $id  = $request->input('id');
        $res = CompanyTalent::destroy($id);
        if ($res) {
            return response()->json(['status' => 1, 'msg' => '删除成功']);
        } else {
            return response()->json(['status' => 0, 'msg' => '网络问题,请刷新重试']);
        }
    }

    /**
     * 人才信息
     */
    public function talentInfo(Request $request)
    {
        $id   = $request->input('id');
        $info = [];
        if (!empty($id)) {
            $info = CompanyTalent::where('id', $id)->first();
        }

        return view('mobile.app.company.talent.talent_info', ['info' => $info, 'wap_title' => '人才信息']);
    }

    /**
     * 人才信息保存
     */
    public function talentInfoSave(Request $request)
    {
        $data = $request->all();

        if (empty($data['id'])) {
            $company            = auth('web-company')->user();
            $data['company_id'] = $company->id;
            CompanyTalent::create($data);
        } else {
            CompanyTalent::where('id', $data['id'])->update($data);
        }

        return $this->sendSuccessResponse();
    }

    /**
     * 意见建议
     */
    public function talentSuggest()
    {
        return view('mobile.app.company.talent.talent_suggest', ['wap_title' => '意见建议']);
    }

    /**
     * 意见建议保存
     */
    public function talentSuggestSave(Request $request)
    {
        $data = $request->all();

        foreach ($data as &$v) {
            if (empty($v)) {
                $v = '';
            }
        }

        $company            = auth('web-company')->user();
        $data['company_id'] = $company->id;
        CompanyTalentSuggest::create($data);

        return $this->sendSuccessResponse();
    }

    /**
     * 人才需求列表
     */
    public function needList(Request $request)
    {
        $company = auth('web-company')->user();

        $size = 8;
        $rst  = CompanyTalentNeed::where('company_id', $company->id)->paginate($size);

        if ($request->ajax()) {
            if ($rst->lastPage() < $rst->currentPage()) {
                return response()->json(['status' => 0]);
            }
            return response()->json(['status' => 1, 'data' => view('mobile.app.company.talent.ajax_need_list', ['list' => $rst])->render()]);
        }
        $mobile_dropload = false;
        if ($rst->total() > $size) {
            $mobile_dropload = true;
        }
        $return_data = [
            'list'            => $rst,
            'current_url'     => \Illuminate\Support\Facades\Request::getRequestUri(),
            'wap_title'       => '人才需求列表',
            'mobile_dropload' => $mobile_dropload,
            'type'            => CompanyTalentNeed::$type,
            'back_url'        => route('mobile.company.talent.index'),
        ];

        return view('mobile.app.company.talent.need_list', $return_data);
    }

    /**
     * 删除需求
     */
    public function needDelete(Request $request)
    {
        $id  = $request->input('id');
        $res = CompanyTalentNeed::destroy($id);
        if ($res) {
            return response()->json(['status' => 1, 'msg' => '删除成功']);
        } else {
            return response()->json(['status' => 0, 'msg' => '网络问题,请刷新重试']);
        }
    }

    /**
     * 需求详情
     */
    public function needInfo(Request $request)
    {
        $id   = $request->input('id');
        $info = ['type' => 1];
        if (!empty($id)) {
            $info = CompanyTalentNeed::where('id', $id)->first();
        }

        $rst = [
            'info'                  => $info,
            'wap_title'             => '人才信息',
            'type'                  => CompanyTalentNeed::$type,
            'cooperation'           => CompanyTalentNeed::$cooperation,
            'manager_level'         => CompanyTalentNeed::$manager_level,
            'manager_qualification' => CompanyTalentNeed::$manager_qualification,
            'manager_education'     => CompanyTalentNeed::$manager_education,
            'technology_level'      => CompanyTalentNeed::$technology_level,
            'technology_education'  => CompanyTalentNeed::$technology_education,
            'skill_level'           => CompanyTalentNeed::$skill_level,
        ];
        return view('mobile.app.company.talent.need_info', $rst);
    }

    /**
     * 需求提交
     */
    public function needInfoSave(Request $request)
    {
        $data = $request->all();

        if (empty($data['id'])) {
            $company            = auth('web-company')->user();
            $data['company_id'] = $company->id;
            CompanyTalentNeed::create($data);
        } else {
            CompanyTalentNeed::where('id', $data['id'])->update($data);
        }

        return $this->sendSuccessResponse();
    }
}