private string BuildAdvancedFilter(CompraPaginationQuery filter) { var sql = ""; if (!string.IsNullOrEmpty(filter.Modelo)) { sql += " AND compras.modelo = @Modelo"; } if (!string.IsNullOrEmpty(filter.Serie)) { sql += " AND compras.Serie = @Serie"; } if (!string.IsNullOrEmpty(filter.Numero)) { sql += " AND compras.Numero = @Numero"; } if (filter.FornecedorId != null) { sql += " AND compras.FornecedorId = @FornecedorId"; } if (filter.DataCompraInicio != null) { sql += $" AND to_char(compras.dataemissao, 'YYYY/MM/DD') >= '{filter.DataCompraInicio?.ToString("yyyy/MM/dd")}' "; } if (filter.DataCompraFim != null) { sql += $" AND to_char(compras.dataemissao, 'YYYY/MM/DD') <= '{filter.DataCompraFim?.ToString("yyyy/MM/dd")}' "; } if (filter.ProdutosId?.Count > 0) { sql += $" AND EXISTS(SELECT 1 FROM compraprodutos " + $" WHERE compraprodutos.numero = compras.numero AND compraprodutos.modelo = compras.modelo " + $" AND compraprodutos.serie = compras.serie AND compraprodutos.fornecedorid = compras.fornecedorid " + $" AND compraprodutos.produtoid IN ({filter.ProdutosId.Aggregate("", (e, a) => $"{e} {a},")}{filter.ProdutosId.FirstOrDefault()}) LIMIT 1) "; } return(sql); }
public IActionResult GetListPagined(CompraPaginationQuery filter) { return(Ok(this.CompraService.GetPagined(filter))); }
private string BuildGenericsFilter(CompraPaginationQuery filter) { var sql = ""; string AddCondition(string condition) { if (sql.Length == 0) { return(condition); } return($" {sql} OR {condition} "); } if (filter.Situacao?.Count > 0) { if (filter.Situacao.Contains(SituacaoCompraType.ATIVAS)) { sql = AddCondition("compras.datacancelamento is NULL"); } if (filter.Situacao.Contains(SituacaoCompraType.CANCELADA)) { sql = AddCondition("compras.datacancelamento is NOT NULL"); } if (filter.Situacao.Contains(SituacaoCompraType.CANCELADA_RECENTEMENTE)) { sql = AddCondition($"to_char(compras.datacancelamento, 'DD/MM/YYYY') > '{DateTime.Now.AddDays(-8).ToString("dd/MM/yyyy")}'"); } if (filter.Situacao.Contains(SituacaoCompraType.LANCADA_RECENTEMENTE)) { sql = AddCondition($"to_char(compras.dataemissao" + $", 'DD/MM/YYYY') > '{DateTime.Now.AddDays(-8).ToString("dd/MM/yyyy")}'"); } sql = $" AND ({sql}) "; } else { sql = $" AND (compras.datacancelamento is NULL) "; } if (!string.IsNullOrEmpty(filter.Filter)) { if (DateTime.TryParse(filter.Filter, new CultureInfo("pt-BR"), DateTimeStyles.None, out var data)) { return(sql + $"AND (to_char(compras.dataemissao, 'DD/MM/YYYY') = '{data.ToString("dd/MM/yyyy")}' OR to_char(compras.datachegada, 'DD/MM/YYYY') = '{data.ToString("dd/MM/yyyy")}')"); } var sqlFornecedor = ""; if (int.TryParse(filter.Filter, out var fornecedorId)) { sqlFornecedor = $" OR compras.fornecedorid = {fornecedorId}"; } return(sql + $"AND (compras.numero = @Filter OR compras.modelo = @Filter OR compras.serie = @Filter {sqlFornecedor}) "); } return(sql); }