<?php

namespace App\Http\Controllers\Mobile\Ic;

use App\Http\Controllers\Mobile\MobileBaseController;
use App\Models\Presentation;
use App\Models\PresentationAppoint;
use App\Repositories\CategoryMajorRepository;
use App\Repositories\CategoryRepository;
use App\Services\Common\CategoryService;
use App\Validators\PresentationAppointValidatorRequest;
use Illuminate\Support\Facades\Storage;
use App\Repositories\CategoryDistrictRepository;

class TeachController extends MobileBaseController
{
    protected $categoryService;
    protected $CategoryDistrictRepository;
    protected $CategoryMajorRepository;
    protected $CategoryRepository;

    public function __construct(CategoryService $categoryService, CategoryDistrictRepository $categoryDistrictRepository, CategoryMajorRepository $CategoryMajorRepository, CategoryRepository $CategoryRepository)
    {
        $this->categoryService            = $categoryService;
        $this->CategoryDistrictRepository = $categoryDistrictRepository;
        $this->CategoryMajorRepository    = $CategoryMajorRepository;
        $this->CategoryRepository         = $CategoryRepository;
    }

    public function uploadHead()
    {
        $image_data = request()->pic1;
        $saveName   = 'person/images/' . uniqid() . '.jpg';
        $data       = base64_decode($image_data);
        if (!empty($data)) {
            $res = Storage::disk('public')->put($saveName, $data);
            return response()->json(['status' => 1, 'info' => 'success', 'data' => $saveName]);
        } else {
            return response()->json(['status' => 0, 'info' => '请上传图片']);
        }
    }

    public function index()
    {
        $district          = $this->categoryService->getDefaultDistrict();
        $presentation_list = Presentation::where('status', 1)->get();
        return view('mobile.app.ic.teach.index', [
            'presentation_list' => $presentation_list,
            'defaultCity'       => $district->defaultCity,
        ]);
    }

    public function save(PresentationAppointValidatorRequest $request)
    {
        $data = $request->only('pid', 'avatar', 'realname', 'sex', 'mobile', 'birthday', 'native_place', 'fresh', 'education', 'school', 'dep', 'pro_type', 'pro_text', 'attachment');

        $check = PresentationAppoint::where('pid', $data['pid'])->where('mobile', $data['mobile'])->first();
        if (!empty($check)) {
            return response()->json(['status' => 0, 'msg' => '您已提交过,请勿重复提交']);
        }

        //籍贯
        $native_place_arr = explode('.', $data['native_place']);
        $houseRes         = $this->CategoryDistrictRepository->getManydistrict($native_place_arr);
        $native_place_cn  = '';
        foreach ($houseRes as $k => $v) {
            $native_place_cn .= $v['name'];
        }
        $data['native_place'] = $native_place_cn;

        //专业类别
        $majorArr         = $this->CategoryMajorRepository->getCategoryMajor($data['pro_type']);
        $data['pro_type'] = $majorArr['name'];

        //学历
        $educationArr      = $this->CategoryRepository->getCategory($data['education']);
        $data['education'] = $educationArr['demand'];

        //其他处理
        $data['avatar']     = $data['avatar'] ?? '';
        $data['attachment'] = $data['attachment'] ?? '';

        PresentationAppoint::create($data);
        return response()->json(['status' => 1]);
    }
}