コード例 #1
0
        //Método utilizado para iniciar a avaliação automaticamente quando a data da avaliação e a data de inicio são iguais.
        public bool AcioneManualAvalicao(DateTime referencia)
        {
            //Busca as avaliaçoes
            var checarAvaliacoes = _context.AvaliacaoMensal.AsQueryable();

            checarAvaliacoes = checarAvaliacoes.Where(a => a.dataReferencia.Date.Equals(referencia.Date));

            AvaliacaoMensal avaliacao = checarAvaliacoes.FirstOrDefault();

            if (avaliacao != null)
            {
                //Busca os clientes
                List <Cliente> listaClientes = _context.Cliente.ToList();

                //Inicia a criação dos links que serão enviados ao clientes
                foreach (var cliente in listaClientes)
                {
                    LinkAvalicao novoLink = new LinkAvalicao()
                    {
                        idAvaliacao        = avaliacao.id,
                        idCliente          = cliente.id,
                        linkAvaliacaoEmail = TokenService.GerarTokenLinkEmail() // Service para gerar um token para o link do email.
                    };

                    CriarLinkClienteAvaliacao(novoLink); // registra os links no banco

                    //Envia os emails para todos os clientes.
                    EnviarLinksEmail(cliente.email, novoLink.linkAvaliacaoEmail, avaliacao.dataReferencia.ToString("MM/yyyy"));
                }

                return(true);
            }

            return(false);
        }
コード例 #2
0
        public async Task <IActionResult> Edit(int id, [Bind("id,dataReferencia,dataInicio,diasExpirar,encerrado")] AvaliacaoMensal avaliacaoMensal, IFormCollection form)
        {
            if (id != avaliacaoMensal.id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                int idView = Convert.ToInt32(form["idUsuarioAcesso"]);

                IdPass idUsuario = new IdPass();
                idUsuario.id = idView;

                try
                {
                    _context.Update(avaliacaoMensal);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AvaliacaoMensalExists(avaliacaoMensal.id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("PaginaPrincipal", "Home", idUsuario));
            }
            return(View(avaliacaoMensal));
        }
コード例 #3
0
        public async Task <IActionResult> Create([Bind("id,dataReferencia,dataInicio,diasExpirar,encerrado")] AvaliacaoMensal avaliacaoMensal, IFormCollection form)
        {
            if (ModelState.IsValid)
            {
                _context.Add(avaliacaoMensal);
                await _context.SaveChangesAsync();


                //Verifica se o usuario requisitou o inicio imediato da avaliação ou agendou
                if (avaliacaoMensal.dataReferencia.Date.Equals(avaliacaoMensal.dataInicio.Date))
                {
                    //inicio instantaneo da avaliação
                    AcoesSistema acoes = new AcoesSistema(_context);

                    //metodo que faz todo o processo necessario para se inciar uma avaliação.
                    //arquivo (Controllers > SistemaAutomatizado > *AcoesSistema.cs*)
                    acoes.AcioneManualAvalicao(avaliacaoMensal.dataReferencia);
                }

                //persiste o id do usuario para atualização da página
                int idView = Convert.ToInt32(form["idUsuarioAcesso"]);;

                //Objeto para passar ids(inteiros) entre 'rotas/actions'
                IdPass idUsuario = new IdPass();
                idUsuario.id = idView;

                //Retorna para a pagina principal do sistema
                return(RedirectToAction("PaginaPrincipal", "Home", idUsuario));
            }

            //Retorna informações de válidação
            return(View(avaliacaoMensal));
        }
コード例 #4
0
        //Metódo que gerar o resultado da avaliação
        public AvaliacaoMensal RelatorioFinalAvaliacao(AvaliacaoMensal avaliacaoFinalizada)
        {
            //busca os clientes que participaram da avaliação no mes que fez referencia
            var listaAvalicoesClientes = _context.Avaliacao.AsQueryable();

            listaAvalicoesClientes = listaAvalicoesClientes.Where(a => a.idAvaliacao.Equals(avaliacaoFinalizada.id));

            double promotores         = 0;
            double neutros            = 0;
            double detratores         = 0;
            double NPS                = 0;
            int    totalParticioantes = 0;

            //Faz a classificação dos clientes apartir de suas avaliações/notas
            foreach (var resultado in listaAvalicoesClientes)
            {
                if (resultado.nota <= 6)
                {
                    detratores++;
                }
                else if (resultado.nota <= 8)
                {
                    neutros++;
                }
                else
                {
                    promotores++;
                }
            }

            //Equação que indica a porcentagem final de agrado referente ao mês
            totalParticioantes = listaAvalicoesClientes.Count();
            NPS = ((promotores - detratores) / totalParticioantes) * 100;

            //Dados sendo salvos para serem persistidos no banco
            avaliacaoFinalizada.detratores = (int)detratores;
            avaliacaoFinalizada.neutros    = (int)neutros;
            avaliacaoFinalizada.promotores = (int)promotores;
            avaliacaoFinalizada.nps        = (int)NPS;

            // retorna a 'atualização' dos campos
            return(avaliacaoFinalizada);
        }