public async Task RequestResetPassword([FromQuery] string phoneNumber)
        {
            if (string.IsNullOrEmpty(phoneNumber))
            {
                throw new CustomException(Errors.INVALID_PHONE_NUMBER, Errors.INVALID_PHONE_NUMBER_MSG);
            }

            phoneNumber = PhoneNumberHelpers.GetFormatedPhoneNumber(phoneNumber);
            var account = await _accountService.CheckExsitByPhoneNumberAsync(phoneNumber);

            if (account == null)
            {
                throw new CustomException(Errors.ACCOUNT_NOT_FOUND, Errors.ACCOUNT_NOT_FOUND_MSG);
            }

            var verification = account.VerificationCodes.FirstOrDefault(t => t.SetPhoneNumber == phoneNumber && t.Purpose == VerificationPurpose.Password && !t.Checked);

            if (verification == null)
            {
                verification = new VerificationCode
                {
                    Account        = account,
                    ExpiredAt      = DateTime.Now.AddDays(1),
                    Purpose        = VerificationPurpose.Password,
                    SetPhoneNumber = phoneNumber,
                    VerifyCode     = CommonFunctions.GenerateVerificationCode(true)
                };

                await _verificationService.CreateAsync(verification);
            }

            string smsContent = $"Verification code at JobHop: {verification.VerifyCode}";

            //send SMS using eSMS.vn
            await _esmsService.SendSMS(account.PhoneNumber, smsContent, 4);
        }