Api/Netina.Repository/Handlers/Newsletters/CreateNewsletterMemberComma...

33 lines
1.5 KiB
C#
Raw Permalink Normal View History

2024-08-09 21:55:16 +03:30
namespace Netina.Repository.Handlers.Newsletters;
2024-08-09 21:55:16 +03:30
public class CreateNewsletterMemberCommandHandler(IRepositoryWrapper repositoryWrapper)
: IRequestHandler<CreateNewsletterMemberCommand, bool>
{
public async Task<bool> Handle(CreateNewsletterMemberCommand request, CancellationToken cancellationToken)
{
if (request.PhoneNumber.IsNullOrEmpty() && request.Email.IsNullOrEmpty())
throw new AppException("PhoneNumber and Email is null");
if (!request.PhoneNumber.IsNullOrEmpty())
{
2024-08-09 21:55:16 +03:30
var existedPhoneNumber = await repositoryWrapper.SetRepository<NewsletterMember>()
.TableNoTracking
.AnyAsync(c => c.PhoneNumber == request.PhoneNumber, cancellationToken);
if (existedPhoneNumber == true)
throw new AppException("PhoneNumber is existed");
}
if (!request.Email.IsNullOrEmpty())
{
2024-08-09 21:55:16 +03:30
var existedEmail = await repositoryWrapper.SetRepository<NewsletterMember>()
.TableNoTracking
.AnyAsync(c => c.Email == request.Email, cancellationToken);
if (existedEmail == true)
throw new AppException("Email is existed");
}
var ent = NewsletterMember.Create(request.PhoneNumber, request.Email);
2024-08-09 21:55:16 +03:30
repositoryWrapper.SetRepository<NewsletterMember>()
.Add(ent);
2024-08-09 21:55:16 +03:30
await repositoryWrapper.SaveChangesAsync(cancellationToken);
return true;
}
}