feat: add exception and opt bugs
This commit is contained in:
7
0_Framework/Application/Sms/OtpResultViewModel.cs
Normal file
7
0_Framework/Application/Sms/OtpResultViewModel.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace _0_Framework.Application.Sms;
|
||||
|
||||
public class OtpResultViewModel
|
||||
{
|
||||
public int ExpireTimeSec { get; set; }
|
||||
public int ReSendTimeSec { get; set; }
|
||||
}
|
||||
@@ -15,4 +15,15 @@ public class BadRequestException:Exception
|
||||
}
|
||||
|
||||
public string Details { get; }
|
||||
}
|
||||
|
||||
public class SmsServiceException:BadRequestException
|
||||
{
|
||||
|
||||
public SmsServiceException(string message, int expireTime) : base(message)
|
||||
{
|
||||
ExpireTime = expireTime;
|
||||
}
|
||||
|
||||
public int ExpireTime { get; set; }
|
||||
}
|
||||
@@ -122,11 +122,22 @@ public class InstitutionContract : EntityBase
|
||||
public string VerifyCode { get; private set; }
|
||||
public DateTime VerifyCodeCreation { get; private set; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[NotMapped]
|
||||
public bool VerifyCodeExpired => VerifyCodeCreation.AddMinutes(5) <= DateTime.Now;
|
||||
public bool VerifyCodeExpired => VerifyCodeCreation.Add(ExpireTime) <= DateTime.Now;
|
||||
|
||||
[NotMapped]
|
||||
public bool CanCreateNewVerifyCode => VerifyCodeCreation.AddMinutes(2) <= DateTime.Now;
|
||||
public bool CanResendVerifyCode => VerifyCodeCreation.Add(ReSendTime) <= DateTime.Now;
|
||||
|
||||
[NotMapped] public TimeSpan ExpireTime => TimeSpan.FromMinutes(5);
|
||||
|
||||
|
||||
|
||||
[NotMapped] public TimeSpan ReSendTime => TimeSpan.FromMinutes(2);
|
||||
|
||||
|
||||
public bool IsInstallment { get; set; }
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Application.Enums;
|
||||
using _0_Framework.Application.Sms;
|
||||
using CompanyManagment.App.Contracts.Checkout;
|
||||
using CompanyManagment.App.Contracts.Workshop;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@@ -213,7 +214,7 @@ public interface IInstitutionContractApplication
|
||||
#endregion
|
||||
|
||||
Task<GetInstitutionVerificationDetailsViewModel> GetVerificationDetails(Guid id);
|
||||
Task<OperationResult> SendVerifyOtp(Guid id);
|
||||
Task<OperationResult<OtpResultViewModel>> SendVerifyOtp(Guid id);
|
||||
Task<OperationResult> VerifyOtp(Guid publicId, string code);
|
||||
}
|
||||
|
||||
|
||||
@@ -1104,7 +1104,7 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
||||
}
|
||||
|
||||
|
||||
public async Task<OperationResult> SendVerifyOtp(Guid id)
|
||||
public async Task<OperationResult<OtpResultViewModel>> SendVerifyOtp(Guid id)
|
||||
{
|
||||
var institutionContract = await _institutionContractRepository.GetByPublicIdAsync(id);
|
||||
if (institutionContract == null)
|
||||
@@ -1118,9 +1118,10 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
||||
if (institutionContract.VerificationStatus == InstitutionContractVerificationStatus.PendingForVerify &&
|
||||
institutionContract.VerifyCodeCreation != DateTime.MinValue)
|
||||
{
|
||||
if (!institutionContract.CanCreateNewVerifyCode)
|
||||
if (!institutionContract.CanResendVerifyCode)
|
||||
{
|
||||
throw new BadRequestException("کد تایید قبلی هنوز منقضی نشده است");
|
||||
throw new SmsServiceException("کد تایید قبلی هنوز منقضی نشده است",
|
||||
(int)institutionContract.ReSendTime.TotalSeconds - (int)(DateTime.Now - institutionContract.VerifyCodeCreation).TotalSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1145,7 +1146,12 @@ public class InstitutionContractApplication : IInstitutionContractApplication
|
||||
}
|
||||
|
||||
await transaction.CommitAsync();
|
||||
return new OperationResult().Succcedded();
|
||||
var result = new OtpResultViewModel
|
||||
{
|
||||
ExpireTimeSec = (int)institutionContract.ExpireTime.TotalSeconds,
|
||||
ReSendTimeSec = (int)institutionContract.ReSendTime.TotalSeconds
|
||||
};
|
||||
return new OperationResult<OtpResultViewModel>().Succcedded(result);
|
||||
}
|
||||
|
||||
public async Task<OperationResult> VerifyOtp(Guid publicId, string code)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Transactions;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Application.Enums;
|
||||
using _0_Framework.Application.Sms;
|
||||
using _0_Framework.Exceptions;
|
||||
using AccountManagement.Application.Contracts.Account;
|
||||
using Company.Domain.TemporaryClientRegistrationAgg;
|
||||
@@ -718,7 +719,7 @@ public class institutionContractController : AdminBaseController
|
||||
|
||||
[HttpPost("/api/institutionContract/Verification/{id:guid}/send-otp")]
|
||||
[AllowAnonymous]
|
||||
public async Task<ActionResult<OperationResult>> SendVerifyOtp(Guid id)
|
||||
public async Task<ActionResult<OperationResult<OtpResultViewModel>>> SendVerifyOtp(Guid id)
|
||||
{
|
||||
var res = await _institutionContractApplication.SendVerifyOtp(id);
|
||||
return res;
|
||||
|
||||
Reference in New Issue
Block a user