Esempio n. 1
0
        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));
        }