Exemplo n.º 1
0
        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];
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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);
        }