53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Nager.Holiday;
 | |
| using NodaTime;
 | |
| 
 | |
| namespace DysonNetwork.Pass.Account;
 | |
| 
 | |
| /// <summary>
 | |
| /// Reference from Nager.Holiday
 | |
| /// </summary>
 | |
| public enum NotableHolidayType
 | |
| {
 | |
|     /// <summary>Public holiday</summary>
 | |
|     Public,
 | |
|     /// <summary>Bank holiday, banks and offices are closed</summary>
 | |
|     Bank,
 | |
|     /// <summary>School holiday, schools are closed</summary>
 | |
|     School,
 | |
|     /// <summary>Authorities are closed</summary>
 | |
|     Authorities,
 | |
|     /// <summary>Majority of people take a day off</summary>
 | |
|     Optional,
 | |
|     /// <summary>Optional festivity, no paid day off</summary>
 | |
|     Observance,
 | |
| }
 | |
| 
 | |
| 
 | |
| public class NotableDay
 | |
| {
 | |
|     public Instant Date { get; set; }
 | |
|     public string? LocalName { get; set; }
 | |
|     public string? GlobalName { get; set; }
 | |
|     public string? CountryCode { get; set; }
 | |
|     public NotableHolidayType[] Holidays { get; set; } = [];
 | |
| 
 | |
|     public static NotableDay FromNagerHoliday(PublicHoliday holiday)
 | |
|     {
 | |
|         return new NotableDay()
 | |
|         {
 | |
|             Date = Instant.FromDateTimeUtc(holiday.Date.ToUniversalTime()),
 | |
|             LocalName = holiday.LocalName,
 | |
|             GlobalName = holiday.Name,
 | |
|             CountryCode = holiday.CountryCode,
 | |
|             Holidays = holiday.Types?.Select(x => x switch
 | |
|             {
 | |
|                 PublicHolidayType.Public => NotableHolidayType.Public,
 | |
|                 PublicHolidayType.Bank => NotableHolidayType.Bank,
 | |
|                 PublicHolidayType.School => NotableHolidayType.School,
 | |
|                 PublicHolidayType.Authorities => NotableHolidayType.Authorities,
 | |
|                 PublicHolidayType.Optional => NotableHolidayType.Optional,
 | |
|                 _ => NotableHolidayType.Observance
 | |
|             }).ToArray() ?? [],
 | |
|         };
 | |
|     }
 | |
| } |