using System.Collections;
using System.Collections.Generic;
string ReturnDate(DateTime appDate);
public class localTimeClass : IDateConvert
public string ReturnDate(DateTime appDate)
return TimeZoneInfo.ConvertTimeFromUtc(appDate, TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")).AddHours(2).ToString("yyyy-MM-dd");
public Plans Name {get; set;}
public bool PolicyHolderIsInsured { get; set; }
public int TravelDurationInDays {get; set;}
public bool IsTravelDurationValidationRequired {get; set;}
public bool IsTravelDurationGreatherThan {get; set;}
public bool IsTravelDurationLessThan {get; set;}
public bool AlwaysShow {get; set;}
public bool IsEndDateFallOnWeekday {get; set;}
private static List<Plan> AllPlans = new List<Plan>();
public static void Main()
PolicyHolderIsInsured = false,
IsTravelDurationValidationRequired = true,
IsTravelDurationGreatherThan = false,
IsTravelDurationLessThan = true,
TravelDurationInDays = 32,
PolicyHolderIsInsured = true,
IsTravelDurationValidationRequired = true,
IsTravelDurationGreatherThan = false,
IsTravelDurationLessThan = true,
TravelDurationInDays = 32
IsEndDateFallOnWeekday = true
DateTime startDate = new DateTime(2024, 03, 19);
DateTime endDate = new DateTime(2024, 04, 19);
var validPlans = ShowValidPlans(false,startDate,endDate);
for (int i = 0; i < validPlans.Length; i++)
Console.WriteLine(validPlans[i].Name);
localTimeClass obj = new localTimeClass();
Console.WriteLine(obj.ReturnDate(new DateTime(2024, 03, 17, 13, 18, 27)));
public static Plan[] ShowValidPlans(bool isNotPolicyholderSameAsInsured, DateTime TravelStartDate, DateTime TravelEndDate)
if (TravelStartDate >= TravelEndDate)
Console.WriteLine("Invalid Start Date.");
if (isNotPolicyholderSameAsInsured)
Console.WriteLine("Policyholder must be the insured one");
var durationDays = (TravelEndDate - TravelStartDate).TotalDays + 1;
p=> (p.AlwaysShow == true && alwaysShow) ||
(p.IsEndDateFallOnWeekday == true && (TravelEndDate.DayOfWeek.ToString() != "Saturday" && TravelEndDate.DayOfWeek.ToString() != "Sunday")) ||
(p.PolicyHolderIsInsured == false || (p.PolicyHolderIsInsured == true && p.IsTravelDurationValidationRequired == true && p.IsTravelDurationGreatherThan == true && durationDays > p.TravelDurationInDays)) ||
(p.PolicyHolderIsInsured == true && p.IsTravelDurationValidationRequired == true && p.IsTravelDurationLessThan == true && durationDays < p.TravelDurationInDays)