<?php
namespace App\Http\Controllers\Api\Common;

use Aix\Sms\Contracts\Smser;
use App\Http\Controllers\Api\ApiBaseController;
use App\Services\Common\GeetestService;
use App\Services\Common\SmsService;
use App\Validators\SmsValidatorRequest;
use Illuminate\Http\Response;

class SmsController extends ApiBaseController
{
    /**
     * @var SmsService
     */
    protected $smsService;
    /**
     * @var GeetestService
     */
    private $geetestService;

    /**
     * CommonController constructor.
     * @param SmsService $smsService
     * @param GeetestService $geetestService
     */
    public function __construct(SmsService $smsService, GeetestService $geetestService)
    {
        $this->smsService = $smsService;
        $this->geetestService = $geetestService;
        $this->middleware([\Illuminate\Session\Middleware\StartSession::class]);
    }

    public function sendSms(SmsValidatorRequest $smsValidatorRequest)
    {
        $method=$smsValidatorRequest->type.'Sms';
        $result=$this->$method($smsValidatorRequest->mobile);
        return $result;
    }

    protected function loginSms($mobile)
    {
        $this->smsService->sendAuthSms($mobile, Smser::TEMPLATE_AUTH_LOGIN);
        return $this->sendSuccessResponse();
    }

    protected function registerSms($mobile)
    {

        if (config('aix.system.site_safety.site_vo_code.captcha_open') == 1) {
            if (!$this->geetestService->checkGeetest()) {
                return $this->sendErrorResponse("验证码不通过,请重新验证");
            }
        }
        $this->smsService->sendAuthSms($mobile, Smser::TEMPLATE_AUTH_REGISTER);
        return $this->sendSuccessResponse();
    }
}