public static string GetCacheKey <TResponse>(this QueriesQuery <TResponse> query)
        {
            var properties = query.GetType()
                             .GetProperties(BindingFlags.Instance | BindingFlags.Public)
                             .Select(x =>
            {
                var val = x.GetValue(query);
                if (val == null)
                {
                    return(null);
                }
                return(x.Name + ":" + val.ToString());
            }).Where(x => x != null);

            return("urn:{0}:{1}".Fmt(query.GetType().FullName, properties.Join(":")));
        }
Exemple #2
0
        private static void ProcessQuery(QueriesQuery query)
        {
            var db = new CarsSystemDbContext();

            var carsQuery = db.Cars.AsQueryable();

            foreach (var whereClauses in query.WhereClauses)
            {
                switch (whereClauses.PropertyName)
                {
                case "Year":
                    switch (whereClauses.Type)
                    {
                    case "Equals":
                        carsQuery = carsQuery.Where(c => c.Id == int.Parse(whereClauses.Value)); break;

                    case "GreaterThan":
                        carsQuery = carsQuery.Where(c => c.Id > int.Parse(whereClauses.Value)); break;

                    case "LessThan":
                        carsQuery = carsQuery.Where(c => c.Id < int.Parse(whereClauses.Value)); break;
                    }
                    break;

                case "Model":
                    break;

                case "Price":
                    break;

                case "Manufacturer":
                    break;

                case "Dealer":
                    break;

                default: break;
                }
            }

            switch (query.OrderBy)
            {
            case "Year":
                carsQuery = carsQuery.OrderBy(c => c.Year);
                break;

            case "Model":
                carsQuery = carsQuery.OrderBy(c => c.Model);
                break;

            case "Price":
                carsQuery = carsQuery.OrderBy(c => c.Price);
                break;

            case "Manufacturer":
                carsQuery = carsQuery.OrderBy(c => c.Manufacturer.Name);
                break;

            case "Dealer":
                carsQuery = carsQuery.OrderBy(c => c.Dealer.Name);
                break;

            default: break;
            }
        }
