/// <summary> /// Checks all custom analysis rules /// </summary> /// <param name="unit">unit to analyze</param> /// <returns></returns> public Dictionary <string, string[]> CheckCustomAnalysisChecks(IStatisticalUnit unit) { return(_analysisRules.CustomAnalysisChecks ? new StatUnitCustomCheckManager(unit, _context).CheckFields() : new Dictionary <string, string[]>()); }
public void StatUnitPostDeleteActions(IStatisticalUnit unit, bool toDelete, string userId) { _postDeleteActions[unit.UnitType](unit, toDelete, userId); }
/// <inheritdoc /> /// <summary> /// Analyze statistical unit /// </summary> /// <param name="unit">Stat unit</param> /// <returns>Dictionary of messages</returns> public virtual AnalysisResult CheckAll(IStatisticalUnit unit) { var messages = new Dictionary <string, string[]>(); var summaryMessages = new List <string>(); var connectionsResult = CheckConnections(unit); if (connectionsResult.Any()) { summaryMessages.Add(nameof(Resource.ConnectionRulesWarnings)); messages.AddRange(connectionsResult); } var mandatoryFieldsResult = CheckMandatoryFields(unit); if (mandatoryFieldsResult.Any()) { summaryMessages.Add(nameof(Resource.MandatoryFieldsRulesWarnings)); messages.AddRange(mandatoryFieldsResult); } var calculationFieldsResult = CheckCalculationFields(unit); if (calculationFieldsResult.Any()) { summaryMessages.Add(nameof(Resource.CalculationFieldsRulesWarnings)); calculationFieldsResult.ForEach(d => { if (messages.ContainsKey(d.Key)) { var existed = messages[d.Key]; messages[d.Key] = existed.Concat(d.Value).ToArray(); } else { messages.Add(d.Key, d.Value); } }); } var potentialDuplicateUnits = GetDuplicateUnits(unit); if (potentialDuplicateUnits.Any()) { var duplicatesResult = CheckDuplicates(unit, potentialDuplicateUnits); if (duplicatesResult.Any()) { summaryMessages.Add(nameof(Resource.DuplicateFieldsRulesWarnings)); duplicatesResult.ForEach(d => { if (messages.ContainsKey(d.Key)) { var existed = messages[d.Key]; messages[d.Key] = existed.Concat(d.Value).ToArray(); } else { messages.Add(d.Key, d.Value); } }); } } var additionalAnalysisCheckResult = CheckCustomAnalysisChecks(unit); if (additionalAnalysisCheckResult.Any()) { summaryMessages.Add(nameof(Resource.CustomAnalysisChecks)); additionalAnalysisCheckResult.ForEach(d => { if (messages.ContainsKey(d.Key)) { var existed = messages[d.Key]; messages[d.Key] = existed.Concat(d.Value).ToArray(); } else { messages.Add(d.Key, d.Value); } }); } var ophanUnitsResult = CheckOrphanUnits(unit); if (ophanUnitsResult.Any()) { summaryMessages.Add(nameof(Resource.OrphanUnitsRulesWarnings)); messages.AddRange(ophanUnitsResult); } return(new AnalysisResult { Name = unit.Name, Type = unit.UnitType, Messages = messages, SummaryMessages = summaryMessages }); }