public async Task<IHttpActionResult> GetSelectedCategory(GetSelectedCategoryModel model) { try { var resultOfSearch = GetLotByCategory(model); if (resultOfSearch.Count == 0) return await Task.FromResult(BadRequest("There are no products in this category!")); return await Task.FromResult(Ok(resultOfSearch)); } catch (Exception exception) { return NotFound(); } }
private List<CategoryApiModel> GetLotByCategory(GetSelectedCategoryModel model) { List<Categories> categoriesList; using (BaseModelRepository<Categories> categoryRepository = new BaseModelRepository<Categories>(new AuctionDb())) { categoriesList = categoryRepository.GetAll().Where(filter => filter.CategoryName == model.CategoryName).ToList(); using ( BaseModelRepository<LotDetailsModel> lotDetailsRepository = new BaseModelRepository<LotDetailsModel>(new AuctionDb())) { var lots = lotDetailsRepository.GetAll().ToList(); var models = new List<CategoryApiModel>(); foreach (var lotDetailsModel in lots) { foreach (var category in categoriesList) { //var lotDetailsModel = lot; //var categoryModel = category; //models.AddRange(from subCategory in category.SubCategoryId // where subCategory.SubCategoryName == model.SubCategoryName // select lot.LotId.Select(lotModel => lotModel).Where(subLotFilter => subLotFilter.Id == lot.Id).ToList() // into subQuery // select subQuery.ToList().Select(subLot => new LotApiModel() // { // Name = subLot.Name // }).ToList() // into lotsApi // select new LotDetailsApiModel() // { // Address = lotDetailsModel.Adress, // Description = lotDetailsModel.Description, // Price = lotDetailsModel.Price, // Lots = lotsApi // } // into lotDeatailsApi // select new CategoryApiModel() // { // CategoryName = categoryModel.CategoryName, // LotDetailsApiModelsApiModels = lotDeatailsApi // }); if (category.Id == lotDetailsModel.CategoryId.Id) { models.Add(new CategoryApiModel() { CategoryName = category.CategoryName, LotDetailsApiModelsApiModels = new LotDetailsApiModel() { Id = lotDetailsModel.Id, Address = lotDetailsModel.Adress, Description = lotDetailsModel.Description, Price = lotDetailsModel.Price, //Lots = new List<LotApiModel>() //{ // new LotApiModel() // { // Name = lot.LotId.FirstOrDefault(elem => elem.LotDetailsId == lot).Name // } //} } }); } } } return models; } } }