Ejemplo n.º 1
0
        public IHttpActionResult Unsold(decimal?minPrice = null, decimal?maxPrice = null, int?minYear = null, int?maxYear = null, string makeModelOrYear = null)
        {
            IVehicleDetailRepository repo = VehicleDetailRepositoryFactory.GetRepository();

            try
            {
                VehicleSearchParametersModel parameters = new VehicleSearchParametersModel()
                {
                    MinPrice        = minPrice,
                    MaxPrice        = maxPrice,
                    MinYear         = minYear,
                    MaxYear         = maxYear,
                    MakeModelOrYear = makeModelOrYear
                };

                var result = repo.SearchUnsold(parameters);
                return(Ok(result));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public IEnumerable <VehicleDetailModel> SearchNew(VehicleSearchParametersModel parameters)
        {
            IEnumerable <VehicleDetailModel> vehicles = _vehicles.FindAll(v => v.New.Equals(true) && v.Sold.Equals(false));
            IEnumerable <VehicleDetailModel> minPriceVehicles;
            IEnumerable <VehicleDetailModel> maxPriceVehicles;
            IEnumerable <VehicleDetailModel> minYearVehicles;
            IEnumerable <VehicleDetailModel> maxYearVehicles;
            IEnumerable <VehicleDetailModel> makeModelOrYearVehicles;
            IEnumerable <VehicleDetailModel> searchResults;

            if (parameters.MinPrice.HasValue)
            {
                decimal minPrice = parameters.MinPrice ?? 0;
                minPriceVehicles = from v in vehicles
                                   where Decimal.Round(minPrice, 2) <= Decimal.Round(parameters.MinPrice.Value)
                                   select v;
            }
            else
            {
                minPriceVehicles = vehicles;
            };

            if (parameters.MaxPrice.HasValue)
            {
                decimal maxPrice = parameters.MaxPrice ?? 0;
                maxPriceVehicles = from v in minPriceVehicles
                                   where Decimal.Round(maxPrice, 2) >= Decimal.Round(parameters.MaxPrice.Value)
                                   select v;
            }
            else
            {
                maxPriceVehicles = minPriceVehicles;
            };

            if (parameters.MinYear.HasValue)
            {
                minYearVehicles = from v in maxPriceVehicles
                                  where v.Year >= parameters.MinYear
                                  select v;
            }
            else
            {
                minYearVehicles = maxPriceVehicles;
            };

            if (parameters.MaxYear.HasValue)
            {
                maxYearVehicles = from v in minYearVehicles
                                  where v.Year <= parameters.MaxYear
                                  select v;
            }
            else
            {
                maxYearVehicles = minYearVehicles;
            };

            if (!string.IsNullOrEmpty(parameters.MakeModelOrYear))
            {
                bool successfullyParsed = int.TryParse(parameters.MakeModelOrYear, out int year);

                if (successfullyParsed)
                {
                    makeModelOrYearVehicles = from v in maxYearVehicles
                                              where v.Year == year
                                              select v;

                    searchResults = makeModelOrYearVehicles;
                }
                else
                {
                    searchResults = maxYearVehicles;
                };
            }
            else
            {
                searchResults = maxYearVehicles;
            };


            List <VehicleDetailModel> sortedResults = searchResults.OrderBy(v => v.MSRP).Take(20).ToList();

            return(sortedResults);
        }
        public IEnumerable <VehicleDetailModel> SearchUnsold(VehicleSearchParametersModel parameters)
        {
            List <VehicleDetailModel> _vehicles = new List <VehicleDetailModel>();

            using (var conn = new SqlConnection())
            {
                conn.ConnectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString();
                string query = "SELECT TOP 20  v.VehicleID, Make, Model, Year, Mileage, VIN, IntC.Color as IntColor, ExtC.Color as ExtColor, MSRP, SalePrice, Featured, Description, Sold, New, Type, BodyStyle, Image FROM Vehicle v " +
                               " JOIN Make mk on v.MakeID = mk.MakeID" +
                               " JOIN Model ml on v.ModelID = ml.ModelID" +
                               " JOIN Color intC on v.IntColorID = intC.ColorID JOIN Color extC on v.ExtColorID = extC.ColorID" +
                               " JOIN TransmissionType t on v.TransTypeID = t.TransTypeID" +
                               " JOIN BodyStyle b on v.BodyStyleID = b.BodyStyleID" +
                               " WHERE Sold = 0";
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;

                if (parameters.MinPrice.HasValue)
                {
                    query += "AND SalePrice >= @MinPrice ";
                    cmd.Parameters.AddWithValue("@MinPrice", parameters.MinPrice.Value);
                }

                if (parameters.MaxPrice.HasValue)
                {
                    query += "AND SalePrice <= @MaxPrice ";
                    cmd.Parameters.AddWithValue("@MaxPrice", parameters.MaxPrice.Value);
                }
                if (parameters.MinYear.HasValue)
                {
                    query += "AND Year >= @MinYear ";
                    cmd.Parameters.AddWithValue("@MinYear", parameters.MinYear.Value);
                }

                if (parameters.MaxYear.HasValue)
                {
                    query += "AND Year <= @MaxYear ";
                    cmd.Parameters.AddWithValue("@MaxYear", parameters.MaxYear.Value);
                }
                if (!string.IsNullOrEmpty(parameters.MakeModelOrYear))
                {
                    query += "AND (Year LIKE @MakeModelOrYear OR Make LIKE @MakeModelOrYear OR Model LIKE @MakeModelOrYear)";
                    cmd.Parameters.AddWithValue("@MakeModelOrYear", parameters.MakeModelOrYear);
                }
                query          += "ORDER BY MSRP DESC";
                cmd.CommandText = query;

                conn.Open();

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        VehicleDetailModel row = new VehicleDetailModel();
                        row.VehicleID = (int)reader["VehicleID"];
                        row.MakeName  = reader["Make"].ToString();
                        row.ModelName = reader["Model"].ToString();
                        row.Year      = (int)reader["Year"];
                        row.Mileage   = (int)reader["Mileage"];
                        row.VIN       = reader["VIN"].ToString();
                        row.IntColor  = reader["IntColor"].ToString();
                        row.ExtColor  = reader["ExtColor"].ToString();
                        row.MSRP      = (decimal)reader["MSRP"];
                        row.Price     = (decimal)reader["SalePrice"];
                        row.Featured  = (bool)reader["Featured"];
                        row.Sold      = (bool)reader["Sold"];
                        row.New       = (bool)reader["New"];
                        row.TransType = reader["Type"].ToString();
                        row.BodyStyle = reader["BodyStyle"].ToString();
                        row.Image     = reader["Image"].ToString();

                        _vehicles.Add(row);
                    }
                }
            }
            return(_vehicles);
        }