Пример #1
0
        public IEnumerable <ListingShortItem> ListingSearch(ListingSearchParameters parameters)
        {
            var listings = new List <ListingShortItem>();

            using (var cxn = new SqlConnection(cxnStr))
            {
                string query   = "select top 12 ListingId, UserId, StateId, City, Rate, ImageFileName from Listings where 1 = 1 ";
                var    dymprms = new DynamicParameters();

                if (parameters.MinRate.HasValue)
                {
                    query += $"and Rate >= @MinRate ";
                    dymprms.Add("@MinRate", parameters.MinRate.Value);
                }
                if (parameters.MaxRate.HasValue)
                {
                    query += $"and Rate <= @MaxRate ";
                    dymprms.Add("@MaxRate", parameters.MaxRate.Value);
                }
                if (!string.IsNullOrEmpty(parameters.City))
                {
                    query += $"and City like @City ";
                    dymprms.Add("@City", parameters.City + "%");
                }
                if (!string.IsNullOrEmpty(parameters.StateId))
                {
                    query += $"and StateId like @StateId ";
                    dymprms.Add("@StateId", parameters.StateId);
                }
                query += "order by CreatedDate desc";

                listings = cxn.Query <ListingShortItem>(query, dymprms, commandType: CommandType.Text).ToList();
            }
            return(listings);
        }
Пример #2
0
        public TResponse <List <Listing> > Search(ListingSearchParameters paramters)
        {
            var response = new TResponse <List <Listing> >();

            if (paramters == null)
            {
                response.Message = "No search parameters were provided";
                response.Success = false;
            }
            else
            {
                response.Payload = Repo.Search(paramters).ToList();

                if (!response.Payload.Any())
                {
                    response.Success = false;
                    response.Message = "Query could not find any results";
                }
                else
                {
                    response.Success = true;
                }
            }

            return(response);
        }
