Exemplo n.º 1
0
        public async Task <IActionResult> Create(ReclamacoesViewModel reclamacoesViewModel, Reclamacoes reclamacao, int id)
        {
            if (ModelState.IsValid)
            {
                var cliente  = bd.Utilizadores.SingleOrDefault(c => c.Email == User.Identity.Name);
                var contrato = bd.Contratos.SingleOrDefault(c => c.UtilizadorId == cliente.UtilizadorId);

                reclamacao.Cliente = cliente;

                reclamacao.ContratoId    = contrato.ContratoId;
                reclamacao.FuncionarioId = contrato.FuncionarioId;

                reclamacao.EstadoResolução = false;
                reclamacao.EstadoResposta  = false;
                reclamacao.DataReclamacao  = DateTime.Now;

                reclamacao.Inactivo     = false;
                reclamacao.Descricao    = reclamacoesViewModel.Descricao;
                reclamacao.ReclamacaoId = reclamacoesViewModel.ReclamacaoId;


                bd.Add(reclamacao);
                await bd.SaveChangesAsync();

                ViewBag.Mensagem = "Reclamação enviada com sucesso";
                return(View("Sucesso"));
            }



            return(View(reclamacao));
        }
        public async Task <IActionResult> Create([Bind("ServicoId,Nome,Descricao,TipoServicoId")] Servicos servicos)
        {
            if (!ModelState.IsValid)
            {
                ViewData["TipoServicoId"] = new SelectList(bd.TiposServicos, "TipoServicoId", "Nome");
                return(View(servicos));
            }
            bd.Add(servicos);
            await bd.SaveChangesAsync();

            ViewBag.Mensagem = "Serviço adicionado com sucesso.";
            return(View("Sucesso"));
        }
        public async Task <IActionResult> Create(ServicosPacotesViewModel servicosPacotesViewModel, Pacotes pacotes, ServicosPacotes servicosPacotes, IFormFile Imagem)
        {
            List <ServicosPacotes> servicosNosPacotes = new List <ServicosPacotes>();

            pacotes.Nome      = servicosPacotesViewModel.Nome;
            pacotes.Descricao = servicosPacotesViewModel.Descricao;
            pacotes.Preco     = servicosPacotesViewModel.Preco;
            pacotes.Inactivo  = false;
            pacotes.Imagem    = servicosPacotesViewModel.Imagem;
            AtualizaImagem(pacotes, Imagem);
            //acrescenta data de criação
            pacotes.DataCriacao = DateTime.Now;

            int pacoteId = pacotes.PacoteId;

            var servico1id = bd.Servicos.SingleOrDefault(e => e.ServicoId == servicosPacotesViewModel.Servico1);
            var servico2id = bd.Servicos.SingleOrDefault(e => e.ServicoId == servicosPacotesViewModel.Servico2);
            var servico3id = bd.Servicos.SingleOrDefault(e => e.ServicoId == servicosPacotesViewModel.Servico3);
            var servico4id = bd.Servicos.SingleOrDefault(e => e.ServicoId == servicosPacotesViewModel.Servico4);
            var servico5id = bd.Servicos.SingleOrDefault(e => e.ServicoId == servicosPacotesViewModel.Servico5);


            if (servico1id.Nome != "---")
            {
                servicosNosPacotes.Add(new ServicosPacotes()
                {
                    PacoteId = pacoteId, ServicoId = servicosPacotesViewModel.Servico1
                });
            }

            if (servico2id.Nome != "---")
            {
                servicosNosPacotes.Add(new ServicosPacotes()
                {
                    PacoteId = pacoteId, ServicoId = servicosPacotesViewModel.Servico2
                });
            }

            if (servico3id.Nome != "---")
            {
                servicosNosPacotes.Add(new ServicosPacotes()
                {
                    PacoteId = pacoteId, ServicoId = servicosPacotesViewModel.Servico3
                });
            }

            if (servico4id.Nome != "---")
            {
                servicosNosPacotes.Add(new ServicosPacotes()
                {
                    PacoteId = pacoteId, ServicoId = servicosPacotesViewModel.Servico4
                });
            }

            if (servico5id.Nome != "---")
            {
                servicosNosPacotes.Add(new ServicosPacotes()
                {
                    PacoteId = pacoteId, ServicoId = servicosPacotesViewModel.Servico5
                });
            }

            if (servicosNosPacotes.Count == 0)
            {
                ModelState.AddModelError("Servico1", "O pacote deve ter pelo menos um serviço associado.");
            }

            List <DistritosPacotes> distritoscomPacotes = new List <DistritosPacotes>();

            foreach (var item in servicosPacotesViewModel.ListaDistritosCentro)
            {
                if (item.Selecionado == true)
                {
                    distritoscomPacotes.Add(new DistritosPacotes()
                    {
                        PacoteId = pacoteId, DistritosId = item.Id
                    });
                }
            }
            foreach (var item in servicosPacotesViewModel.ListaDistritosIlhas)
            {
                if (item.Selecionado == true)
                {
                    distritoscomPacotes.Add(new DistritosPacotes()
                    {
                        PacoteId = pacoteId, DistritosId = item.Id
                    });
                }
            }
            foreach (var item in servicosPacotesViewModel.ListaDistritosNorte)
            {
                if (item.Selecionado == true)
                {
                    distritoscomPacotes.Add(new DistritosPacotes()
                    {
                        PacoteId = pacoteId, DistritosId = item.Id
                    });
                }
            }
            foreach (var item in servicosPacotesViewModel.ListaDistritosSul)
            {
                if (item.Selecionado == true)
                {
                    distritoscomPacotes.Add(new DistritosPacotes()
                    {
                        PacoteId = pacoteId, DistritosId = item.Id
                    });
                }
            }

            if (distritoscomPacotes.Count == 0)
            {
                ModelState.AddModelError("ListaDistritosCentro", "O pacote que está a criar não vai ficar disponível em nenhum distrito");
            }

            if (!ModelState.IsValid)
            {
                var servicos      = bd.Servicos.ToList();
                var tiposServicos = bd.TiposServicos.ToList();

                ViewData["Tipo1"] = tiposServicos[0].Nome;
                ViewData["Tipo2"] = tiposServicos[1].Nome;
                ViewData["Tipo3"] = tiposServicos[2].Nome;
                ViewData["Tipo4"] = tiposServicos[3].Nome;
                ViewData["Tipo5"] = tiposServicos[4].Nome;

                List <Servicos> Lista1 = new List <Servicos>();
                List <Servicos> Lista2 = new List <Servicos>();
                List <Servicos> Lista3 = new List <Servicos>();
                List <Servicos> Lista4 = new List <Servicos>();
                List <Servicos> Lista5 = new List <Servicos>();

                foreach (var item in servicos)
                {
                    switch (item.TipoServicoId)
                    {
                    case 1:
                        Lista1.Add(item);
                        break;

                    case 2:
                        Lista2.Add(item);
                        break;

                    case 3:
                        Lista3.Add(item);
                        break;

                    case 4:
                        Lista4.Add(item);
                        break;

                    case 5:
                        Lista5.Add(item);
                        break;
                    }
                }

                ViewData["Lista1"] = new SelectList(Lista1, "ServicoId", "Nome");
                ViewData["Lista2"] = new SelectList(Lista2, "ServicoId", "Nome");
                ViewData["Lista3"] = new SelectList(Lista3, "ServicoId", "Nome");
                ViewData["Lista4"] = new SelectList(Lista4, "ServicoId", "Nome");
                ViewData["Lista5"] = new SelectList(Lista5, "ServicoId", "Nome");

                var distritosCentro = bd.Distritos.Where(p => p.Nome == "Coimbra" || p.Nome == "Aveiro" || p.Nome == "Viseu" ||
                                                         p.Nome == "Leiria" || p.Nome == "Castelo Branco" || p.Nome == "Guarda")
                                      .ToList();

                var distritosNorte = bd.Distritos.Where(p => p.Nome == "Viana do Castelo" || p.Nome == "Braga" || p.Nome == "Porto" ||
                                                        p.Nome == "Vila Real" || p.Nome == "Bragança")
                                     .ToList();

                var distritosSul = bd.Distritos.Where(p => p.Nome == "Lisboa" || p.Nome == "Setúbal" || p.Nome == "Santarém" ||
                                                      p.Nome == "Portalegre" || p.Nome == "Évora" || p.Nome == "Beja" || p.Nome == "Faro")
                                   .ToList();

                var distritosIlhas = bd.Distritos.Where(p => p.Nome == "Açores" || p.Nome == "Madeira")
                                     .ToList();

                servicosPacotesViewModel.ListaDistritosCentro = distritosCentro.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                servicosPacotesViewModel.ListaDistritosNorte = distritosNorte.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                servicosPacotesViewModel.ListaDistritosSul = distritosSul.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                servicosPacotesViewModel.ListaDistritosIlhas = distritosIlhas.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                return(View(servicosPacotesViewModel));
            }

            bd.Pacotes.Add(pacotes);
            await bd.SaveChangesAsync();

            pacoteId = pacotes.PacoteId;
            foreach (var item in distritoscomPacotes)
            {
                item.PacoteId = pacoteId;
                bd.DistritosPacotes.Add(item);
            }
            await bd.SaveChangesAsync();

            foreach (var item in servicosNosPacotes)
            {
                item.PacoteId = pacoteId;
                bd.ServicosPacotes.Add(item);
            }
            await bd.SaveChangesAsync();



            ViewBag.Mensagem = "Pacote adicionado com sucesso.";
            return(View("Sucesso"));
        }
        public async Task <IActionResult> CreateClientes(RegistoUtilizadoresViewModel infoUtilizador)
        {
            IdentityUser utilizador = await _gestorUtilizadores.FindByNameAsync(infoUtilizador.Email);

            if (utilizador != null)
            {
                ModelState.AddModelError("Email", "Já existe um funcionário com o email que especificou.");
            }

            utilizador = new IdentityUser(infoUtilizador.Email);
            IdentityResult resultado = await _gestorUtilizadores.CreateAsync(utilizador, infoUtilizador.Password);

            if (!resultado.Succeeded)
            {
                ModelState.AddModelError("", "Não foi possível fazer o registo. Por favor tente mais tarde novamente e se o problema persistir contacte a assistência.");
            }
            else
            {
                await _gestorUtilizadores.AddToRoleAsync(utilizador, infoUtilizador.Role);
            }

            if (!ModelState.IsValid)
            {
                //ViewData["Roles_Nome"] = new SelectList(_context.Roles, "Roles_Nome", "Roles_Nome");
                return(View(infoUtilizador));
            }



            Utilizadores utilizadores = new Utilizadores
            {
                Nome           = infoUtilizador.Nome,
                DataNascimento = infoUtilizador.DataNascimento,
                Morada         = infoUtilizador.Morada,
                Nif            = infoUtilizador.Nif,
                CodigoPostal   = infoUtilizador.CodigoPostal,
                Email          = infoUtilizador.Email,
                Telemovel      = infoUtilizador.Telemovel,
                Role           = infoUtilizador.Role,
            };

            string contribuente = utilizadores.Nif;

            char firstChar = contribuente[0];

            if (firstChar.Equals('1') ||
                firstChar.Equals('2') ||
                firstChar.Equals('3') ||
                firstChar.Equals('5') ||
                firstChar.Equals('6') ||
                firstChar.Equals('8') ||
                firstChar.Equals('9'))
            {
                int checkDigit = (Convert.ToInt32(firstChar.ToString()) * 9);
                for (int i = 2; i <= 8; ++i)
                {
                    checkDigit += Convert.ToInt32(contribuente[i - 1].ToString()) * (10 - i);
                }

                checkDigit = 11 - (checkDigit % 11);
                if (checkDigit >= 10)
                {
                    checkDigit = 0;
                }

                if (checkDigit.ToString() != contribuente[8].ToString())
                {
                    ModelState.AddModelError("Nif", "Contribuinte Inválido, coloque novamente");
                    return(View(infoUtilizador));
                }
            }
            ;



            _context.Add(utilizadores);
            await _context.SaveChangesAsync();

            ViewBag.Mensagem = "Utilizador adicionado com sucesso.";
            return(View("SucessoClientes"));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Index()
        {
            var contratos = await bd.Contratos.ToListAsync();

            var emailenviado = await bd.EnvioDeFaturas.ToListAsync();

            DateTime hoje       = DateTime.Today;
            DateTime mespassado = hoje.AddMonths(-1);
            int      mes        = mespassado.Month;
            int      ano        = mespassado.Year;

            bool enviado = false;

            foreach (var item in emailenviado)
            {
                if (item.mes == mes && item.ano == ano)
                {
                    enviado = true;
                }
                else
                {
                    enviado = false;
                }
            }

            if (enviado == false)
            {
                string email; string assunto; string mensagem;
                foreach (var item in bd.Contratos)

                {
                    var cliente = await bd.Utilizadores.FirstOrDefaultAsync(m => m.UtilizadorId == item.UtilizadorId);

                    decimal preco = item.PrecoFinal;
                    email = cliente.Email;

                    string NomeMes = NomesDoMes(mes);
                    assunto  = "Faturação RD Telecom";
                    mensagem = "Caro/a cliente, informamos que tem a pagar " + preco + "€ da fatura de " + NomeMes + ". Obrigado pela sua preferência!";

                    try
                    {
                        //email destino, assunto do email, mensagem a enviar
                        await _emailSender.SendEmailAsync(email, assunto, mensagem);

                        enviado = true;
                    }
                    catch (Exception)
                    {
                        enviado = false;
                    }
                }

                emailenviado.Add(new EnvioDeFaturas()
                {
                    DataDeEnvio = DateTime.Today, Enviado = true, mes = mes, ano = ano
                });
                foreach (var item in emailenviado)
                {
                    bd.EnvioDeFaturas.Add(item);
                }
                await bd.SaveChangesAsync();
            }

            List <InfoPacoteViewModel> ListaPacotes = new List <InfoPacoteViewModel>();

            foreach (var pacote in bd.Pacotes)
            {
                InfoPacoteViewModel infoPacote = new InfoPacoteViewModel();

                infoPacote.Pacote = pacote;

                infoPacote.Promocao = await bd.PromocoesPacotes
                                      .Include(p => p.Promocoes)
                                      .Where(p => p.PacoteId == pacote.PacoteId)
                                      .Select(p => p.Promocoes)
                                      .Where(p => p.DataInicio <DateTime.Now && p.DataFim> DateTime.Now)
                                      .FirstOrDefaultAsync();

                infoPacote.Servicos = await bd.ServicosPacotes
                                      .Include(p => p.Servico)
                                      .Where(p => p.PacoteId == pacote.PacoteId)
                                      .Select(p => p.Servico)
                                      .ToListAsync();

                foreach (var item in infoPacote.Servicos)
                {
                    infoPacote.TiposServicos = await bd.Servicos
                                               .Include(p => p.TipoServicos)
                                               .Where(p => p.ServicoId == item.ServicoId)
                                               .Select(p => p.TipoServicos)
                                               .ToListAsync();
                }


                ListaPacotes.Add(infoPacote);
            }

            var Funcionarios = bd.Utilizadores.Where(p => p.Role != "Cliente").ToList();
            int contagemFunc = Funcionarios.Count();

            var Clientes         = bd.Utilizadores.Where(p => p.Role == "Cliente").ToList();
            int contagemClientes = Clientes.Count();

            var Contratos         = bd.Contratos.ToList();
            int contagemContratos = Contratos.Count();

            var Reclamacoes         = bd.Reclamacoes.Where(r => r.Inactivo == false).ToList();
            int contagemReclamacoes = Reclamacoes.Count();

            var Reclamacoes1        = bd.Reclamacoes.Where(r => r.Inactivo == true).ToList();
            int reclamacoesfechadas = Reclamacoes1.Count();


            decimal receita = 0;

            foreach (var item in Contratos)
            {
                receita += item.PrecoFinal;
            }


            if (User.IsInRole("Operador"))
            {
                var funcionario = bd.Utilizadores.SingleOrDefault(c => c.Email == User.Identity.Name);


                List <Contratos> MeusContratos = await bd.Contratos
                                                 .Where(p => p.FuncionarioId == funcionario.UtilizadorId)
                                                 .ToListAsync();

                int contagemMeusContratos = MeusContratos.Count();


                //DateTime now = DateTime.Now;
                //var startDate = new DateTime(now.Year, now.Month, 1);
                //var endDate = startDate.AddMonths(1).AddDays(-1);
                decimal faturacao = 0;
                foreach (var item in MeusContratos)
                {
                    faturacao += item.PrecoFinal;
                }
                ViewData["faturacao"]     = faturacao;
                ViewData["Meuscontratos"] = contagemMeusContratos;
            }


            HomeGestaoViewModel modelo = new HomeGestaoViewModel
            {
                enviado = enviado,
                Pacotes = ListaPacotes,
            };

            ViewData["clientes"]            = contagemClientes;
            ViewData["contratos"]           = contagemContratos;
            ViewData["receita"]             = receita;
            ViewData["func"]                = contagemFunc;
            ViewData["reclamacoes"]         = contagemReclamacoes;
            ViewData["reclamacoesfechadas"] = reclamacoesfechadas;


            return(View(modelo));
        }
        public async Task <IActionResult> Create(PromocoesPacotesViewModel promocoesPacotesViewModel, PromocoesPacotes promocoesPacotes, Promocoes promocoes)
        {
            if (!ModelState.IsValid)
            {
                var pacotes = bd.Pacotes.ToList();

                promocoesPacotesViewModel.ListaPacotes = pacotes.Select(s => new Checkbox()
                {
                    Id          = s.PacoteId,
                    NomePacote  = s.Nome,
                    Selecionado = false
                }).ToList();

                var distritosCentro = bd.Distritos.Where(p => p.Nome == "Coimbra" || p.Nome == "Aveiro" || p.Nome == "Viseu" ||
                                                         p.Nome == "Leiria" || p.Nome == "Castelo Branco" || p.Nome == "Guarda")
                                      .ToList();

                var distritosNorte = bd.Distritos.Where(p => p.Nome == "Viana do Castelo" || p.Nome == "Braga" || p.Nome == "Porto" ||
                                                        p.Nome == "Vila Real" || p.Nome == "Bragança")
                                     .ToList();

                var distritosSul = bd.Distritos.Where(p => p.Nome == "Lisboa" || p.Nome == "Setúbal" || p.Nome == "Santarém" ||
                                                      p.Nome == "Portalegre" || p.Nome == "Évora" || p.Nome == "Beja" || p.Nome == "Faro")
                                   .ToList();

                var distritosIlhas = bd.Distritos.Where(p => p.Nome == "Açores" || p.Nome == "Madeira")
                                     .ToList();

                promocoesPacotesViewModel.ListaDistritosCentro = distritosCentro.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                promocoesPacotesViewModel.ListaDistritosNorte = distritosNorte.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                promocoesPacotesViewModel.ListaDistritosSul = distritosSul.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                promocoesPacotesViewModel.ListaDistritosIlhas = distritosIlhas.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();



                return(View(promocoesPacotesViewModel));
            }

            List <PromocoesPacotes> promocoesDosPacotes = new List <PromocoesPacotes>();

            promocoes.Nome         = promocoesPacotesViewModel.Nome;
            promocoes.Descricao    = promocoesPacotesViewModel.Descricao;
            promocoes.DataInicio   = promocoesPacotesViewModel.DataInicio;
            promocoes.DataFim      = promocoesPacotesViewModel.DataFim;
            promocoes.PromocaoDesc = promocoesPacotesViewModel.PromocaoDesc;
            promocoes.Inactivo     = false;


            int promocaoId = promocoes.PromocoesId;

            foreach (var item in promocoesPacotesViewModel.ListaPacotes)
            {
                if (item.Selecionado == true)
                {
                    promocoesDosPacotes.Add(new PromocoesPacotes()
                    {
                        PromocoesId = promocaoId, PacoteId = item.Id
                    });
                }
            }
            if (promocoesDosPacotes.Count == 0)
            {
                ModelState.AddModelError("ListaPacotes", "A promoção que está a criar não vai ficar disponível para nenhum pacote");
            }


            List <DistritosPromocoes> distritoscomPromocoes = new List <DistritosPromocoes>();

            foreach (var item in promocoesPacotesViewModel.ListaDistritosCentro)
            {
                if (item.Selecionado == true)
                {
                    distritoscomPromocoes.Add(new DistritosPromocoes()
                    {
                        PromocoesId = promocaoId, DistritosId = item.Id
                    });
                }
            }
            foreach (var item in promocoesPacotesViewModel.ListaDistritosIlhas)
            {
                if (item.Selecionado == true)
                {
                    distritoscomPromocoes.Add(new DistritosPromocoes()
                    {
                        PromocoesId = promocaoId, DistritosId = item.Id
                    });
                }
            }
            foreach (var item in promocoesPacotesViewModel.ListaDistritosNorte)
            {
                if (item.Selecionado == true)
                {
                    distritoscomPromocoes.Add(new DistritosPromocoes()
                    {
                        PromocoesId = promocaoId, DistritosId = item.Id
                    });
                }
            }
            foreach (var item in promocoesPacotesViewModel.ListaDistritosSul)
            {
                if (item.Selecionado == true)
                {
                    distritoscomPromocoes.Add(new DistritosPromocoes()
                    {
                        PromocoesId = promocaoId, DistritosId = item.Id
                    });
                }
            }

            if (distritoscomPromocoes.Count == 0)
            {
                ModelState.AddModelError("ListaDistritosNorte", "A promoção que está a criar não vai ficar disponível em nenhum distrito");
            }
            if (!ModelState.IsValid)
            {
                var pacotes = bd.Pacotes.ToList();

                promocoesPacotesViewModel.ListaPacotes = pacotes.Select(s => new Checkbox()
                {
                    Id          = s.PacoteId,
                    NomePacote  = s.Nome,
                    Selecionado = false
                }).ToList();

                var distritosCentro = bd.Distritos.Where(p => p.Nome == "Coimbra" || p.Nome == "Aveiro" || p.Nome == "Viseu" ||
                                                         p.Nome == "Leiria" || p.Nome == "Castelo Branco" || p.Nome == "Guarda")
                                      .ToList();

                var distritosNorte = bd.Distritos.Where(p => p.Nome == "Viana do Castelo" || p.Nome == "Braga" || p.Nome == "Porto" ||
                                                        p.Nome == "Vila Real" || p.Nome == "Bragança")
                                     .ToList();

                var distritosSul = bd.Distritos.Where(p => p.Nome == "Lisboa" || p.Nome == "Setúbal" || p.Nome == "Santarém" ||
                                                      p.Nome == "Portalegre" || p.Nome == "Évora" || p.Nome == "Beja" || p.Nome == "Faro")
                                   .ToList();

                var distritosIlhas = bd.Distritos.Where(p => p.Nome == "Açores" || p.Nome == "Madeira")
                                     .ToList();

                promocoesPacotesViewModel.ListaDistritosCentro = distritosCentro.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                promocoesPacotesViewModel.ListaDistritosNorte = distritosNorte.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                promocoesPacotesViewModel.ListaDistritosSul = distritosSul.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();

                promocoesPacotesViewModel.ListaDistritosIlhas = distritosIlhas.Select(s => new Checkbox()
                {
                    Id           = s.DistritosId,
                    NomeDistrito = s.Nome,
                    Selecionado  = false
                }).ToList();



                return(View(promocoesPacotesViewModel));
            }

            bd.Promocoes.Add(promocoes);
            await bd.SaveChangesAsync();

            foreach (var item in promocoesDosPacotes)
            {
                item.PromocoesId = promocoes.PromocoesId;
                bd.PromocoesPacotes.Add(item);
            }
            await bd.SaveChangesAsync();

            foreach (var item in distritoscomPromocoes)
            {
                item.PromocoesId = promocoes.PromocoesId;
                bd.DistritosPromocoes.Add(item);
            }
            await bd.SaveChangesAsync();

            ViewBag.Mensagem = "Promoção adicionada com sucesso.";
            return(View("Sucesso"));
        }
        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"));
        }