blob: cf17962d2d976c8252adf4b36b94b03474aa1468 [file] [log] [blame]
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);
}
}
}