Пример #3
0
        public IHttpActionResult Search(string view, string quickSearch, int?minPrice, int?maxPrice, int?minYear, int?maxYear)
        {
            //check model state befor try
            _listingManager = ListingManagerFactory.Create();

            try
            {
                var parameters = new ListingSearchParameters()
                {
                    View        = view,
                    QuickSearch = quickSearch,
                    MinPrice    = minPrice,
                    MaxPrice    = maxPrice,
                    MinYear     = minYear,
                    MaxYear     = maxYear
                };

                var result = _listingManager.Search(parameters);
                return(Ok(result.Payload));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Пример #4
0
 public IEnumerable <ListingShortItem> ListingSearch(ListingSearchParameters parameters)
 {
     try {
         return(listingsRepo.ListingSearch(parameters));
     }
     catch (Exception ex)
     {
         //log exception
         throw ex;
     }
 }
Пример #5
0
        public void CanGetSearchResults()
        {
            var listingRepo = new VehicleListingRepoQA();
            var parameters  = new ListingSearchParameters()
            {
                VehicleTypeId = 1
            };

            var searchResults = listingRepo.GetSearchResults(parameters);

            Assert.AreEqual(1, searchResults.Count());
        }
Пример #6
0
        public IHttpActionResult Search([FromUri] ListingSearchParameters parameters)
        {
            var repo = GuildRepositoryFactory.GetRepository();

            try
            {
                var result = repo.Search(parameters);
                return(Ok(result));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Пример #7
0
        public IEnumerable <ListingShortItem> ListingSearch(ListingSearchParameters parameters)
        {
            var listings = new List <ListingShortItem>();

            using (var cxn = new SqlConnection(cxnStr))
                using (var cmd = new SqlCommand())
                {
                    cmd.Connection = (SqlConnection)cxn;
                    string query = "select top 12 ListingId, UserId, StateId, City, Rate, ImageFileName from Listings where 1 = 1";

                    if (parameters.MinRate.HasValue)
                    {
                        query += $"and Rate >= @MinRate ";
                        cmd.Parameters.AddWithValue("@MinRate", parameters.MinRate.Value);
                    }
                    if (parameters.MaxRate.HasValue)
                    {
                        query += $"and Rate <= @MaxRate ";
                        cmd.Parameters.AddWithValue("@MaxRate", parameters.MaxRate.Value);
                    }
                    if (!string.IsNullOrEmpty(parameters.City))
                    {
                        query += $"and City like @City ";
                        cmd.Parameters.AddWithValue("@City", parameters.City + '%');
                    }
                    if (!string.IsNullOrEmpty(parameters.StateId))
                    {
                        query += $"and StateId like @StateId ";
                        cmd.Parameters.AddWithValue("@StateId", parameters.StateId);
                    }
                    query          += "order by CreatedDate desc";
                    cmd.CommandText = query;
                    cxn.Open();

                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            listings.Add(PopulateListingShortItemFromDataReader(dr));
                        }
                    }
                }
            return(listings);
        }
Пример #8
0
        public IHttpActionResult Search(decimal?minRate, decimal?maxRate, string city, string stateId)
        {
            try {
                var parameters = new ListingSearchParameters()
                {
                    MinRate = minRate,
                    MaxRate = maxRate,
                    City    = city,
                    StateId = stateId
                };

                var result = _svc.ListingSearch(parameters);
                return(Ok(result));
            }

            catch (Exception ex) {
                return(BadRequest(ex.Message));
            }
        }
Пример #9
0
        public IHttpActionResult SalesSearch(string searchTerm, decimal?minMSRP, decimal?maxMSRP, int?minYear, int?maxYear, int?vehicleTypeId)
        {
            var repo = VehicleListingsFactory.GetRepository();

            try
            {
                var parameters = new ListingSearchParameters()
                {
                    SearchTerm    = searchTerm,
                    MinMSRP       = minMSRP,
                    MaxMSRP       = maxMSRP,
                    MinYear       = minYear,
                    MaxYear       = maxYear,
                    VehicleTypeId = vehicleTypeId
                };

                var result = repo.GetSearchResults(parameters);
                return(Ok(result));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Пример #10
0
        public IEnumerable <ListingSearchItem> GetSearchResults(ListingSearchParameters parameters)
        {
            var listings   = GetAll();
            var makesRepo  = new VehicleMakeRepoQA();
            var modelsRepo = new VehicleModelRepoQA();
            var bodyRepo   = new BodyStyleRepoQA();
            var transRepo  = new TransmissionTypeRepoQA();
            var colorRepo  = new ColorRepoQA();

            var makes  = makesRepo.GetVehicleMakes();
            var models = modelsRepo.GetVehicleModels();
            var styles = bodyRepo.GetAll();
            var trans  = transRepo.GetAll();
            var colors = colorRepo.GetAll();

            var query = from l in listings
                        join ma in makes on l.VehicleMakeId equals ma.VehicleMakeId
                        join mo in models on l.VehicleModelId equals mo.VehicleModelId
                        join s in styles on l.BodyStyleId equals s.BodyStyleId
                        join t in trans on l.TransmissionTypeId equals t.TransmissionTypeId
                        join c in colors on l.ColorId equals c.ColorId
                        join ic in colors on l.InteriorColorId equals ic.ColorId
                        where l.Sold == false
                        orderby l.MSRP descending
                        select new ListingSearchItem
            {
                VehicleListingId     = l.VehicleListingId,
                Year                 = l.Year,
                VehicleMakeId        = l.VehicleMakeId,
                VehicleMakeName      = ma.VehicleMakeName,
                VehicleModelId       = l.VehicleModelId,
                VehicleModelName     = mo.VehicleModelName,
                BodyStyleId          = l.BodyStyleId,
                BodyStyleName        = s.BodyStyleName,
                TransmissionTypeId   = l.TransmissionTypeId,
                TransmissionTypeName = t.TransmissionTypeName,
                SalePrice            = l.SalePrice,
                Mileage              = l.Mileage,
                MSRP                 = l.MSRP,
                InteriorColorId      = l.InteriorColorId,
                InteriorColor        = ic.ColorName,
                ColorId              = l.ColorId,
                Color                = c.ColorName,
                VIN           = l.VIN,
                ImageFileName = l.ImageFileName,
                VehicleTypeId = l.VehicleTypeId
            };

            if (parameters.MinMSRP.HasValue)
            {
                query = query.Where(q => q.MSRP >= parameters.MinMSRP);
            }
            if (parameters.MaxMSRP.HasValue)
            {
                query = query.Where(q => q.MSRP <= parameters.MaxMSRP);
            }
            if (parameters.MinYear.HasValue)
            {
                query = query.Where(q => q.Year >= parameters.MinYear);
            }
            if (parameters.MaxYear.HasValue)
            {
                query = query.Where(q => q.Year <= parameters.MaxYear);
            }
            if (parameters.VehicleTypeId.HasValue)
            {
                query = query.Where(q => q.VehicleTypeId == parameters.VehicleTypeId);
            }
            if (!string.IsNullOrEmpty(parameters.SearchTerm))
            {
                query = query.Where(q => q.VehicleMakeName.Contains(parameters.SearchTerm) || q.VehicleModelName.Contains(parameters.SearchTerm) || q.Year.ToString().Contains(parameters.SearchTerm));
            }


            return(query);
        }
 public IEnumerable <Listing> Search(ListingSearchParameters parameters)
 {
     return(null);
 }
Пример #12
0
        public IEnumerable <ListingShortItem> Search(ListingSearchParameters parameters)
        {
            List <ListingShortItem> listings = new List <ListingShortItem>();

            using (var cn = new SqlConnection(Settings.GetConnectionString()))
            {
                string     query = "SELECT TOP 12 ListingId, UserId, StateId, City, Rate, ImageFileName FROM Listings WHERE 1 = 1 ";
                SqlCommand cmd   = new SqlCommand();
                cmd.Connection = cn;

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

                if (parameters.MaxRate.HasValue)
                {
                    query += "AND Rate <= @MaxRate ";
                    cmd.Parameters.AddWithValue("@MaxRate", parameters.MaxRate.Value);
                }

                if (!string.IsNullOrEmpty(parameters.City))
                {
                    query += "AND City LIKE @City ";
                    cmd.Parameters.AddWithValue("@City", parameters.City + '%');
                }

                if (!string.IsNullOrEmpty(parameters.StateId))
                {
                    query += "AND StateId = @StateId ";
                    cmd.Parameters.AddWithValue("@StateId", parameters.StateId);
                }

                query          += "ORDER BY CreatedDate DESC";
                cmd.CommandText = query;

                cn.Open();

                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        ListingShortItem row = new ListingShortItem();

                        row.ListingId = (int)dr["ListingId"];
                        row.UserId    = dr["UserId"].ToString();
                        row.StateId   = dr["StateId"].ToString();
                        row.City      = dr["City"].ToString();
                        row.Rate      = (decimal)dr["Rate"];

                        if (dr["ImageFileName"] != DBNull.Value)
                        {
                            row.ImageFileName = dr["ImageFileName"].ToString();
                        }

                        listings.Add(row);
                    }
                }
            }

            return(listings);
        }
Пример #13
0
        public IEnumerable <Car> Search(ListingSearchParameters parameters)
        {
            List <Car> searchList        = new List <Car>();
            List <Car> searchList2       = new List <Car>();
            var        makesRepo         = MakeFactory.GetRepository();
            var        modelRepo         = ModelFactory.GetRepository();
            var        typesRepo         = ConditionFactory.GetRepository();
            var        bodyStylesRepo    = BodyStyleFactory.GetRepository();
            var        transmissionsRepo = TransmissionFactory.GetRepository();
            var        extColorsRepo     = ExteriorColorFactory.GetRepository();
            var        intColorsRepo     = InteriorColorFactory.GetRepository();

            searchList = cars;

            if (!string.IsNullOrEmpty(parameters.Make)) //FYI: we do not have a make null
            {
                if (parameters.Mileage == "used")
                {
                    searchList = cars.Where(x => x.ConditionID == 2 && makesRepo.GetMakeById(x.MakeID).MakeName.Contains(parameters.Make.ToLower())).ToList();
                }
                else if (parameters.Mileage == "new")
                {
                    searchList = cars.Where(x => x.ConditionID == 1 && makesRepo.GetMakeById(x.MakeID).MakeName.ToLower().Contains(parameters.Make.ToLower())).ToList();
                }
                else if (parameters.OnSale == "true")
                {
                    searchList = cars.Where(x => x.OnSale == true && makesRepo.GetMakeById(x.MakeID).MakeName.ToLower().Contains(parameters.Make.ToLower())).ToList();
                }
                else
                {
                    searchList = cars.Where(x => makesRepo.GetMakeById(x.MakeID).MakeName.ToLower().Contains(parameters.Make.ToLower())).ToList();
                }
            }

            if (!string.IsNullOrEmpty(parameters.Model)) //FYI: we do not have a model null
            {
                if (parameters.Mileage == "used")
                {
                    searchList = cars.Where(x => x.ConditionID == 2 && modelRepo.GetModelById(x.ModelID).ModelName.ToLower().Contains(parameters.Model.ToLower())).ToList();
                }
                else if (parameters.Mileage == "new")
                {
                    searchList = cars.Where(x => x.ConditionID == 1 && modelRepo.GetModelById(x.ModelID).ModelName.ToLower().Contains(parameters.Model.ToLower())).ToList();
                }
                else if (parameters.OnSale == "true")
                {
                    searchList = cars.Where(x => x.OnSale == true && modelRepo.GetModelById(x.ModelID).ModelName.ToLower().Contains(parameters.Model.ToLower())).ToList();
                }
                else
                {
                    searchList = cars.Where(x => modelRepo.GetModelById(x.ModelID).ModelName.ToLower().Contains(parameters.Model.ToLower())).ToList();
                }
            }

            searchList2 = searchList;

            if (!string.IsNullOrEmpty(parameters.MinPrice) || !string.IsNullOrEmpty(parameters.MaxPrice))
            {
                int resultMinPrice;
                int.TryParse(parameters.MinPrice, out resultMinPrice);
                int resultMaxPrice;
                int.TryParse(parameters.MaxPrice, out resultMaxPrice);
                searchList = searchList2.Where(x => x.SalePrice >= resultMinPrice && x.SalePrice <= resultMaxPrice).ToList();
            }

            if (parameters.MinYear != "Any" && parameters.MaxYear != "Any")
            {
                int resultMinYear;
                int.TryParse(parameters.MinYear, out resultMinYear);
                int resultMaxYear;
                int.TryParse(parameters.MaxYear, out resultMaxYear);

                searchList = searchList2.Where(x => x.Year >= resultMinYear && x.Year <= resultMaxYear).ToList();
            }

            if (parameters.MinYear != "Any" && parameters.MaxYear == "Any")
            {
                int resultMinYear;
                int.TryParse(parameters.MinYear, out resultMinYear);

                searchList = searchList2.Where(x => x.Year >= resultMinYear).ToList();
            }

            if (parameters.MinYear == "Any" && parameters.MaxYear != "Any")
            {
                int resultMaxYear;
                int.TryParse(parameters.MaxYear, out resultMaxYear);

                searchList = searchList2.Where(x => x.Year <= resultMaxYear).ToList();
            }

            List <Car> carsSearched = new List <Car>();

            foreach (var car in searchList)
            {
                car.Model                         = new Model();
                car.Model.ModelID                 = car.ModelID;
                car.Model.ModelName               = modelRepo.GetModelById(car.ModelID).ModelName;
                car.Make                          = new Make();
                car.Make.MakeID                   = car.MakeID;
                car.Make.MakeName                 = makesRepo.GetMakeById(car.MakeID).MakeName;
                car.BodyStyle                     = new BodyStyle();
                car.BodyStyle.BodyStyleID         = car.BodyStyleID;
                car.BodyStyle.BodyStyleName       = bodyStylesRepo.GetBodyStyleById(car.BodyStyleID).BodyStyleName;
                car.Transmission                  = new Transmission();
                car.Transmission.TransmissionID   = car.TransmissionID;
                car.Transmission.TransmissionType = transmissionsRepo.GetTransmissionById(car.TransmissionID).TransmissionType;
                car.ExteriorColor                 = new ExteriorColor();
                car.ExteriorColor.ExteriorColorID = car.ExteriorColorID;
                car.ExteriorColor.Color           = extColorsRepo.GetExteriorColorById(car.ExteriorColorID).Color;
                car.InteriorColor                 = new InteriorColor();
                car.InteriorColor.InteriorColorID = car.InteriorColorID;
                car.InteriorColor.Color           = intColorsRepo.GetInteriorColorById(car.InteriorColorID).Color;
                carsSearched.Add(car);
            }

            return(carsSearched);
        }
Пример #14
0
        public IEnumerable <Car> Search(ListingSearchParameters parameters)
        {
            List <Car> cars = new List <Car>();

            using (var conn = new SqlConnection(Settings.GetConnectionString()))
            {
                string query = "SELECT TOP 10 * FROM Car JOIN Make on Make.MakeID = Car.MakeID " +
                               "JOIN Model on Model.ModelID = Car.ModelID " +
                               "JOIN Condition on Condition.ConditionID = Car.ConditionID " +
                               "JOIN BodyStyle on BodyStyle.BodyStyleID = Car.BodyStyleID " +
                               "JOIN Transmission on Transmission.TransmissionID = Car.TransmissionID " +
                               "JOIN ExteriorColor on ExteriorColor.ExteriorColorID = Car.ExteriorColorID " +
                               "JOIN InteriorColor on InteriorColor.InteriorColorID = Car.InteriorColorID ";

                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;

                if (parameters.Mileage == "used")
                {
                    query += "AND Car.ConditionID = '2' ";
                }
                if (parameters.Mileage == "new")
                {
                    query += "AND Car.ConditionID = '1' ";
                }
                if (parameters.OnSale == "true")
                {
                    query += "AND Car.OnSale = '1' ";
                }

                if (!string.IsNullOrEmpty(parameters.Make))
                {
                    query += "AND Make.MakeName LIKE @makeName ";
                    cmd.Parameters.AddWithValue("@makeName", parameters.Make + '%');
                }

                if (!string.IsNullOrEmpty(parameters.Model))
                {
                    query += "AND Model.ModelName LIKE @modelName ";
                    cmd.Parameters.AddWithValue("@modelName", parameters.Model + '%');
                }

                if (!string.IsNullOrEmpty(parameters.MinPrice) || !string.IsNullOrEmpty(parameters.MaxPrice))
                {
                    query += "AND Car.SalePrice BETWEEN @minPrice AND  @maxPrice ";
                    cmd.Parameters.AddWithValue("@minPrice", parameters.MinPrice);
                    cmd.Parameters.AddWithValue("@maxPrice", parameters.MaxPrice);
                }

                if (parameters.MinYear != "Any" && parameters.MaxYear != "Any")
                {
                    query += "AND [Car].[Year] BETWEEN @minYear AND  @maxYear ";
                    cmd.Parameters.AddWithValue("@minYear", parameters.MinYear);
                    cmd.Parameters.AddWithValue("@maxYear", parameters.MaxYear);
                }

                if (parameters.MinYear != "Any" && parameters.MaxYear == "Any")
                {
                    query += "AND [Car].[Year] >= @minYear ";
                    cmd.Parameters.AddWithValue("@minYear", parameters.MinYear);
                }

                if (parameters.MinYear == "Any" && parameters.MaxYear != "Any")
                {
                    query += "AND [Car].[Year] <= @maxYear ";
                    cmd.Parameters.AddWithValue("@maxYear", parameters.MaxYear);
                }

                cmd.CommandText = query;

                conn.Open();

                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        Car row = new Car();

                        row.CarID                         = (int)dr["CarID"];
                        row.OnSale                        = (bool)dr["OnSale"];
                        row.IsInStock                     = (bool)dr["IsInStock"];
                        row.Make                          = new Make();
                        row.Make.MakeID                   = (int)dr["MakeID"];
                        row.Make.MakeName                 = dr["MakeName"].ToString();
                        row.Model                         = new Model();
                        row.Model.ModelID                 = (int)dr["ModelID"];
                        row.Model.ModelName               = dr["ModelName"].ToString();
                        row.Condition                     = new Condition();
                        row.Condition.ConditionID         = (int)dr["ConditionID"];
                        row.Condition.ConditionType       = dr["ConditionType"].ToString();
                        row.Year                          = (int)dr["Year"];
                        row.BodyStyle                     = new BodyStyle();
                        row.BodyStyle.BodyStyleID         = (int)dr["BodyStyleID"];
                        row.BodyStyle.BodyStyleName       = dr["BodyStyleName"].ToString();
                        row.Transmission                  = new Transmission();
                        row.Transmission.TransmissionID   = (int)dr["TransmissionID"];
                        row.Transmission.TransmissionType = dr["TransmissionType"].ToString();
                        row.ExteriorColor                 = new ExteriorColor();
                        row.ExteriorColor.ExteriorColorID = (int)dr["ExteriorColorID"];
                        row.ExteriorColor.Color           = dr["Color"].ToString();
                        row.InteriorColor                 = new InteriorColor();
                        row.InteriorColor.InteriorColorID = (int)dr["InteriorColorID"];
                        row.InteriorColor.Color           = dr["Color"].ToString();
                        row.Mileage                       = dr["Mileage"].ToString();
                        row.VIN         = dr["VIN"].ToString();
                        row.SalePrice   = (decimal)dr["SalePrice"];
                        row.MSRP        = (decimal)dr["MSRP"];
                        row.Description = dr["Description"].ToString();
                        row.DateAdded   = dr["DateAdded"].ToString();
                        row.Photo       = dr["Photo"].ToString();

                        cars.Add(row);
                    }
                }
            }

            return(cars);
        }
