/// <summary> /// Processes the data in accordance with the formulas. /// </summary> private RatingsStorage?AppraiseThings() { RatingsStorage?ratingsStorage = null; try { IReadOnlyList <RawDataContainer> results = DataBaseManager.GetResultsFromDbWithAdditionalInfo(); ProcessedDataContainer ratings = AppraisersManager.GetAllRatings(results); ratingsStorage = ratings.RatingsStorage; if (ratings.Data.Count == 0) { GlobalMessageHandler.OutputMessage( "Appraisers have not calculated ratings. Result is empty." ); _status = ServiceStatus.Nothing; } else { DataBaseManager.DeleteResultAndRatings(); DataBaseManager.PutRatingsToDb(ratings); GlobalMessageHandler.OutputMessage( "Appraisers have calculated ratings successfully." ); _status = ServiceStatus.Ok; } } catch (Exception ex) { _logger.Error(ex, "Exception occured during appraising work."); _status = ServiceStatus.AppraiseError; } return(ratingsStorage); }
public void PutRatingsToDb(ProcessedDataContainer ratings) { foreach (Rating rating in ratings.RatingsStorage.GetAllRatings()) { if (!_ratingRepository.Contains(rating.RatingId)) { _ratingRepository.InsertItem(rating); } } foreach (IReadOnlyList <ResultInfo> datum in ratings.Data) { // Skip empty collections of data. if (datum.IsNullOrEmpty()) { continue; } foreach (ResultInfo info in datum) { _resultRepository.InsertItem(info); } } }