private static List <Mark> FilterByMarkName(SearchPartsQuery partsQuery, List <Mark> filteredMarks) { var tempMarks = new List <Mark>(); for (int i = 0; i < filteredMarks.Count; i++) { if (filteredMarks[i].Name.Equals(partsQuery.MarkName, StringComparison.OrdinalIgnoreCase)) { tempMarks.Add(filteredMarks[i]); } } return(tempMarks); }
private static List <Model> FilterByTransmissionType(SearchPartsQuery partsQuery, List <Model> filteredModels) { var tempModels = new List <Model>(); for (int i = 0; i < filteredModels.Count; i++) { if (filteredModels[i].TransmissionType == partsQuery.TransmissionType.Value) { tempModels.Add(filteredModels[i]); } } return(tempModels); }
private static List <Model> FilterByYear(SearchPartsQuery partsQuery, List <Model> filteredModels) { var tempModels = new List <Model>(); for (int i = 0; i < filteredModels.Count; i++) { if (filteredModels[i].Year == partsQuery.Year.Value) { tempModels.Add(filteredModels[i]); } } return(tempModels); }
private List <Part> FilterByPartName(SearchPartsQuery partsQuery, List <Part> parts) { var tempParts = new List <Part>(); for (int i = 0; i < parts.Count; i++) { if (parts[i].Name.Equals(partsQuery.PartName, StringComparison.OrdinalIgnoreCase)) { tempParts.Add(parts[i]); } } return(tempParts); }
/// <summary> /// Поиск запчастей по множеству фильтров. Все фильтры работают через "и" /// </summary> /// <param name="query"></param> /// <returns></returns> public SearchPartsResult[] SearchParts(SearchPartsQuery query) { if (query == null) { throw new System.ArgumentNullException(nameof(query)); } var filteredMarks = new List <Mark>(context.Marks); var filteredModels = new List <Model>(context.Models); var filteredParts = new List <Part>(context.Parts); if (query.MarkName != null) { filteredMarks = FilterByMarkName(query, filteredMarks); } filteredModels = FilterByMarks(filteredModels, filteredMarks); if (query.ModelName != null) { filteredModels = FilterByModelName(query, filteredModels); } if (query.Year != null) { filteredModels = FilterByYear(query, filteredModels); } if (query.TransmissionType != null) { filteredModels = FilterByTransmissionType(query, filteredModels); } filteredParts = FilterByModels(filteredParts, filteredModels); if (query.PartCode != null) { filteredParts = FilterByPartCode(query, filteredParts); } if (query.PartName != null) { filteredParts = FilterByPartName(query, filteredParts); } var result = new List <SearchPartsResult>(); for (int i = 0; i < filteredParts.Count; i++) { var model = GetModel(filteredParts[i].ModelId); var mark = GetMark(model.MarkId); var item = new SearchPartsResult { PartCode = filteredParts[i].Code, CrossCodes = filteredParts[i].CrossCodes.ToArray(), PartName = filteredParts[i].Name, PartId = filteredParts[i].Id, MarkName = mark.Name, ModelName = model.Name, TransmissionType = model.TransmissionType, Year = model.Year }; result.Add(item); } return(result.ToArray()); }