public void SendEmailAnonymizeNotifyAdms(UserAnonymizeDTO dto) { var html = _emailTemplate.GenerateHtmlFromTemplateAsync("AnonymizeNotifyAdms", dto).Result; var title = "Anonimização de conta"; _emailService.SendToAdmins(html, title).Wait(); }
public IActionResult Anonymize([FromBody] UserAnonymizeDTO dto) { var userIdFromSession = new Guid(Thread.CurrentPrincipal?.Identity?.Name); if (dto.UserId != userIdFromSession) { throw new ShareBookException(ShareBookException.Error.Forbidden, "Você não tem permissão para remover esse conta."); } _lgpdService.Anonymize(dto); return(Ok(new Result("Sua conta foi removida com sucesso."))); }
public void Anonymize(UserAnonymizeDTO dto) { var user = _ctx.Users .Where(u => u.Id == dto.UserId) .Include(u => u.Address) .Include(u => u.BooksDonated) .Include(u => u.BookUsers) // livros solicitados .FirstOrDefault(); if (user == null) { throw new ShareBookException(ShareBookException.Error.NotFound, "Nenhum usuário encontrado."); } if (!_userService.IsValidPassword(user, dto.Password)) { throw new ShareBookException(ShareBookException.Error.BadRequest, "Senha inválida."); } if (string.IsNullOrEmpty(dto.Reason)) { throw new ShareBookException(ShareBookException.Error.BadRequest, "Favor informar a justificativa."); } if (!user.Active) { throw new ShareBookException(ShareBookException.Error.BadRequest, "Essa conta não está ativa."); } // 1 - Exclui as solicitações em aberto. RemoveOpenRequests(user); // 2 - Cancela doações em aberto. RemoveOpenDonations(user); // 3 - Anonimiza a conta user.Anonymize(); // 4 - Exclui os logs. RemoveLogs(user); // 5 - Notifica os adms. _userEmailService.SendEmailAnonymizeNotifyAdms(dto); // 6 - Enfim salva _ctx.SaveChanges(); }