Пример #15
0
        public IEnumerable <Listing> Search(ListingSearchParameters parameters)
        {
            List <Listing> listings = new List <Listing>();

            using (var cn = new SqlConnection(ConnectionStrings.GetConnectionString()))
            {
                string query =
                    "SELECT TOP 20 ListingId, l.ModelId, mo.ModelName, l.ModelYear, " +
                    "ma.MakeId, ma.MakeName, l.BodyStyleId, bs.BodyStyleName, l.InteriorColorId, " +
                    "ic.InteriorColorName, l.ExteriorColorId, ec.ExteriorColorName, " +
                    "Condition, Transmission, Mileage, VIN, MSRP, SalePrice, VehicleDescription, " +
                    "ImageFileUrl, IsFeatured, IsSold, l.DateAdded " +
                    "FROM Listings l " +
                    "inner join Models mo on mo.ModelId = l.ModelId " +
                    "inner join Makes ma on ma.MakeId = mo.MakeId  " +
                    "inner join InteriorColors ic on ic.InteriorColorId = l.InteriorColorId  " +
                    "inner join ExteriorColors ec on ec.ExteriorColorId = l.ExteriorColorId  " +
                    "inner join BodyStyles bs on bs.BodyStyleId = l.BodyStyleId  " +
                    "WHERE 1 = 1 ";

                SqlCommand cmd = new SqlCommand();
                cmd.Connection = cn;

                switch (parameters.View)
                {
                case "New":
                    query += "AND l.Condition = 1 ";
                    break;

                case "Used":
                    query += "AND l.Condition = 2 ";
                    break;

                case "Admin":
                    query += "AND (l.Condition = 1 or l.Condition = 2) ";
                    break;

                case "Sales":
                    query += "AND l.IsSold = 0 ";
                    break;

                default:
                    break;
                }

                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 l.ModelYear >= @MinYear ";
                    cmd.Parameters.AddWithValue("@MinYear", parameters.MinYear.Value);
                }
                if (parameters.MaxYear.HasValue)
                {
                    query += "AND l.ModelYear <= @MaxYear ";
                    cmd.Parameters.AddWithValue("@MaxYear", parameters.MaxYear.Value);
                }

                if (!string.IsNullOrEmpty(parameters.QuickSearch))
                {
                    query += "AND (ma.MakeName LIKE @QuickSearch OR mo.ModelName LIKE @QuickSearch OR l.ModelYear LIKE @QuickSearch) ";
                    cmd.Parameters.AddWithValue("@QuickSearch", parameters.QuickSearch + '%');
                }

                query          += "ORDER BY DateAdded DESC";
                cmd.CommandText = query;

                cn.Open();

                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        Listing row = new Listing();

                        row.ListingId         = (int)dr["ListingId"];
                        row.ModelId           = (int)dr["ModelId"];
                        row.ModelName         = dr["ModelName"].ToString();
                        row.ModelYear         = (int)dr["ModelYear"];
                        row.MakeId            = (int)dr["MakeId"];
                        row.MakeName          = dr["MakeName"].ToString();
                        row.BodyStyleId       = (int)dr["BodyStyleId"];
                        row.BodyStyleName     = dr["BodyStyleName"].ToString();
                        row.InteriorColorId   = (int)dr["InteriorColorId"];
                        row.InteriorColorName = dr["InteriorColorName"].ToString();
                        row.ExteriorColorId   = (int)dr["ExteriorColorId"];
                        row.ExteriorColorName = dr["ExteriorColorName"].ToString();
                        row.Condition         = (Condition)dr["Condition"];
                        row.Transmission      = (Transmission)dr["Transmission"];
                        row.Mileage           = (int)dr["Mileage"];
                        row.VIN                = dr["VIN"].ToString();
                        row.MSRP               = (decimal)dr["MSRP"];
                        row.SalePrice          = (decimal)dr["SalePrice"];
                        row.VehicleDescription = dr["VehicleDescription"].ToString();
                        row.IsFeatured         = (bool)dr["IsFeatured"];
                        row.IsSold             = (bool)dr["IsSold"];

                        if (dr["ImageFileUrl"] != DBNull.Value)
                        {
                            row.ImageFileUrl = dr["ImageFileUrl"].ToString();
                        }

                        listings.Add(row);
                    }
                }
            }

            return(listings);
        }
 public IEnumerable <Listing> Search(ListingSearchParameters parameters)
 {
     //search testing to implement later... this would be hard
     throw new NotImplementedException();
 }
