public async Task <IActionResult> Create(int id, [Bind("NrFaturaId,DataEmissao,ContratoId,Morada,NomeCliente,PacoteId,PrecoContrato,Descricao")] FaturaCliente faturaCliente)
      {
          //Código que vai buscar o ID do contrato atraves do contrato selecionado na vista SelectContrato
          var contrato = _context.Contratos.SingleOrDefault(m => m.ContratoId == id);
          //Código que vai buscar o ID do cliente atraves do cliente selecionado na vista SelectUser
          var cliente = _context.Users.SingleOrDefault(m => m.UsersId == contrato.ClienteId);

          faturaCliente.ContratoId    = contrato.ContratoId;
          faturaCliente.NomeCliente   = cliente.Nome;
          faturaCliente.Morada        = contrato.MoradaContrato;
          faturaCliente.PrecoContrato = contrato.PrecoContrato;
          faturaCliente.PacoteId      = contrato.PacoteId;

          if (faturaCliente.DataEmissao > DateTime.Today || faturaCliente.DataEmissao < DateTime.Today.AddDays(-90))
          {
              ModelState.AddModelError("DataEmissao", "A data da fatura não pode ultrapassar os 90 dias anteriores");
          }

          if (ModelState.IsValid)
          {
              _context.Add(faturaCliente);
              await _context.SaveChangesAsync();

              ViewBag.Mensagem = "Fatura criada com sucesso";
              return(View("Sucesso"));
          }

          if (!ModelState.IsValid)
          {
              ModelState.AddModelError("", "Não foi possível adicionar a fatura, tente novamente");
          }

          return(View(faturaCliente));
      }
      public async Task <IActionResult> Edit(int id, FaturaViewModel FVM, FaturaCliente faturaCliente)
      {
          var fatura = await _context.Faturas
                       .Include(f => f.Fatura)
                       .FirstOrDefaultAsync(m => m.NrFaturaId == id);

          var pacote = await _context.Pacotes
                       .SingleOrDefaultAsync(p => p.PacoteId == fatura.PacoteId);

          fatura.DataEmissao   = FVM.DataEmissao;
          fatura.Descricao     = FVM.Descricao;
          fatura.NomeCliente   = FVM.NomeCliente;
          fatura.ContratoId    = FVM.ContratoId;
          fatura.Morada        = FVM.Morada;
          fatura.PrecoContrato = FVM.PrecoContrato;
          fatura.PacoteId      = FVM.PacoteId;
          FVM.NomePacote       = pacote.NomePacote;

          if (faturaCliente.DataEmissao > DateTime.Today || faturaCliente.DataEmissao < DateTime.Today.AddDays(-90))
          {
              ModelState.AddModelError("DataEmissao", "A data da fatura não pode ultrapassar os 90 dias anteriores");
          }

          if (!ModelState.IsValid)
          {
              ModelState.AddModelError("", "Não foi possível adicionar a fatura, tente novamente");
              return(View(FVM));
          }

          _context.Update(fatura);
          await _context.SaveChangesAsync();

          ViewBag.Mensagem = "Fatura editada com sucesso";
          return(View("Sucesso"));
      }
