51 lines
1.3 KiB
C#
51 lines
1.3 KiB
C#
namespace MyOffice.Services.Verifications;
|
|
|
|
using MyOffice.Core.Helpers;
|
|
using MyOffice.Data.Models.Users;
|
|
using MyOffice.Data.Models.Verifications;
|
|
using MyOffice.Data.Repositories.Item;
|
|
|
|
public class VerificationService
|
|
{
|
|
private readonly TimeSpan _defaultExpires = TimeSpan.FromDays(1);
|
|
|
|
private readonly IVerificationCodeRepository _verificationCodeRepository;
|
|
|
|
public VerificationService(
|
|
IVerificationCodeRepository verificationCodeRepository
|
|
)
|
|
{
|
|
_verificationCodeRepository = verificationCodeRepository;
|
|
}
|
|
|
|
public VerificationCode Add(
|
|
User user,
|
|
string destination,
|
|
VerificationCodeTemplateEnum template,
|
|
VerificationCodeTypeEnum type,
|
|
DateTime? expiresOn = null,
|
|
string? metadata = null
|
|
)
|
|
{
|
|
if (user == null)
|
|
throw new ArgumentNullException(nameof(user));
|
|
if (destination == null)
|
|
throw new ArgumentNullException(nameof(destination));
|
|
|
|
var verificationCode = new VerificationCode
|
|
{
|
|
UserId = user.Id,
|
|
Code = RandomizationHelper.Generate(40),
|
|
CreatedOn = DateTime.UtcNow,
|
|
ExpiresOn = expiresOn ?? DateTime.UtcNow.Add(_defaultExpires),
|
|
Template = template.ToString(),
|
|
DestinationType = type.ToString(),
|
|
Destination = destination,
|
|
Metadata = metadata,
|
|
};
|
|
|
|
_verificationCodeRepository.Add(verificationCode);
|
|
|
|
return verificationCode;
|
|
}
|
|
} |