public async Task CriarNotificacaoParaAtividade(UsuarioADE usuario, AtividadeUsuario atividade)
        {
            EnumEstadoAtividade estado = atividade.VerificarEstado();
            string icon     = string.Empty;
            string verbo    = string.Empty;
            string adjetivo = string.Empty;

            switch (estado)
            {
            case EnumEstadoAtividade.Aberto:
                if (atividade.Concluido)
                {
                    icon     = "assignment_turned_in";
                    verbo    = "Concluiu";
                    adjetivo = "com sucesso";
                }
                else
                {
                    icon     = "assignment_turned_in";
                    verbo    = "Cadastrou";
                    adjetivo = "com sucesso";
                }
                break;

            case EnumEstadoAtividade.Adiantado:
                icon     = "card_giftcard";
                verbo    = "Concluiu";
                adjetivo = "com extrema eficiência!";
                break;

            case EnumEstadoAtividade.Atrasado:
                if (atividade.Concluido)
                {
                    verbo = "Concluiu";
                }
                else
                {
                    verbo = "Cadastrou";
                }

                icon     = "assignment_late";
                adjetivo = $"um pouco atrasado ({(DateTime.Today - atividade.Data).TotalDays} dias atrasado)";
                break;
            }
            string tipoAtividade = atividade.TipoAtividade.GetDescription();
            string titulo        = $"<i class='material-icons medium btn-outline-yellow'>{icon}</i> {verbo} a atividade.";
            string descricao     = $" <hr>Parabéns pelo seu empenho, continue assim!<hr> {verbo} {atividade.Titulo} {adjetivo} em {DateTime.Now.ToLocalTime()}";

            NotificacaoIndividual notificacao = new NotificacaoIndividual(usuario.Id, usuario.Id, titulo, descricao);

            await ServicoNotificacaoIndividual.CadastrarAsync(usuario, notificacao);

            await unitOfWork.Commit();
        }
        public async Task <IActionResult> ConcluirAtividade(int IdAtividade)
        {
            UsuarioADE usuario = await ObterUsuarioLogado();

            try
            {
                AtividadeUsuario atividade = await _ServicoAtividadeUsuario.BuscarPorId(IdAtividade);

                EnumEstadoAtividade estado = atividade.VerificarEstado();
                atividade.Concluir();
                await _ServicoAtividadeUsuario.AtualizarAsync(usuario, atividade);

                ViewBag.Retorno = $"Sucesso ao alterar atividade!";
                return(Json(new { retorno = "Sucesso ao alterar atividade!" }));
            }
            catch (System.Exception ex)
            {
                await LogError(ex.Message, "AtualizarAtividadeUsuario", Dominio.Models.Enums.EnumTipoLog.AlteracaoAtividadeUsuario);

                ModelState.AddModelError("Falha", "Erro ao alterar atividade! Contate o suporte caso esse erro volte a acontecer. - {ex.Message}");
            }
            return(RedirectToAction("Index", "Atividades"));
        }