public async Task <IActionResult> CriarContratoPasso4(NovoContratoPasso4ViewModel contratoPasso4) { if (contratoPasso4.UmAno == true) { contratoPasso4.DataFim = contratoPasso4.DataInicio.AddYears(1); } else if (contratoPasso4.DoisAnos == true) { contratoPasso4.DataFim = contratoPasso4.DataInicio.AddYears(2); } ViewData["ClienteId"] = contratoPasso4.ClienteId; var clienteId = bd.Utilizadores.SingleOrDefault(e => e.UtilizadorId == contratoPasso4.ClienteId); ViewData["ClienteNome"] = clienteId.Nome; ViewData["PacoteId"] = contratoPasso4.PacoteId; var pacoteId = bd.Pacotes.SingleOrDefault(e => e.PacoteId == contratoPasso4.PacoteId); ViewData["PacoteNome"] = pacoteId.Nome; ViewData["Morada"] = contratoPasso4.Morada; ViewData["CodigoPostal"] = contratoPasso4.CodigoPostal; ViewData["Telefone"] = contratoPasso4.Telefone; ViewData["DataInicio"] = contratoPasso4.DataInicio; ViewData["DataFim"] = contratoPasso4.DataFim; ViewData["DistritosId"] = contratoPasso4.DistritosId; var distritoId = bd.Distritos.SingleOrDefault(e => e.DistritosId == contratoPasso4.DistritosId); ViewData["DistritoNome"] = distritoId.Nome; List <Promocoes> promocoesPacotes = await bd.PromocoesPacotes.Where(p => p.PacoteId == contratoPasso4.PacoteId) .Include(c => c.Promocoes) .Select(c => c.Promocoes) .Where(c => c.DataInicio <DateTime.Now && c.DataFim> DateTime.Now && c.Inactivo == false) .ToListAsync(); var promocoesDistritos = await bd.DistritosPromocoes .Where(c => c.DistritosId == contratoPasso4.DistritosId) .Include(c => c.Promocao) .Select(c => c.Promocao) .ToListAsync(); List <Promocoes> promocoes = new List <Promocoes>(); foreach (var item in promocoesPacotes) { foreach (var promocao in promocoesDistritos) { if (item.PromocoesId == promocao.PromocoesId) { promocoes.Add(promocao); } } } ViewData["PromocoesId"] = new SelectList(promocoes, "PromocoesId", "Nome"); return(View(contratoPasso4)); }
public IActionResult CriarContratoPasso3Validacao(NovoContratoPasso3ViewModel contratoPasso3) { if (!ModelState.IsValid) { ViewData["PacoteId"] = new SelectList(bd.Pacotes, "PacoteId", "Nome"); return(View(contratoPasso3)); } else { NovoContratoPasso4ViewModel contratoPasso4 = new NovoContratoPasso4ViewModel { ClienteId = contratoPasso3.ClienteId, Morada = contratoPasso3.Morada, DistritosId = contratoPasso3.DistritosId, CodigoPostal = contratoPasso3.CodigoPostal, Telefone = contratoPasso3.Telefone, PacoteId = contratoPasso3.PacoteId, DataInicio = contratoPasso3.DataInicio, UmAno = contratoPasso3.UmAno, DoisAnos = contratoPasso3.DoisAnos, }; ViewData["PacoteId"] = new SelectList(bd.Pacotes, "PacoteId", "Nome"); return(RedirectToAction("CriarContratoPasso4", contratoPasso4)); } }
public async Task <IActionResult> Create5(NovoContratoPasso4ViewModel contratoPasso4, Contratos contratos) { if (!ModelState.IsValid) { var clienteId = bd.Utilizadores.SingleOrDefault(e => e.UtilizadorId == contratos.UtilizadorId); ViewData["ClienteId"] = contratos.ClienteId; ViewData["ClienteNome"] = clienteId.Nome; ViewData["PacoteId"] = new SelectList(bd.Pacotes, "PacoteId", "Nome"); ViewData["PromocoesId"] = new SelectList(bd.Promocoes, "PromocoesId", "Nome"); return(View()); } //Código que vai buscar o ID do funcionário que tem login feito e atribui automaticamente ao contrato var funcionario = bd.Utilizadores.SingleOrDefault(c => c.Email == User.Identity.Name); var funcionarioEmail = bd.Utilizadores.SingleOrDefault(d => d.Email == funcionario.Email); contratos.FuncionarioId = funcionarioEmail.UtilizadorId; //Código que vai buscar o preço do pacote contratos.PacoteId = contratoPasso4.PacoteId; var pacoteid = bd.Pacotes.SingleOrDefault(e => e.PacoteId == contratos.PacoteId); contratos.PrecoPacote = pacoteid.Preco; //Código que vai buscar o nome do pacote contratos.NomePacote = pacoteid.Nome; ////Código que vai buscar o cliente //contratos.ClienteId = contratos.UtilizadorId; List <PromocoesPacotes> PromocoesDisponiveis = new List <PromocoesPacotes>(); foreach (var pacote in bd.PromocoesPacotes) { if (contratos.PacoteId == pacote.PacoteId) { PromocoesDisponiveis.Add(pacote); } } contratos.PromocoesId = contratoPasso4.PromocoesId; bool PromoDisponivel = false; foreach (var promocao in PromocoesDisponiveis) { if (contratos.PromocoesId == promocao.PromocoesId) { PromoDisponivel = true; } } if (PromoDisponivel == false) { var clienteId = bd.Utilizadores.SingleOrDefault(e => e.UtilizadorId == contratos.UtilizadorId); ViewData["ClienteId"] = contratos.UtilizadorId; ViewData["ClienteNome"] = clienteId.Nome; ViewData["UtilizadorId"] = new SelectList(bd.Utilizadores, "UtilizadorId", "Nome"); ViewData["PacoteId"] = new SelectList(bd.Pacotes, "PacoteId", "Nome"); ViewData["PromocaoDesc"] = new SelectList(bd.Promocoes, "PromocoesId", "PromocaoDesc"); ViewData["PromocoesId"] = new SelectList(bd.Promocoes, "PromocoesId", "Nome"); ViewBag.Message = "A promoção que está a tentar aplicar não está disponível para o pacote selecionado"; return(View(contratos)); } //Código que vai buscar o desconto da promoção int promo = contratos.PromocoesId; var promocaoid = bd.Promocoes.SingleOrDefault(e => e.PromocoesId == contratos.PromocoesId); contratos.PromocaoDesc = promocaoid.PromocaoDesc; //Cálculo do PrecoFinal contratos.PrecoFinal = contratos.PrecoPacote - contratos.PromocaoDesc; contratos.ClienteId = contratoPasso4.ClienteId; contratos.CodigoPostal = contratoPasso4.CodigoPostal; contratos.DataFim = contratoPasso4.DataFim; contratos.DataInicio = contratoPasso4.DataInicio; contratos.Morada = contratoPasso4.Morada; contratos.DistritosId = contratoPasso4.DistritosId; bd.Add(contratos); await bd.SaveChangesAsync(); List <ServicosPacotes> servicosNoPacote = new List <ServicosPacotes>(); List <ServicosContratos> servicosNoContrato = new List <ServicosContratos>(); foreach (var item in bd.ServicosPacotes) { if (item.PacoteId == pacoteid.PacoteId) { servicosNoPacote.Add(item); } } foreach (var item in servicosNoPacote) { servicosNoContrato.Add(new ServicosContratos() { ServicoId = item.ServicoId, ContratoId = contratos.ContratoId }); } foreach (var item in servicosNoContrato) { bd.ServicosContratos.Add(item); } await bd.SaveChangesAsync(); ViewBag.Mensagem = "Contrato adicionado com sucesso."; return(View("Sucesso")); }