Example #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);
        }
Example #2
0
        public async Task <IActionResult> Edit(int id, [Bind("id,idCliente,idAvaliacao,linkAvaliacaoEmail")] LinkAvalicao linkAvalicao)
        {
            if (id != linkAvalicao.id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(linkAvalicao);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!LinkAvalicaoExists(linkAvalicao.id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(linkAvalicao));
        }
Example #3
0
        //Metodo que persisti/registra os links no banco de dados
        private bool CriarLinkClienteAvaliacao(LinkAvalicao novoLinkAvalicao)
        {
            _context.Add(novoLinkAvalicao);
            _context.SaveChanges();

            return(true);
        }
Example #4
0
        public async Task <IActionResult> Create([Bind("id,idCliente,idAvaliacao,linkAvaliacaoEmail")] LinkAvalicao linkAvalicao)
        {
            if (ModelState.IsValid)
            {
                _context.Add(linkAvalicao);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(linkAvalicao));
        }
Example #5
0
        //Metodo que inicia uma avaliação que foi agendada
        public void VerificarNovasAvalicoes()
        {
            DateTime dataAtual = DateTime.Now.Date;

            //Busca as potenciais avaliações que vão iniciar
            var checarAvaliacoes = _context.AvaliacaoMensal.AsQueryable();

            checarAvaliacoes = checarAvaliacoes.Where(a => !a.encerrado && !(a.dataReferencia.Date.Equals(a.dataInicio.Date)));

            List <AvaliacaoMensal> todasAvaliacoesMensais = checarAvaliacoes.ToList();

            //Havendo avaliações, é iniciado um loop que cria o link, registra no banco e envia os links para os clientes.
            if (todasAvaliacoesMensais.Count > 0)
            {
                foreach (var avaliacao in todasAvaliacoesMensais)
                {
                    if (avaliacao.dataInicio.Date.Month.Equals(dataAtual.Date.Month) && avaliacao.dataInicio.Date.Year.Equals(dataAtual.Date.Year))
                    {
                        List <Cliente> listaClientes = _context.Cliente.ToList();

                        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"));
                        }
                    }
                }
            }
        }