Exemplo n.º 1
0
        public async Task <IEnumerable <CampanhaProdutoFase> > GetAllAndNextProductsByCampaignFaseAsync(int campanhaId, int campanhaFaseId, string carteira, FaixaMeta faixaMeta)
        {
            const string sql = @"SELECT * 
                                FROM CPR_CAMPANHA_PRODUTO_FASE PF (NOLOCK)
                                INNER JOIN CPR_CAMPANHA_FASE (NOLOCK) CF ON PF.CPR_CAMPANHA_FASE_ID = CF.CPR_CAMPANHA_FASE_ID
                                INNER JOIN CPR_CAMPANHA_PRODUTO CP (NOLOCK) ON PF.CPR_CAMPANHA_PRODUTO_ID = CP.CPR_CAMPANHA_PRODUTO_ID
                                INNER JOIN WMS_PRODUTO P (NOLOCK) ON CP.WMS_PRODUTO_ID = P.PRODUTO_ID
                                INNER JOIN CPR_CAMPANHA C (NOLOCK) ON CF.CPR_CAMPANHA_ID = C.CPR_CAMPANHA_ID
                                WHERE 
                                    PF.CPR_CAMPANHA_FASE_ID = @campanhaFaseId
                                    AND C.CPR_CAMPANHA_ID = @campanhaId
	                                AND GETDATE() BETWEEN C.DT_INICIO AND C.DT_FIM
	                                AND C.ATIVO  = 1
                                    AND PF.CARTEIRA = @carteira
                                    AND PF.FAIXA_META = @faixaMeta
                                    AND (PF.VOLTAGEM IS NULL OR EXISTS(SELECT TOP 1 1 FROM WMS_PRODUTO_EQUIVALENCIA EQ WHERE  P.PRODUTO_ID = EQ.PRODUTO_ID_EQUIVALENTE AND EQ.PRODUTO_ID_PRINCIPAL = P.PRODUTO_ID))
                                ORDER BY PF.PERIODO, P.NOME;";
            var          p   =
                new
            {
                campanhaFaseId,
                campanhaId,
                carteira = new DbString()
                {
                    Value = carteira, Length = 80, IsAnsi = true
                },
                faixaMeta = new DbString()
                {
                    Value = faixaMeta.ToString(), Length = 80, IsAnsi = true
                }
            };

            return(await this.Connection.SqlConnection.QueryAsync <CampanhaProdutoFase, CampanhaFase, CampanhaProduto, Produto, Campanha, CampanhaProdutoFase>(sql, map :
                                                                                                                                                               (produtoFase, fase, campanhaProduto, produto, campanha) =>
            {
                campanhaProduto.Produto = produto;
                produtoFase.CampanhaFase = fase;
                produtoFase.CampanhaFase.Campanha = campanha;
                produtoFase.CampanhaProduto = campanhaProduto;
                return produtoFase;
            },
                                                                                                                                                               splitOn : "CPR_CAMPANHA_PRODUTO_FASE_ID,CPR_CAMPANHA_FASE_ID,CPR_CAMPANHA_PRODUTO_ID,PRODUTO_ID,CPR_CAMPANHA_ID",
                                                                                                                                                               param : p));
        }
Exemplo n.º 2
0
        public async Task <IEnumerable <CampanhaProdutoFase> > GetAllVoltsAsync(int campanhaId, string carteira, int produtoId, int campanhaFaseId, FaixaMeta faixaMeta)
        {
            const string sql = @"SELECT 
                                        * 
                                 FROM CPR_CAMPANHA_PRODUTO_FASE PF (NOLOCK)
                                    INNER JOIN CPR_CAMPANHA_FASE (NOLOCK) CF ON PF.CPR_CAMPANHA_FASE_ID = CF.CPR_CAMPANHA_FASE_ID
                                    INNER JOIN CPR_CAMPANHA_PRODUTO CP (NOLOCK) ON PF.CPR_CAMPANHA_PRODUTO_ID = CP.CPR_CAMPANHA_PRODUTO_ID
                                    INNER JOIN WMS_PRODUTO P (NOLOCK) ON CP.WMS_PRODUTO_ID = P.PRODUTO_ID
								    INNER JOIN WMS_PRODUTO_EQUIVALENCIA (NOLOCK) EQ ON  P.PRODUTO_ID IN (EQ.PRODUTO_ID_PRINCIPAL,EQ.PRODUTO_ID_EQUIVALENTE) AND EQ.PRODUTO_ID_PRINCIPAL <> EQ.PRODUTO_ID_EQUIVALENTE
								 WHERE 
                                      CF.CPR_CAMPANHA_ID = @campanhaId  
                                      AND PF.CPR_CAMPANHA_FASE_ID = @campanhaFaseId
                                      AND EQ.PRODUTO_ID_PRINCIPAL = @produtoId 
                                      AND PF.FAIXA_META = @faixaMeta
                                      AND PF.CARTEIRA = @carteira  
                                      AND PF.VOLTAGEM IS NOT NULL  
                                      AND NOT EXISTS (SELECT TOP 1 1  FROM CPR_CAMPANHA_PRODUTO_FASE (NOLOCK) A 
													                  INNER JOIN CPR_CAMPANHA_FASE (NOLOCK) B ON A.CPR_CAMPANHA_FASE_ID = B.CPR_CAMPANHA_FASE_ID
													                  WHERE 
                                                                            A.CPR_CAMPANHA_PRODUTO_ID = PF.CPR_CAMPANHA_PRODUTO_ID    
                                                                            AND B.CPR_CAMPANHA_ID = CF.CPR_CAMPANHA_ID  
                                                                            AND B.CPR_CAMPANHA_FASE_ID = PF.CPR_CAMPANHA_FASE_ID
                                                                            AND A.FAIXA_META = PF.FAIXA_META 
																		    AND A.CATALOGO = PF.CATALOGO 
																		    AND A.CARTEIRA = PF.CARTEIRA
																		    AND A.VOLTAGEM <> PF.VOLTAGEM  );"                                                                        ;
            var          p   =
                new
            {
                campanhaId,
                campanhaFaseId,
                produtoId,
                carteira = new DbString()
                {
                    Value = faixaMeta.ToString(), Length = 60, IsAnsi = true
                },
                faixaMeta = new DbString()
                {
                    Value = faixaMeta.ToString(), Length = 80, IsAnsi = true
                }
            };

            return(await this.Connection.SqlConnection.QueryAsync <CampanhaProdutoFase, CampanhaFase, CampanhaProduto, Produto, CampanhaProdutoFase>(sql, map :
                                                                                                                                                     (produtoFase, fase, campanhaProduto, produto) =>
            {
                campanhaProduto.Produto = produto;
                produtoFase.CampanhaFase = fase;
                produtoFase.CampanhaProduto = campanhaProduto;
                return produtoFase;
            },
                                                                                                                                                     splitOn : "CPR_CAMPANHA_PRODUTO_FASE_ID,CPR_CAMPANHA_FASE_ID,CPR_CAMPANHA_PRODUTO_ID,PRODUTO_ID",
                                                                                                                                                     param : p));
        }