public override Task <BLIPMessage> HandleResponseStage(BLIPMessage message, bool fromClient) { var response = new BLIPMessage { Type = MessageType.Response, MessageNumber = message.MessageNumber }; var usedRules = new List <Rule>(); foreach (var rule in ParsedConfig !.Rules) { if (!IsValidDirection(fromClient, rule.RuleDirection) || !rule.Criteria.Matches(message)) { continue; } foreach (var transform in rule.OutputTransforms) { Log.Verbose("Applying rule for message {0} ({1})", fromClient ? "from client" : "from server", transform); transform.Transform(ref response); } usedRules.Add(rule); } foreach (var rule in usedRules) { ParsedConfig.Used(rule); } return(usedRules.Any() ? Task.FromResult(response) : Task.FromResult(default(BLIPMessage))); }
public void SetTaxYear(int taxYear) { if (!ParsedConfig.ContainsKey(taxYear)) { throw new ArgumentException($"Could not find tax year specifics for tax year {taxYear}.", nameof(taxYear)); } CurrentTaxYear = ParsedConfig[taxYear]; }
/// <summary> /// Get valid types based on entry from ParsedConfig /// </summary> /// <param name="entryType">absence, day, or timesheet</param> /// <returns>Header for function CreateHeaderForCSV</returns> private string GetValidIndexTypes(string entryType) { int numberOfIndex = 0; string headerItem = ""; //Order by index foreach (var item in ParsedConfig.OrderBy((p) => p.Index)) { //If found from index for (int i = 0; i < item.ValidTypes.Length; i++) { if (item.ValidTypes[i] == entryType) { headerItem += item.Name + ";"; numberOfIndex++; } } } return(headerItem); }
/// <summary> /// Populate header based on config.tree and valid value(absence, day, timesheet) /// </summary> /// <param name="allInOne">allinone csv it may be convenient to write the longest header</param> /// <returns>Header for CSV file</returns> public string CreateHeaderForCsv(bool allInOne = false) { string csvHeader = ""; if (allInOne) { int absenceCount = 0; int dayCount = 0; int timesheetCount = 0; //Order by index foreach (var item in ParsedConfig.OrderBy((p) => p.Index)) { //If found from index for (int i = 0; i < item.ValidTypes.Length; i++) { switch (item.ValidTypes[i]) { case "absence": absenceCount++; break; case "day": dayCount++; break; case "timesheet": timesheetCount++; break; } } } if (timesheetCount >= absenceCount && timesheetCount >= dayCount) { csvHeader = GetValidIndexTypes("timesheet"); return(csvHeader); } else if (absenceCount >= dayCount) { csvHeader = GetValidIndexTypes("absence"); return(csvHeader); } else { csvHeader = GetValidIndexTypes("day"); return(csvHeader); } } if (typeof(T) == typeof(Timesheet)) { csvHeader = GetValidIndexTypes("timesheet"); } else if (typeof(T) == typeof(Absence)) { csvHeader = GetValidIndexTypes("absence"); } else if (typeof(T) == typeof(Day)) { csvHeader = GetValidIndexTypes("day"); } return(csvHeader); }