//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); }
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)); }
//Metodo que persisti/registra os links no banco de dados private bool CriarLinkClienteAvaliacao(LinkAvalicao novoLinkAvalicao) { _context.Add(novoLinkAvalicao); _context.SaveChanges(); return(true); }
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)); }
//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")); } } } } }