Exemple #3
0
        private static List <CarOutputXmlModel> ProcessQuery(QueriesQuery query, CarSystemDbContext db)
        {
            //  var db = new CarsDbContext();
            var dataQuery =
                db.Cars.Select(
                    car =>
                    new CarOutputXmlModel
            {
                Id               = car.Id,
                Manufacturer     = car.Manufacturer.Name,
                Model            = car.Model,
                Price            = car.Price,
                Year             = car.Year,
                TransmissionType =
                    car.Transmitiontype == Models.TransmitionType.Manual ? "manual" : "automatic",
                Dealer =
                    new DealerXmlModel
                {
                    Name   = car.Dealer.Name,
                    Cities = car.Dealer.Cities.Select(city => city.Name).ToList(),
                }
            });

            switch (query.OrderBy)
            {
            case "Id":
                dataQuery = dataQuery.OrderBy(x => x.Id);
                break;

            case "Year":
                dataQuery = dataQuery.OrderBy(x => x.Year);
                break;

            case "Model":
                dataQuery = dataQuery.OrderBy(x => x.Model);
                break;

            case "Price":
                dataQuery = dataQuery.OrderBy(x => x.Price);
                break;

            case "Manufacturer":
                dataQuery = dataQuery.OrderBy(x => x.Manufacturer);
                break;

            case "Dealer":
                dataQuery = dataQuery.OrderBy(x => x.Dealer.Name);
                break;
            }

            foreach (var whereClause in query.WhereClauses)
            {
                if (whereClause.PropertyName == "Id")
                {
                    var constant = int.Parse(whereClause.Value);
                    switch (whereClause.Type)
                    {
                    case Equal:
                        dataQuery = dataQuery.Where(x => x.Id == constant);
                        break;

                    case GreaterThan:
                        dataQuery = dataQuery.Where(x => x.Id > constant);
                        break;

                    case LessThan:
                        dataQuery = dataQuery.Where(x => x.Id < constant);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                else if (whereClause.PropertyName == "Year")
                {
                    var constant = int.Parse(whereClause.Value);
                    switch (whereClause.Type)
                    {
                    case Equal:
                        dataQuery = dataQuery.Where(x => x.Year == constant);
                        break;

                    case GreaterThan:
                        dataQuery = dataQuery.Where(x => x.Year > constant);
                        break;

                    case LessThan:
                        dataQuery = dataQuery.Where(x => x.Year < constant);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                else if (whereClause.PropertyName == "Price")
                {
                    var constant = decimal.Parse(whereClause.Value);
                    switch (whereClause.Type)
                    {
                    case Equal:
                        dataQuery = dataQuery.Where(x => x.Price == constant);
                        break;

                    case GreaterThan:
                        dataQuery = dataQuery.Where(x => x.Price > constant);
                        break;

                    case LessThan:
                        dataQuery = dataQuery.Where(x => x.Price < constant);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                else if (whereClause.PropertyName == "Model")
                {
                    switch (whereClause.Type)
                    {
                    case Equal:
                        dataQuery = dataQuery.Where(x => x.Model == whereClause.Value);
                        break;

                    case Contains:
                        dataQuery = dataQuery.Where(x => x.Model.Contains(whereClause.Value));
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                else if (whereClause.PropertyName == "Manufacturer")
                {
                    switch (whereClause.Type)
                    {
                    case Equal:
                        dataQuery = dataQuery.Where(x => x.Manufacturer == whereClause.Value);
                        break;

                    case Contains:
                        dataQuery = dataQuery.Where(x => x.Manufacturer.Contains(whereClause.Value));
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                else if (whereClause.PropertyName == "Dealer")
                {
                    switch (whereClause.Type)
                    {
                    case Equal:
                        dataQuery = dataQuery.Where(x => x.Dealer.Name == whereClause.Value);
                        break;

                    case Contains:
                        dataQuery = dataQuery.Where(x => x.Dealer.Name.Contains(whereClause.Value));
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                else if (whereClause.PropertyName == "City")
                {
                    switch (whereClause.Type)
                    {
                    case Equal:
                        dataQuery = dataQuery.Where(x => x.Dealer.Cities.Contains(whereClause.Value));
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }

            var data = dataQuery.ToList();

            return(data);

            //var serializer = new XmlSerializer(data.GetType(), new XmlRootAttribute("Cars"));
            //using (var fs = new FileStream(query.OutputFileName, FileMode.Create))
            //{
            //    serializer.Serialize(fs, data);
            //}
            //System.Console.WriteLine();
            //System.Console.WriteLine("{0} ready.", query.OutputFileName);
        }
        private static void ProcessQuery(QueriesQuery query)
        {
            var db = new CarsDbContext();

            var carsQuery = db.Cars.AsQueryable();

            foreach (var whereClause in query.WhereClauses)
            {
                switch (whereClause.PropertyName)
                {
                    case "Id":
                        switch (whereClause.Type)
                        {
                            case "Equals":
                                carsQuery = carsQuery.Where(c => c.Id == int.Parse(whereClause.Value));
                                break;
                            case "GreaterThan":
                                carsQuery = carsQuery.Where(c => c.Id > int.Parse(whereClause.Value));
                                break;
                            case "LessThan":
                                carsQuery = carsQuery.Where(c => c.Id < int.Parse(whereClause.Value));
                                break;
                            default:
                                break;
                        }

                        break;
                    case "Year":
                        break;
                    case "Price":
                        break;
                    case "Model":
                        break;
                    case "Manufacturer":
                        break;
                    case "Dealer":
                        break;
                    case "City":
                        break;
                    default:
                        break;
                }

                switch (query.OrderBy)
                {
                    case "Id": carsQuery = carsQuery.OrderBy(c => c.Id);
                        break;
                    case "Year": carsQuery = carsQuery.OrderBy(c => c.Year);
                        break;
                    case "Model": carsQuery = carsQuery.OrderBy(c => c.Model);
                        break;
                    case "Price": carsQuery = carsQuery.OrderBy(c => c.Price);
                        break;
                    case "Manufacturer": carsQuery = carsQuery.OrderBy(c => c.Manufacturer.Name);
                        break;
                    case "Dealer": carsQuery = carsQuery.OrderBy(c => c.Dealer.Name);
                        break;
                    default:
                        break;
                }
            }
        }