public SearchResults BullSearch(PreferencesView preferences, AvailabilityScope availabilityScope, SaleStatusScope saleStatus, int basketSize) { var results = new SearchResults { StrainPercentiles = GetPercentileViews(preferences) }; var searcher = new Search( _salebullRepository.Get(preferences.Strain, Convert.ToInt16(preferences.SaleYear), availabilityScope, saleStatus), preferences.Preferences, results.StrainPercentiles ); var qualifiedBulls = searcher.QualifyBulls(); // set number total and sequenced matches foreach (var qualifiedBull in qualifiedBulls) { qualifiedBull.TotalMatches= qualifiedBull.BullTraits.Count(x => x.Qualifies); qualifiedBull.SequencedMatches = CountSequencedMatches(qualifiedBull.BullTraits); } //var temp = qualifiedBulls.Where(x => x.SequencedMatches > 0).ToList(); results.QualifiedBulls = qualifiedBulls .OrderByDescending(x => x.SequencedMatches) .ThenByDescending(x => x.Bull.SEL_IDX) .Take(basketSize) .ToList(); return results; }
public IEnumerable<SaleBull> Get(string strain, short saleYear, AvailabilityScope scope, SaleStatusScope saleStatus) { SqlCommand command = BuildCommand("[pb].[GetBulls]"); AddParameters(command, strain, saleYear, scope, saleStatus); OpenConnection(command.Connection); SqlDataReader dataReader = command.ExecuteReader(CommandBehavior.CloseConnection); return ReadData(dataReader); }
private void AddParameters(SqlCommand sqlCmd, string strain, short saleYear, AvailabilityScope scope, SaleStatusScope saleStatus) { sqlCmd.Parameters.Add(new SqlParameter { Value = strain, ParameterName = "strain", Direction = ParameterDirection.Input, SqlDbType = SqlDbType.Char, Size = 2 }); sqlCmd.Parameters.Add(new SqlParameter { Value = saleYear, ParameterName = "saleYear", Direction = ParameterDirection.Input, SqlDbType = SqlDbType.SmallInt }); sqlCmd.Parameters.Add(new SqlParameter { Value = scope, ParameterName = "availabilityScope", Direction = ParameterDirection.Input, SqlDbType = SqlDbType.SmallInt }); sqlCmd.Parameters.Add(new SqlParameter { Value = saleStatus, ParameterName = "saleStatus", Direction = ParameterDirection.Input, SqlDbType = SqlDbType.SmallInt }); }