using MediatR; using Microsoft.EntityFrameworkCore; using System; using System.Threading; using System.Threading.Tasks; using UserManagement.Common.UnitOfWork; using UserManagement.Data.Dto; using UserManagement.Domain; using UserManagement.Helper; using UserManagement.MediatR.Commands; using UserManagement.Repository; namespace UserManagement.MediatR.Handlers { public class DeleteReminderCurrentUserCommandHandler : IRequestHandler> { private readonly IReminderRepository _reminderRepository; private readonly IReminderUserRepository _reminderUserRepository; private readonly IUnitOfWork _uow; private readonly UserInfoToken _userInfoToken; public DeleteReminderCurrentUserCommandHandler( IReminderRepository reminderRepository, IUnitOfWork uow, IReminderUserRepository reminderUserRepository, UserInfoToken userInfoToken) { _reminderRepository = reminderRepository; _uow = uow; _reminderUserRepository = reminderUserRepository; _userInfoToken = userInfoToken; } public async Task> Handle(DeleteReminderCurrentUserCommand request, CancellationToken cancellationToken) { var reminder = await _reminderRepository.FindAsync(request.Id); if (reminder == null) { return ServiceResponse.Return404(); } var reminserUser = await _reminderUserRepository.FindBy(c => c.ReminderId == request.Id && c.UserId == Guid.Parse(_userInfoToken.Id)) .FirstOrDefaultAsync(); if (reminserUser != null) { _reminderUserRepository.Remove(reminserUser); } else { return ServiceResponse.Return404(); } if (await _uow.SaveAsync() <= 0) { return ServiceResponse.Return500(); } return ServiceResponse.ReturnSuccess(); } } }