public IEnumerable <DTOProducts> GetProdutsForCatalog(int productType_id, HeatingFloorFilter filter) { string productOptSql = EmbeddedResourceManager.GetString(typeof(ProductsService), DTOPath.DTOProductOptionsSql) + " where p.productType_id = @productType_id"; IEnumerable <DTOProductOptions> productsOptions = database.ExucuteQuery <DTOProductOptions>(productOptSql, new { productType_id }); if (productsOptions != null) { productsOptions = filterService.ApplyHeatingFloorFilter(filter, productsOptions); IEnumerable <string> product_ids = productsOptions.Select(x => x.product_id.ToString()).Distinct(); string productSql = EmbeddedResourceManager.GetString(typeof(ProductsService), DTOPath.DTOProductSql) + " where p.product_id in @product_ids"; IEnumerable <DTOProducts> products = database.ExucuteQuery <DTOProducts>(productSql, new { product_ids }); products = filterService.ApplyManyfacturersFilter(filter.manufacturer.Select(x => x.manufacturer_id).ToArray(), products); return(products); } else { throw new ArgumentNullException(nameof(productsOptions)); } }
public IEnumerable <DTOProductOptions> ApplyHeatingFloorFilter(HeatingFloorFilter _filter, IEnumerable <DTOProductOptions> products) { if (_filter != null) { return(products.Where(x => x.power >= (_filter.power_min ?? decimal.MinValue) && x.power <= (_filter.power_max ?? decimal.MaxValue) && x.price >= (_filter.price_min ?? decimal.MinValue) && x.price <= (_filter.price_max ?? decimal.MaxValue) && x.layingArea >= (_filter.layingArea_min ?? decimal.MinValue) && x.layingArea <= (_filter.layingArea_max ?? decimal.MaxValue))); } return(products); }
public HeatingFloorFilter GetHeatingFloorFilter(int productType_id) { string resultSql = "Embedded.DTO.HeatingFloorFilter.sql"; string sql = EmbeddedResourceManager.GetString(typeof(HeatingFloorFilter), resultSql); SqlMapper.GridReader result = dbConnection.QueryMultiple(sql, new { productType_id }); var minMax = result.Read <(decimal power_min, decimal power_max, decimal price_min, decimal price_max, decimal layingArea_min, decimal layingArea_max)>().FirstOrDefault(); List <Manufacturers> manufacturersList = new List <Manufacturers>(); List <(string man_titile, int man_id)> manufacturers = result.Read <(string man_titile, int man_id)>().ToList(); manufacturers.ForEach(x => { manufacturersList.Add(new Manufacturers { manufacturer_id = x.man_id, manufacturer_name = x.man_titile }); }); HeatingFloorFilter filter = new HeatingFloorFilter() { power_max = minMax.power_max, power_min = minMax.power_min, layingArea_max = minMax.layingArea_max, layingArea_min = minMax.layingArea_min, price_max = minMax.price_max, price_min = minMax.price_min, manufacturer = manufacturersList.ToArray() }; return(filter); }
public IEnumerable <DTOProductOptions> GetProductOptionFiltred(int product_id, HeatingFloorFilter filter) { string sql = EmbeddedResourceManager.GetString(typeof(ProductsService), DTOPath.DTOProductOptionsSql) + " where po.product_id = @product_id"; IEnumerable <DTOProductOptions> productOptionList = database.ExucuteQuery <DTOProductOptions>(sql, new { product_id }); productOptionList = filterService.ApplyHeatingFloorFilter(filter, productOptionList); return(productOptionList); }
public IEnumerable <DTOProducts> GetProdutsForCatalog([FromBody] HeatingFloorFilter filter, int productType_id) { return(heatingFloorService.GetProdutsForCatalog(productType_id, filter)); }
public IEnumerable <DTOProductOptions> GetHeatingFloorProductOptionFiltred([FromBody] HeatingFloorFilter filter, int product_id) { return(heatingFloorService.GetProductOptionFiltred(product_id, filter)); }