/// <summary>
 /// Configures a <see cref="WorkingDayServiceBuilder"/> to use a <see cref="StringNonWorkingDaySource{T}"/> in addition to any previously configured sources.
 /// </summary>
 /// <typeparam name="T">The type of the internal state of the <see cref="StringNonWorkingDaySource{T}"/>.</typeparam>
 /// <param name="builder">The Builder to configure.</param>
 /// <param name="source">The string content to be used to build the internal state of the <see cref="StringNonWorkingDaySource{T}"/>.</param>
 /// <param name="parseFileContentAction">The action used to build the internal state of the <see cref="StringNonWorkingDaySource{T}"/> from the provided string content.</param>
 /// <param name="checkAction">The action used to determine whether a given <see cref="DateTime"/> is on a non-Working Day (using the <see cref="StringNonWorkingDaySource{T}"/>, based on the provided string content).
 /// Should return <c>true</c> if the provided <see cref="DateTime"/> is on a Non-Working Day, and <c>false</c> if it is on a Working Day.</param>
 /// <returns>The same instance of a <see cref="WorkingDayServiceBuilder"/> using the new <see cref="StringNonWorkingDaySource{T}"/>, in addition to any previously configured sources.</returns>
 // ReSharper disable once UnusedMember.Global
 public static WorkingDayServiceBuilder AddStringSource <T>(this WorkingDayServiceBuilder builder, string source, Func <string, T> parseFileContentAction, Func <DateTime, T, bool> checkAction)
 => builder.WithSource(new StringNonWorkingDaySource <T>(source, parseFileContentAction, checkAction));
Beispiel #2
0
 /// <summary>
 /// Configures a <see cref="WorkingDayServiceBuilder"/> to use a <see cref="FileNonWorkingDaySource{T}"/> in addition to any current sources.
 /// </summary>
 /// <typeparam name="T">The type of the internal state of the <see cref="FileNonWorkingDaySource{T}"/>.</typeparam>
 /// <param name="builder">The Builder to configure.</param>
 /// <param name="filePath">The path to the file to which should be used to create the <see cref="FileNonWorkingDaySource{T}"/>'s internal state.</param>
 /// <param name="parseFileContentAction">The action to build the internal state of the <see cref="FileNonWorkingDaySource{T}"/> from the content of the file at the provided file path.</param>
 /// <param name="checkAction">The action used to determine whether a <see cref="DateTime"/> is on a Non-Working Day (based on the current state of the <see cref="FileNonWorkingDaySource{T}"/>).
 /// Should return <c>true</c> if the provided <see cref="DateTime"/> is on a Non-Working Day, and <c>false</c> if it is on a Working Day.</param>
 /// <returns>The same instance of a <see cref="WorkingDayServiceBuilder"/> using the new <see cref="FileNonWorkingDaySource{T}"/> configured with the file at the provided file path, as well as any previously configured sources.</returns>
 // ReSharper disable once UnusedMember.Global
 public static WorkingDayServiceBuilder AddFileSource <T>(this WorkingDayServiceBuilder builder, string filePath, Func <string, T> parseFileContentAction, Func <DateTime, T, bool> checkAction)
 => builder.WithSource(new FileNonWorkingDaySource <T>(filePath, parseFileContentAction, checkAction));
