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