public IQueryable <Telephone> GetTelephones(SmartphoneSearchModell model) { var result = db.Telephones.AsQueryable(); if (model.MakeId.HasValue) { result = result.Where(e => e.Make.MakeId == model.MakeId).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.ModelId != 0 && model.ModelId.HasValue) { result = result.Where(e => e.Model.ModelId == model.ModelId).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.MemoryAreChecked != null && model.RamAreChecked != null) { result = result.Where(e => model.MemoryAreChecked.Contains(e.BuiltInMemory) && model.RamAreChecked.Contains(e.RAM)).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } else if (model.RamAreChecked != null) { result = result.Where(e => model.RamAreChecked.Contains(e.RAM)).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } else if (model.MemoryAreChecked != null) { result = result.Where(e => model.MemoryAreChecked.Contains(e.BuiltInMemory)).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.PriceFrom.HasValue) { result = result.Where(e => e.Price >= model.PriceFrom).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.SizeDisplayFrom.HasValue) { result = result.Where(e => e.SizeInInches >= model.SizeDisplayFrom).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.SizeDisplayTo.HasValue) { result = result.Where(e => e.SizeInInches <= model.SizeDisplayTo).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.BatteryCapacitetyFrom.HasValue) { result = result.Where(e => e.CapacityOfBattery >= model.BatteryCapacitetyFrom).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.BatteryCapacitetyTo.HasValue) { result = result.Where(e => e.CapacityOfBattery <= model.BatteryCapacitetyTo).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.BackCameraMpFrom.HasValue) { result = result.Where(e => e.BackCamera >= model.BackCameraMpFrom).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.BackCameraMpTo.HasValue) { result = result.Where(e => e.BackCamera <= model.BackCameraMpTo).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (model.PriceTo.HasValue) { result = result.Where(e => e.Price <= model.PriceTo).Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } if (!(model.PriceFrom.HasValue) && !(model.PriceTo.HasValue) && !(model.MakeId.HasValue) && model.RamAreChecked == null && model.MemoryAreChecked == null && !(model.BackCameraMpFrom.HasValue) && !(model.BackCameraMpTo.HasValue) && !(model.BatteryCapacitetyFrom.HasValue) && !(model.BatteryCapacitetyTo.HasValue) && !(model.SizeDisplayFrom.HasValue) && !(model.SizeDisplayTo.HasValue)) { result = result.Select(e => new Telephone { Id = e.Id, NameOfAdvertisement = e.NameOfAdvertisement, Price = e.Price, Model = e.Model, Make = e.Make }); } return(result); }
public IActionResult Search(SmartphoneSearchModell model) { var telephone = service.GetTelephones(model); return(View("Result", telephone)); }