示例#1
0
        public DetalhesProdutoDto ObterProdutoPorCodigo(string codigo, string corCodigo, string tamanho)
        {
            var query = from p in _context.QuironProdutos
                        join c in _context.Cores on p.CorCodigo equals c.CorCodigo
                        join t in _context.Tamanhos on p.TamanhoCodigo equals t.TamanhoCodigo
                        join e in _context.Estoque on p.ProdutoCodigo equals e.ProdutoCodigo
                        where p.ProdutoModeloCodigo == codigo && e.Quantidade > 0
                        select new
            {
                p.ProdutoModeloCodigo,
                p.ProdutoCodigo,
                p.ProdutoDescricao,
                p.ProdutoDescricaoResumida,
                p.MarcaDescricao,
                p.ModeloDescricao,
                c.CorCodigo,
                c.CorDescricao,
                t.TamanhoCodigo,
                t.TamanhoDescricaoResumida,
                e.Quantidade,
                p.Preco
            };

            var cores = (from q in query
                         select new
            {
                q.CorCodigo,
                q.CorDescricao,
            }).Distinct();

            var cor = cores.First();


            var tamanhos = (from q in query
                            join c in cores on q.CorCodigo equals c.CorCodigo
                            where q.CorCodigo == cor.CorCodigo
                            select new
            {
                q.TamanhoCodigo,
                q.TamanhoDescricaoResumida
            });


            var produto = (from q in query where q.CorCodigo == corCodigo && q.TamanhoCodigo == tamanho select q).First();



            DetalhesProdutoDto dto = new DetalhesProdutoDto
            {
                Produto  = Mapper.DynamicMap <QuironProduto>(produto),
                Cores    = cores.Select(Mapper.DynamicMap <Cor>),
                Tamanhos = tamanhos.Select(Mapper.DynamicMap <Tamanho>)
            };

            return(dto);
        }
        public DetalhesProdutoDto ObterProdutoModelo(string codigo, string corCodigo)
        {
            var query = from p in _context.QuironProdutos
                        join c in _context.Cores on p.CorCodigo equals c.CorCodigo
                        join t in _context.Tamanhos on p.TamanhoCodigo equals t.TamanhoCodigo
                        join e in _context.Estoque on p.ProdutoCodigo equals e.ProdutoCodigo
                        where p.ProdutoModeloCodigo == codigo && e.Quantidade > 0
                        select new
            {
                p.ProdutoModeloCodigo,
                p.ProdutoCodigo,
                p.ProdutoDescricao,
                p.ProdutoDescricaoResumida,
                p.MarcaDescricao,
                p.ModeloDescricao,
                c.CorCodigo,
                c.CorDescricao,
                t.TamanhoCodigo,
                t.TamanhoDescricaoResumida,
                e.Quantidade,
                p.Preco
            };

            var cores = (from q in query
                         select new
            {
                q.CorCodigo,
                q.CorDescricao,
            }).Distinct();

            var cor = cores.First();


            var tamanhos = (from q in query
                            join c in cores on q.CorCodigo equals c.CorCodigo
                            where q.CorCodigo == cor.CorCodigo
                            select new
            {
                q.TamanhoCodigo,
                q.TamanhoDescricaoResumida
            });


            var produto = (from q in query where q.CorCodigo == corCodigo select q).First();

            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMissingTypeMaps = true;
                cfg.CreateMap <QuironProduto, Produto>().ReverseMap();
            });

            var mapper = config.CreateMapper();

            DetalhesProdutoDto dto = new DetalhesProdutoDto
            {
                Produto  = mapper.Map <QuironProduto>(produto),
                Cores    = cores.Select(Mapper.Map <Cor>),
                Tamanhos = tamanhos.Select(Mapper.Map <Tamanho>)
            };

            return(dto);
        }