public static void Main()
var result = GetEndDateTransaction(new DateTime(2017,12,15), 8, 7);
Console.WriteLine("Result: " + result);
public static DateTime GetEndDateTransaction(DateTime startDate, int duration, int scheduleType)
DateTime result = GetDefaultEndDate(startDate, duration);
switch ((int)scheduleType)
result = GetEndtDateForShift4(startDate, duration);
result = GetEndtDateForShift5(startDate, duration);
result = GetEndtDateForShift6(startDate, duration);
private static DateTime GetDefaultEndDate(DateTime start, int duration)
DateTime newDate = start.AddDays(-1);
newDate = newDate.AddDays(duration);
private static DateTime GetEndtDateForShift4(DateTime start, int duration)
int direction = duration < 0 ? -1 : 1;
DateTime newDate = start.AddDays(-1);
newDate = newDate.AddDays(direction);
if (newDate.DayOfWeek != DayOfWeek.Friday &&
newDate.DayOfWeek != DayOfWeek.Saturday &&
newDate.DayOfWeek != DayOfWeek.Sunday)
private static DateTime GetEndtDateForShift5(DateTime start, int duration)
int direction = duration < 0 ? -1 : 1;
DateTime newDate = start.AddDays(-1);
newDate = newDate.AddDays(direction);
if (newDate.DayOfWeek != DayOfWeek.Saturday &&
newDate.DayOfWeek != DayOfWeek.Sunday)
private static DateTime GetEndtDateForShift6(DateTime start, int duration)
int direction = duration < 0 ? -1 : 1;
DateTime newDate = start.AddDays(-1);
newDate = newDate.AddDays(direction);
if (newDate.DayOfWeek != DayOfWeek.Sunday)