Example #1
0
        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.")));
        }
Example #3
0
        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();
        }