| using System; |
| using System.Collections.Generic; |
| |
| namespace OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime.Workdays; |
| |
| public class HolidayWeekdaysFactory { |
| private readonly DayOfWeek[] _dayOfWeekArray = { |
| DayOfWeek.Monday, |
| DayOfWeek.Tuesday, |
| DayOfWeek.Wednesday, |
| DayOfWeek.Thursday, |
| DayOfWeek.Friday, |
| DayOfWeek.Saturday, |
| DayOfWeek.Sunday, |
| }; |
| |
| public HolidayWeekdays Create(string weekdays) { |
| if (string.IsNullOrEmpty(weekdays) || weekdays.Length != 7) { |
| throw new ArgumentException("Illegal weekday string", nameof(Weekday)); |
| } |
| |
| var retVal = new List<DayOfWeek>(); |
| var arr = weekdays.ToCharArray(); |
| for (var i = 0; i < arr.Length; i++) { |
| var ch = arr[i]; |
| if (ch == '1') { |
| retVal.Add(_dayOfWeekArray[i]); |
| } |
| } |
| return new(retVal.ToArray()); |
| } |
| |
| public HolidayWeekdays Create(int code) { |
| switch (code) { |
| case 1: |
| return new(DayOfWeek.Saturday, DayOfWeek.Sunday); |
| case 2: |
| return new(DayOfWeek.Sunday, DayOfWeek.Monday); |
| case 3: |
| return new(DayOfWeek.Monday, DayOfWeek.Tuesday); |
| case 4: |
| return new(DayOfWeek.Tuesday, DayOfWeek.Wednesday); |
| case 5: |
| return new(DayOfWeek.Wednesday, DayOfWeek.Thursday); |
| case 6: |
| return new(DayOfWeek.Thursday, DayOfWeek.Friday); |
| case 7: |
| return new(DayOfWeek.Friday, DayOfWeek.Saturday); |
| case 11: |
| return new(DayOfWeek.Sunday); |
| case 12: |
| return new(DayOfWeek.Monday); |
| case 13: |
| return new(DayOfWeek.Tuesday); |
| case 14: |
| return new(DayOfWeek.Wednesday); |
| case 15: |
| return new(DayOfWeek.Thursday); |
| case 16: |
| return new(DayOfWeek.Friday); |
| case 17: |
| return new(DayOfWeek.Saturday); |
| default: |
| throw new ArgumentException("Invalid code supplied to HolidayWeekdaysFactory: " + code); |
| } |
| } |
| } |