Example #3
0
        public async Task <IActionResult> TesteEnvioEmail()
        {
            List <Contratos> contratos = await bd.Contratos.ToListAsync();


            DateTime hoje       = DateTime.Today;
            DateTime mespassado = hoje.AddMonths(-1);


            var      dia1     = new DateTime(mespassado.Year, mespassado.Month, 1);
            DateTime finaldia = dia1.AddMonths(1).AddMinutes(-1);

            List <FaturaCliente> emailenviado = await bd.Faturas.Where(d => d.DataEmissao >= dia1 && d.DataEmissao <= finaldia).ToListAsync();


            foreach (var item in emailenviado)
            {
                if (item.DataEmissao.Month == mespassado.Month)
                {
                    return(RedirectToAction("EmailsJaEnviados"));
                }
            }


            string email; string assunto; string mensagem;
            var    cliente = await bd.Users.Where(c => c.Tipo.Tipo.Contains("Cliente")).ToListAsync();



            foreach (var item in cliente)
            {
                if (item.ContratosCliente.Count() != 0)
                {
                    foreach (var fatura in contratos)
                    {
                        var valorpagar = await bd.Contratos.FirstOrDefaultAsync(c => c.ContratoId == fatura.ContratoId);

                        //var cliente = await bd.Users.FirstOrDefaultAsync(m => m.UserId == item.UserId);
                        decimal preco = valorpagar.PrecoContrato;
                        email = valorpagar.Cliente.Email;
                        int qq  = (int)mespassado.Month;
                        var mes = await bd.Meses.SingleOrDefaultAsync(m => m.MesId == qq);

                        assunto  = "UPtel - Faturação de " + mes.Mes;
                        mensagem = "Caro/a cliente, informamos que o preço a pagar em " + mes.Mes + " é de " + preco + " € da fatura de " + mes.Mes;

                        try
                        {
                            //email destino, assunto do email, mensagem a enviar
                            await _emailSender.SendEmailAsync(email, assunto, mensagem);
                        }
                        catch (Exception)
                        {
                            return(RedirectToAction("EmailFalhou"));
                        }


                        if (fatura.ClienteId == item.UsersId)
                        {
                            FaturaCliente faturaCliente = new FaturaCliente();

                            faturaCliente.DataEmissao   = hoje;
                            faturaCliente.ContratoId    = fatura.ContratoId;
                            faturaCliente.NomeCliente   = fatura.Cliente.Nome;
                            faturaCliente.Morada        = fatura.MoradaContrato;
                            faturaCliente.PrecoContrato = fatura.PrecoContrato;
                            faturaCliente.PacoteId      = fatura.PacoteId;
                            faturaCliente.PrecoContrato = fatura.PrecoContrato;



                            if (ModelState.IsValid)
                            {
                                bd.Add(faturaCliente);
                                await bd.SaveChangesAsync();
                            }
                        }
                    }
                }
            }

            ////emailenviado.Add(new FaturaCliente() { DataEmissao = DateTime.Today, Enviado = true, mes = mes });
            //foreach (var item in emailenviado)
            //{
            //    bd.Faturas.Add(item);
            //}
            //await bd.SaveChangesAsync();
            return(RedirectToAction("EmailEnviado"));
        }
        public async Task <IActionResult> ExportCsvHelper(string fileUrl)
        {
            List <FaturaCliente> faturas = new List <FaturaCliente>();
            string file = @fileUrl;

            FaturaCliente cliente = new FaturaCliente();

            var textFile = cliente.GetText(file);

            var teste = textFile.ToList();

            teste.RemoveAt(0);


            foreach (var item in teste)
            {
                var dados = item.Split(";");

                if (cliente.ValidaCep(dados[1].Replace(" ", "")))
                {
                    int numPag;
                    var tryConvert = Int32.TryParse(dados[7], out numPag);

                    if (numPag % 2 == 1)
                    {
                        numPag += 1;
                    }

                    FaturaCliente clienteaux = new FaturaCliente
                    {
                        NomeCliente      = dados[0],
                        EnderecoCompleto = dados[2] + '-' + dados[3] + '-' + dados[4] + '-' + dados[5] + '-' + dados[1],
                        ValorFatura      = dados[6],
                        NumeroPaginas    = numPag
                    };

                    faturas.Add(clienteaux);
                }
            }
            string strFilePath6    = ".\\arquivos\\faturaspg6.csv";
            string strFilePath12   = ".\\arquivos\\faturaspg12.csv";
            string strFilePath     = ".\\arquivos\\faturaspg.csv";
            string strFilePathZero = ".\\arquivos\\faturasZero.csv";

            string strSeperator = ";";

            var faturasPg6  = faturas.AsQueryable().Where(x => x.NumeroPaginas <= 6 && x.ValorFatura != "0").ToList();
            var faturasPg12 = faturas.AsQueryable().Where(x => x.NumeroPaginas > 6 && x.NumeroPaginas <= 12 && x.ValorFatura != "0").ToList();
            var faturasPg   = faturas.AsQueryable().Where(x => x.NumeroPaginas > 12 && x.ValorFatura != "0").ToList();
            var faturazero  = faturas.AsQueryable().Where(x => x.ValorFatura == "0").ToList();

            await cliente.WriteFile(faturasPg6, strFilePath6);

            await cliente.WriteFile(faturasPg12, strFilePath12);

            await cliente.WriteFile(faturasPg, strFilePath);

            await cliente.WriteFile(faturazero, strFilePathZero);


            return(Ok("Arquivos gerados"));
        }