Пример #17
0
        public IEnumerable <ListingSearchItem> GetSearchResults(ListingSearchParameters parameters)
        {
            List <ListingSearchItem> listings = new List <ListingSearchItem>();

            using (var cn = new SqlConnection(Settings.GetConnectionString()))
            {
                string query = "SELECT TOP 20 VehicleListingId, [Year], vma.VehicleMakeId, vma.VehicleMakeName, VehicleTypeId, " +
                               "vmo.VehicleModelId, vmo.VehicleModelName, b.BodyStyleId, b.BodyStyleName, t.TransmissionTypeId, t.TransmissionTypeName, " +
                               "SalePrice, Mileage, MSRP, vl.InteriorColorId, ic.ColorName as InteriorColor, c.ColorId, c.ColorName, VIN, ImageFileName, Sold " +
                               "FROM VehicleListings vl " +
                               "INNER JOIN VehicleMakes vma ON vl.VehicleMakeId = vma.VehicleMakeId " +
                               "INNER JOIN VehicleModels vmo ON vl.VehicleModelId = vmo.VehicleModelId " +
                               "INNER JOIN BodyStyles b ON vl.BodyStyleId = b.BodyStyleId " +
                               "INNER JOIN TransmissionTypes t ON vl.TransmissionTypeId = t.TransmissionTypeId " +
                               "INNER JOIN Colors ic ON vl.InteriorColorId = ic.ColorId " +
                               "INNER JOIN Colors c ON vl.ColorId = c.ColorId " +
                               "WHERE Sold = 0 ";

                SqlCommand cmd = new SqlCommand();
                cmd.Connection = cn;

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

                if (parameters.MaxMSRP.HasValue)
                {
                    query += $"AND MSRP <= @MaxMSRP ";
                    cmd.Parameters.AddWithValue("@MaxMSRP ", parameters.MaxMSRP.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 (parameters.VehicleTypeId.HasValue)
                {
                    query += $"AND VehicleTypeId = @VehicleTypeId ";
                    cmd.Parameters.AddWithValue("@VehicleTypeId", parameters.VehicleTypeId.Value);
                }

                if (!string.IsNullOrEmpty(parameters.SearchTerm))
                {
                    query += $"AND (vma.VehicleMakeName LIKE @SearchTerm OR vmo.VehicleModelName LIKE @SearchTerm OR [Year] LIKE @SearchTerm) ";
                    cmd.Parameters.AddWithValue("@SearchTerm", parameters.SearchTerm + '%');
                }

                query += "ORDER BY MSRP DESC";

                cmd.CommandText = query;

                cn.Open();

                using (SqlDataReader dr = cmd.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        ListingSearchItem row = new ListingSearchItem();
                        row.VehicleListingId     = (int)dr["VehicleListingId"];
                        row.Year                 = (int)dr["Year"];
                        row.VehicleMakeId        = (int)dr["VehicleMakeId"];
                        row.VehicleMakeName      = dr["VehicleMakeName"].ToString();
                        row.VehicleModelId       = (int)dr["VehicleModelId"];
                        row.VehicleModelName     = dr["VehicleModelName"].ToString();
                        row.BodyStyleId          = (int)dr["BodyStyleId"];
                        row.BodyStyleName        = dr["BodyStyleName"].ToString();
                        row.TransmissionTypeId   = (int)dr["TransmissionTypeId"];
                        row.TransmissionTypeName = dr["TransmissionTypeName"].ToString();
                        row.SalePrice            = (decimal)dr["SalePrice"];
                        row.Mileage              = (int)dr["Mileage"];
                        row.MSRP                 = (decimal)dr["MSRP"];
                        row.InteriorColorId      = (int)dr["InteriorColorId"];
                        row.InteriorColor        = dr["InteriorColor"].ToString();
                        row.ColorId              = (int)dr["ColorId"];
                        row.Color                = dr["ColorName"].ToString();
                        row.VIN = dr["VIN"].ToString();

                        if (dr["ImageFileName"] != DBNull.Value)
                        {
                            row.ImageFileName = dr["ImageFileName"].ToString();
                        }

                        listings.Add(row);
                    }
                }
            }

            return(listings);
        }