<?php

namespace Controller;

/**
 * @author:dc
 * @time 2023/2/13 11:28
 * Class Home
 * @package Controller
 */
class Home {


    /**
     * 登录操作
     * @return int[]
     * @author:dc
     * @time 2023/2/13 11:50
     */
    public function login(){
        //        $mail,$password,$imap,$smtp
        $formData = app()->request(['email','password','imap','smtp']);

        if(empty($formData['email']) || !preg_match("//",$formData['email'])){
            app()->e('email_verify_error');
        }

        if(empty($formData['password'])){
            app()->e('password_verify_error');
        }

        if(empty($formData['imap'])){
            app()->e('imap_verify_error');
        }

        if(empty($formData['smtp'])){
            app()->e('smtp_verify_error');
        }

        // 查询数据
        $model = db()->first(\Model\email::first($formData['email']));
        if(!$model){
            $model = new Email();
            $model->email = $formData['email'];
        }

        $model->imap = $formData['imap'];
        $model->smtp = $formData['smtp'];
        $model->status = Email::STATUS_ACTIVE;
        $model->password = @base64_encode($formData['password']);

        try {
            Mail::login($model->email,$model->password,$model->imap);
        }catch (\Throwable $e){
            return res()
                ->message($e->getMessage())
                ->status(400)
                ->toJson();
        }

        // 登录成功了,密码验证字段通过
        $model->pwd_error = 0;
        // 保存好邮箱
        $model->save();

        // 设置上id,方便后面使用
        Mail::$client[$model->email]->setId($model->id);

        // 开始同步文件夹
//        $folder = Mail::syncFolder($model->email);

        return res()
            ->data([
                'token' => token_en($model->id.','.$model->email.','.time())
            ])
            ->toJson();

    }

}