Beispiel #3
0
 /// <summary>
 /// Configures the <see cref="WorkingDayServiceBuilder"/> to use a <see cref="NonWorkingDaySource"/> based on the UK's Bank Holidays, as well as any previously configured sources.
 /// </summary>
 /// <remarks>
 /// The source is based on a <see cref="HttpNonWorkingDaySource{T}"/> created using the UK Government's Bank Holidays JSON API.
 /// </remarks>
 /// <param name="builder">The <see cref="WorkingDayServiceBuilder"/> to configure to use UK Bank Holidays for Non-Working Day detection.</param>
 /// <param name="refreshTime">The amount of time the <see cref="WorkingDayService"/> should wait between attempted refreshes of the Bank Holiday list (on failure to update, the state will not change).</param>
 /// <returns>The same instance of a <see cref="WorkingDayServiceBuilder"/> using the UK Bank Holidays <see cref="NonWorkingDaySource"/>, as well as any previously configured sources.</returns>
 // ReSharper disable once UnusedMember.Global
 public static WorkingDayServiceBuilder AddGovUkBankHolidayJsonSource(this WorkingDayServiceBuilder builder, TimeSpan refreshTime)
 => builder.WithSource(GovUkBankHolidayJsonSource(refreshTime));
 /// <summary>
 /// Configures a <see cref="WorkingDayServiceBuilder"/> to use a <see cref="HttpNonWorkingDaySource{T}"/>, in addition to any previously configured sources.
 /// </summary>
 /// <typeparam name="T">The Type of the internal state of the <see cref="HttpNonWorkingDaySource{T}"/>.</typeparam>
 /// <param name="builder">The <see cref="WorkingDayServiceBuilder"/> to configure.</param>
 /// <param name="request">The <see cref="HttpRequestMessage"/> to make to update the internal state of the <see cref="HttpNonWorkingDaySource{T}"/>.</param>
 /// <param name="parseAction">The <see cref="Func{TContent, TResult}"/> used to build the internal state of the <see cref="HttpNonWorkingDaySource{T}"/> from the content of the provided <see cref="HttpRequestMessage"/>'s <see cref="HttpResponseMessage"/>.</param>
 /// <param name="checkAction">The <see cref="Func{TDateTime, TState, TResult}"/> used to check whether a given <see cref="DateTime"/> is on a non-working day based on the current state of the <see cref="HttpNonWorkingDaySource{T}"/>.
 /// Should return <c>true</c> if the provided <see cref="DateTime"/> is on a Non-Working Day, and <c>false</c> if it is on a Working Day.</param>
 /// <param name="refreshTimer">The interval at which to make the provided HTTP Request to update the internal state.</param>
 /// <returns>The same instance of a <see cref="WorkingDayServiceBuilder"/> using the new <see cref="HttpNonWorkingDaySource{T}"/>, in addition to any previously configured sources.</returns>
 // ReSharper disable once UnusedMember.Global
 public static WorkingDayServiceBuilder AddHttpSource <T>(this WorkingDayServiceBuilder builder, HttpRequestMessage request, Func <string, T> parseAction, Func <DateTime, T, bool> checkAction, TimeSpan refreshTimer)
 => builder.WithSource(new HttpNonWorkingDaySource <T>(request, parseAction, checkAction, refreshTimer));
Beispiel #5
0
 /// <summary>
 /// Configures the <see cref="WorkingDayServiceBuilder"/> to use a <see cref="DaysOfTheWeekNonWorkingDaySource"/> which considers Monday -> Friday Working Days, and Saturday and Sunday to be Non-Working Days, as well as any previously configured <see cref="NonWorkingDaySource"/>s.
 /// </summary>
 /// <param name="builder">The Builder to configure.</param>
 /// <returns>The same instance of a <see cref="WorkingDayServiceBuilder"/> with the new <see cref="DaysOfTheWeekNonWorkingDaySource"/> added.</returns>
 // ReSharper disable once UnusedMember.Global
 public static WorkingDayServiceBuilder AddWeekendNonWorkingDaySource(this WorkingDayServiceBuilder builder) => builder.WithSource(new DaysOfTheWeekNonWorkingDaySource(new HashSet <DayOfWeek> {
     DayOfWeek.Saturday, DayOfWeek.Sunday
 }));
Beispiel #6
0
 /// <summary>
 /// Configures the <see cref="WorkingDayServiceBuilder"/> to use a <see cref="DaysOfTheWeekNonWorkingDaySource"/> which considers the provided days to be Non-Working days, as well as any previously configured sources.
 /// </summary>
 /// <param name="builder">The Builder to configure.</param>
 /// <param name="workingDays">The days to consider Non-Working Days.</param>
 /// <returns>The same instance of a <see cref="WorkingDayServiceBuilder"/> using the new <see cref="DaysOfTheWeekNonWorkingDaySource"/> configured with the provided days, as well as any previously configured <see cref="NonWorkingDaySource"/>s.</returns>
 // ReSharper disable once UnusedMember.Global
 public static WorkingDayServiceBuilder AddDaysOfTheWeekNonWorkingDaySource(this WorkingDayServiceBuilder builder, params DayOfWeek[] workingDays) => builder.WithSource(new DaysOfTheWeekNonWorkingDaySource(workingDays));
Beispiel #7
0
 /// <summary>
 /// Configures the <see cref="WorkingDayServiceBuilder"/> to use a <see cref="DaysOfTheWeekNonWorkingDaySource"/> which considers the provided days to be Non-Working days, as well as any previously configured sources.
 /// </summary>
 /// <param name="builder">The Builder to configure.</param>
 /// <param name="workingDays">The days to consider Non-Working Days.</param>
 /// <returns>The same instance of a <see cref="WorkingDayServiceBuilder"/> using the new <see cref="DaysOfTheWeekNonWorkingDaySource"/> configured with the provided days, as well as any previously configured <see cref="NonWorkingDaySource"/>s.</returns>
 // ReSharper disable once UnusedMember.Global
 public static WorkingDayServiceBuilder AddDaysOfTheWeekNonWorkingDaySource(this WorkingDayServiceBuilder builder, IEnumerable <DayOfWeek> workingDays) => builder.WithSource(new DaysOfTheWeekNonWorkingDaySource(workingDays));