Пример #1
0
        public List <itemLista> GetRetornaPromocoesTotalPosts(int idEmpresa)
        {
            var promoRN = new Promocoes();
            var promos  = promoRN.retornaPromocoesEmpresaTotalPosts(idEmpresa);

            return(promos);
        }
        public async Task <IActionResult> EditOperadores(PromocoesPacotesViewModel promocoesPacotesViewModel)
        {
            List <PromocoesPacotes> promocoesDosPacotes = new List <PromocoesPacotes>();
            int       id       = promocoesPacotesViewModel.PromocoesId;
            Promocoes promocao = await bd.Promocoes.Include(p => p.PromocoesPacotes)
                                 .ThenInclude(c => c.Pacote)
                                 //.AsNoTracking()
                                 .SingleOrDefaultAsync(p => p.PromocoesId == id);

            int promocaoId = promocao.PromocoesId;

            foreach (var pacote in promocoesPacotesViewModel.ListaPacotes)
            {
                if (pacote.Selecionado == true)
                {
                    promocoesDosPacotes.Add(new PromocoesPacotes()
                    {
                        PromocoesId = promocaoId, PacoteId = pacote.Id
                    });
                }
            }

            var ListaPromocoesPacotes = bd.PromocoesPacotes.Where(p => p.PromocoesId == id).ToList();
            var resultado             = ListaPromocoesPacotes.Except(promocoesDosPacotes).ToList();

            foreach (var promocaoPacote in resultado)
            {
                bd.PromocoesPacotes.Remove(promocaoPacote);
                await bd.SaveChangesAsync();
            }

            var novaListaPromocoesPacotes = bd.PromocoesPacotes.Where(p => p.PromocoesId == id).ToList();

            foreach (var pacote in promocoesDosPacotes)
            {
                if (!novaListaPromocoesPacotes.Contains(pacote))
                {
                    bd.PromocoesPacotes.Add(pacote);
                    await bd.SaveChangesAsync();
                }
            }

            //Checklist de Distritos
            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
                    });
                }
            }
            var listaDistritosPromocoes = bd.DistritosPromocoes.Where(p => p.PromocoesId == id).ToList();
            var resultado2 = listaDistritosPromocoes.Except(distritoscomPromocoes).ToList();

            foreach (var distrito in resultado2)
            {
                bd.DistritosPromocoes.Remove(distrito);
                await bd.SaveChangesAsync();
            }

            var novalistaDistritosPromocoes = bd.DistritosPromocoes.Where(p => p.PromocoesId == id).ToList();

            foreach (var distrito in distritoscomPromocoes)
            {
                if (!novalistaDistritosPromocoes.Contains(distrito))
                {
                    bd.DistritosPromocoes.Add(distrito);
                    await bd.SaveChangesAsync();
                }
            }
            ViewBag.Mensagem = "Promoção alterada com sucesso";
            return(View("Sucesso"));
        }
        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"));
        }