Ejemplo n.º 1
0
        private Answer GetInfoPresentations(string territory, string password, bool returnAllProducts)
        {
            var territorio = GetTerritorio(territory, password);

            //verifica se há usuario simulando um territorio (significa que é uma agencia ou gerente acessando o sistema)
            var usuario = GetUsuarioByTerritorioSimulado(territory, password);

            var linha = GetLinhaByTerritorioSimulado(territory, password);

            if (territorio == null && usuario == null && linha == null)
                return new Answer(Answer.EnumStatus.ErroLogin, "Login e/ou senha inválido(s)");

            //var produtosQuery =
            //    from p in db.Produtos
            //    where  p.DoutorProdutos.Any(dp => dp.Doutor.IdTerritorio == territorio.Id)
            //    select p;

            IQueryable<Produto> produtosQuery = null;

            var retornaProdutoTeste = false;
            var retornaProdutosPendentes = false;

            if (territorio != null)
            {
                //TERRITORIO

                if (returnAllProducts)
                {
                    if (territorio.TerritorioLinhas.Count() > 0)
                    {
                        produtosQuery = db.Produtos.Where(p => territorio.TerritorioLinhas.Select(tl => tl.IdLinha).Contains(p.IdLinha));
                    }
                    else {
                        produtosQuery = db.Produtos.Where(p => p.IdLinha == territorio.IdLinha);
                    }
                }
                else {
                    //procura os produtos do territorio
                    produtosQuery =
                        from p in db.Produtos
                        where p.DoutorProdutos.Any(dp => dp.Doutor.ProdutoLinha.Id == territorio.ProdutoLinha.Id)
                        select p;
                }

            }
            else if (linha != null) {

                //LINHA

                if (returnAllProducts)
                {
                    produtosQuery = db.Produtos;
                }
                else
                {
                    //procura os produtos da linha
                    produtosQuery =
                        from p in db.Produtos
                        where p.DoutorProdutos.Any(dp => dp.Doutor.ProdutoLinha.Id == linha.Id)
                        select p;
                }
            }
            else
            {

                if (usuario.IsAdministrador())
                {
                    produtosQuery = db.Produtos;
                }
                else {

                    //territorio na verdade é uma agencia ou gerente (sim, POG)
                    produtosQuery =
                        from p in db.Produtos
                        where p.UsuarioProdutos.Any(up => up.IdUsuario == usuario.Id)
                        select p;

                }

                retornaProdutoTeste = true;

                if (usuario.IsGerente())
                {
                    retornaProdutosPendentes = true;
                }

            }

            List<Presentation> presentations = new List<Presentation>();

            //se for gerente Nacional Distrital ou Regional, n exibe nada e vai para o final
            if (usuario!= null && (usuario.IsGerenteNacional() || usuario.IsGerenteDistrital() || usuario.IsGerenteRegional()))
            {
                goto final;
            }

            foreach (var produtoDB in produtosQuery)
            {

                List<ProdutoVa> vas = new List<ProdutoVa>();

                var vasAtivos = produtoDB.GetVAsAtivos();

                foreach (var vaAtivo in vasAtivos)
                {
                    vas.Add(vaAtivo);
                }

                if (retornaProdutoTeste)
                {
                    var vasTeste = produtoDB.GetVAsTeste();

                    foreach (var vaTeste in vasTeste) {
                        vas.Add(vaTeste);
                    }
                }

                if (retornaProdutosPendentes)
                {
                    var vasPendentes = produtoDB.GetVAsPendentes();

                    foreach (var vaPendente in vasPendentes)
                    {
                        vas.Add(vaPendente);
                    }
                }

                foreach (var va in vas)
                {

                    if (va != null)
                    {

                        Presentation presentation = new Presentation();

                        presentation.PreencherByVA(va, territorio, usuario, linha);

                        presentations.Add(presentation);

                    }

                }

            }

            final:

            return new Answer(Answer.EnumStatus.Ok, String.Empty, presentations);
        }
Ejemplo n.º 2
0
        public Answer UpdatePresentationStatus(string territory, string password, int idPresentation, int status)
        {
            var usuario = GetUsuarioByTerritorioSimulado(territory, password);

            if (usuario == null)
                return new Answer(Answer.EnumStatus.ErroLogin, "Login e/ou senha inválido(s)");

            Sessao.Site.Logar(usuario);

            ProdutoVaRepository vaRepository = new ProdutoVaRepository();

            var va = vaRepository.GetProdutoVa(idPresentation);

            if(va == null)
                return new Answer(Answer.EnumStatus.Erro, "VA inválido");

            if (!va.ValidoParaEdicao())
                return new Answer(Answer.EnumStatus.Erro, "VA inválido para edição");

            switch (status)
            {
                case 1: //aprovar
                    va.Aprovar();
                    vaRepository.Save();
                    break;
                case 2: //reprovar
                    va.Reprovar();
                    vaRepository.Save();
                    break;
                case 3:

                    if (!va.IsAprovado()) {
                        va.Aprovar();
                        vaRepository.Save();
                    }

                    if (va.IsAprovado())
                    {
                        va.Publicar(vaRepository);
                    }

                    break;

                default:
                    break;
            }

            Presentation presentation = new Presentation();

            presentation.PreencherByVA(va,null,usuario,null);

            return new Answer(Answer.EnumStatus.Ok, string.Empty, presentation);
        }