using AutoMapper; using BlackRock.Reporting.API.Core.Interfaces; using BlackRock.Reporting.API.Mediator.UserMediator.Model; using MediatR; namespace BlackRock.Reporting.API.Mediator.UserMediator.Commands { public class DeleteUsersCommand : IRequest> { public int Id { get; set; } } public class DeleteUsersCommandHandlers : IRequestHandler> { private readonly ILogger logger; private readonly IMapper mapper; private readonly IUnitOfWork unitOfWork; public DeleteUsersCommandHandlers(ILogger logger, IMapper mapper, IUnitOfWork unitOfWork) { this.unitOfWork = unitOfWork; this.mapper = mapper; this.logger = logger; } public async Task> Handle(DeleteUsersCommand command, CancellationToken cancellationToken) { if (command.Id <= 0) throw new ArgumentException($"Parameter {nameof(command.Id)} must not be grater than 0"); logger.LogInformation("Deleting user ..."); try { var user = await unitOfWork.UsersRepository.GetByIdAsync(command.Id); unitOfWork.UsersRepository.Remove(user); await unitOfWork.SaveChangesAsync(); logger.LogInformation($"User with id {user.Id} has been deleted successfully"); return new Result { Data = command.Id }; } catch (Exception ex) { return new Result { IsSuccess = false, Error = "Faild to delete data from DB." }; } } } }