示例#1
0
        private IEnumerable <WorkLogItem> Create(TimeTableHeader header, string line)
        {
            var csvFileds = line.Split(_fieldSeparator, StringSplitOptions.None);

            var itemPrototype = new WorkLogItemPrototype(csvFileds[0], csvFileds[2].Trim(), csvFileds[3].Trim());

            foreach (var(columnIndex, workDate) in header.GetColumnIndexAndWorkDatePairs())
            {
                var rawSpentTime = csvFileds[columnIndex];
                if (!string.IsNullOrEmpty(rawSpentTime))
                {
                    yield return(itemPrototype.Create(workDate, ParseSpentTime(rawSpentTime)));
                }
            }
        }
示例#2
0
        private TimeTableHeader ParseTimeTableHeader(string rawHeader)
        {
            TimeTableHeader header = null;

            var fields = rawHeader.Split(_fieldSeparator, StringSplitOptions.None);

            int firstWorkDateIndex = -1;

            for (var index = 0; index < fields.Length; index++)
            {
                var value = fields[index];
                if (!string.IsNullOrEmpty(value) && TryParseWorkDate(fields[index], out var workDate))
                {
                    header = new TimeTableHeader(index);
                    header.Add(workDate);

                    firstWorkDateIndex = index;
                    break;
                }
            }

            if (header == null)
            {
                throw new InvalidOperationException("can not parse time table header");
            }

            for (var index = firstWorkDateIndex + 1; index < fields.Length; index++)
            {
                if (!TryParseWorkDate(fields[index], out var workDate))
                {
                    break;
                }

                header.Add(workDate);
            }

            return(header);
        }