<?php

namespace app\api\controller\doctor;

use app\common\controller\Apic;
use app\common\library\Sms;
use think\Exception;
use think\Validate;

use think\Db;

/**
 * 会员接口
 */
class User extends Apic
{
    protected $noNeedLogin = ['login','resetpwd'];
    protected $noNeedRight = '*';


    //员工手机+密码登录
    public function login()
    {
        $mobile = input('mobile');
        $password = input('password');
        if (!$mobile || !$password) {
            $this->error(__('Invalid parameters'));
        }
        $ret = $this->auth->login($mobile, $password);
        if ($ret) {
            $data = $this->auth->getUserinfo();
            $this->success(__('Logged in successful'), $data);
        } else {
            $this->error($this->auth->getError());
        }
    }

    /**
     * 修改密码
     *
     * @ApiMethod (POST)
     * @param string $newpassword 新密码
     * @param string $oldpassword 旧密码
     */
    public function changepwd(){
        $newpassword = input('newpassword');
        $oldpassword = input('oldpassword','');

        if (!$newpassword) {
            $this->error('请输入新密码');
        }
        if($this->auth->password && empty($oldpassword)){
            $this->error('旧密码必填');
        }

        if(empty($this->auth->password)){
            $ret = $this->auth->changepwd($newpassword, '', true);
        }else{
            $ret = $this->auth->changepwd($newpassword,$oldpassword,false);
        }

        if ($ret) {
            $this->success(__('Reset password successful'));
        } else {
            $this->error($this->auth->getError());
        }
    }


    /**
     * 退出登录
     * @ApiMethod (POST)
     */
    public function logout()
    {
        if (!$this->request->isPost()) {
            $this->error(__('Invalid parameters'));
        }
        $this->auth->logout();
        $this->success(__('Logout successful'));
    }


    //用户详细资料
    public function getUserinfo($type = 1){
        $info = $this->auth->getUserinfo();
        if($type == 'return'){
            return $info;
        }
        $this->success(__('success'),$info);
    }

    /**
     * 重置密码
     *
     * @ApiMethod (POST)
     * @param string $mobile      手机号
     * @param string $captcha     验证码
     * @param string $newpassword 新密码
     */
    /*public function resetpwd()
    {
        $mobile      = $this->request->post('mobile');
        $captcha     = $this->request->post('captcha');
        $newpassword = $this->request->post("newpassword");
        if (!$mobile || !$captcha || !$newpassword) {
            $this->error(__('Invalid parameters'));
        }
        //验证Token
        if (!Validate::make()->check(['newpassword' => $newpassword], ['newpassword' => 'require|regex:\S{6,30}'])) {
            $this->error(__('Password must be 6 to 30 characters'));
        }
        if (!Validate::regex($mobile, "^1\d{10}$")) {
            $this->error(__('Mobile is incorrect'));
        }
        $user = \app\common\model\CompanyStaff::getByMobile($mobile);
        if (!$user) {
            $this->error(__('User not found'));
        }
        $ret = Sms::check($mobile, $captcha, 'resetpwd');
        if (!$ret) {
            $this->error(__('Captcha is incorrect'));
        }
        Sms::flush($mobile, 'resetpwd');

        //模拟一次登录
        $this->auth->direct($user->id);
        $ret = $this->auth->resetpwd($newpassword, '', true);
        if ($ret) {
            $this->success(__('Reset password successful'));
        } else {
            $this->error($this->auth->getError());
        }
    }*/


    /**
     * 修改会员个人信息
     *
     * @ApiMethod (POST)
     * @param string $avatar   头像地址
     * @param string $username 用户名
     * @param string $nickname 昵称
     * @param string $bio      个人简介
     */
    public function profile()
    {
        $field = [
            'mobile',
            'avatar',
            'firstname',
            'lastname',
            'lang',
        ];

        $data = request_post_hub($field);



        if(isset($data['mobile'])){
            $check_mobile = Db::name('doctor')->where('mobile',$data['mobile'])->where('id','neq',$this->auth->id)->find();
            if($check_mobile){
                $this->error('手机号已被其他人使用');
            }
        }

        $update_rs = Db::name('doctor')->where('id',$this->auth->id)->update($data);

        $this->success('资料更新完成');
    }


}
