public List <DateTime> GetPublicHolidayByYears(List <int> years, PublicHoliday holiday) { if (string.IsNullOrEmpty(holiday.Name)) { throw new ArgumentException("Cannot process a custom holidays without a name."); } if (string.IsNullOrEmpty(holiday.ReferenceHolidayName)) { throw new ArgumentException("You cannot have an empty ReferenceHolidayName for BasedOnOtherHoliday types."); } if (holiday.NumberOfDaysFromReference == null) { throw new ArgumentException("You cannot have an empty NumberOfDaysFromReference for BasedOnOtherHoliday types."); } var holidayDatesList = new List <DateTime>(); if (years == null) { return(holidayDatesList); } foreach (var referenceDate in holiday.ReferenceHolidayDates) { if (years.Any(x => x == referenceDate.Year)) { holidayDatesList.Add(referenceDate.AddDays(holiday.NumberOfDaysFromReference ?? 0)); } } return(holidayDatesList); }
public List <DateTime> GetPublicHolidayByYears(List <int> years, PublicHoliday holiday) { if (string.IsNullOrEmpty(holiday.Name)) { throw new ArgumentException("Cannot process a custom holidays without a name."); } var publicHolidaysList = new List <DateTime>(); if (years == null) { return(publicHolidaysList); } foreach (var year in years) { var publicHolidayDate = new DateTime(year, holiday.Month, holiday.Day); if (holiday.MustHappenOnAWeekDay && publicHolidayDate.DayOfWeek > DayOfWeek.Friday) { var daysToAdd = publicHolidayDate.DayOfWeek == DayOfWeek.Saturday ? 2 : 1; publicHolidayDate = publicHolidayDate.AddDays(daysToAdd); } publicHolidaysList.Add(publicHolidayDate); } return(publicHolidaysList); }
public IPublicHolidayCalculator GetCalculator(PublicHoliday holiday) { IPublicHolidayCalculator calculator = null; switch (holiday.HolidayType) { case PublicHolidayType.FixedDate: calculator = new FixedDayCalculator(); break; case PublicHolidayType.BasedOnAnotherHoliday: calculator = new BasedOnOtherHolidayCalculator(); break; case PublicHolidayType.RepeatEveryXYear: calculator = new YearRepetitionCalculator(); break; case PublicHolidayType.Easter: calculator = new EasterCalculator(); break; case PublicHolidayType.SpecificDayInWeek: calculator = new SpecificWeekDayCalculator(); break; default: throw new ArgumentException(); } return(calculator); }
public async Task LeaveRequest(IDialogContext context, LuisResult result) { PublicHoliday leaveDuration = ExtractDataFromDateEntities(context, result); if (leaveDuration.IsInputSingle) { var leaveRequestFormDialog = new FormDialog <LeaveRequestBasicForm> (new LeaveRequestBasicForm(leaveDuration.Single_Date, leaveDuration.Single_Date), leaveRequestBasicForm.BuildForm, FormOptions.PromptInStart); context.Call(leaveRequestFormDialog, AddRequestedLeaves); } else if (leaveDuration.IsInputRange) { var leaveRequestFormDialog = new FormDialog <LeaveRequestBasicForm> (new LeaveRequestBasicForm(leaveDuration.Start_Date, leaveDuration.End_Date), leaveRequestBasicForm.BuildForm, FormOptions.PromptInStart); context.Call(leaveRequestFormDialog, AddRequestedLeaves); } else { var leaveRequestFormDialog = new FormDialog <LeaveRequestBasicForm> (new LeaveRequestBasicForm(), leaveRequestBasicForm.BuildForm, FormOptions.PromptInStart); context.Call(leaveRequestFormDialog, AddRequestedLeaves); } }
/// <summary> /// If the public holiday falls on weekend identify the next weekday as holiday. /// </summary> /// <param name="year"></param> /// <returns></returns> public List <PublicHoliday> GetDayBasedHolidays(int year) { List <PublicHoliday> publicHolidays = GetFixedHolidays(year); for (int i = 0; i < publicHolidays.Count; i++) { PublicHoliday holiday = publicHolidays[i]; if ((holiday.HolidayDate == new DateTime(year, 1, 1) || holiday.HolidayDate == new DateTime(year, 1, 26) || holiday.HolidayDate == new DateTime(year, 4, 25) || holiday.HolidayDate == new DateTime(year, 12, 25) || holiday.HolidayDate == new DateTime(year, 12, 26) ) && holiday.IsWeekend()) { int addDays = 1; while (holiday.HolidayDate.AddDays(addDays).DayOfWeek < DayOfWeek.Monday || publicHolidays.Exists(t => t.HolidayDate == holiday.HolidayDate.AddDays(addDays) && !holiday.IsWeekend())) { addDays++; } string holidayName = String.Concat(holiday.Name, " ", holiday.HolidayDate.AddDays(addDays).DayOfWeek.ToString()); publicHolidays.Add(new PublicHoliday(holiday.HolidayDate.AddDays(addDays), holidayName)); } } return(publicHolidays); }
public void BusinessDaysBetweenTwoDatesCustomHolidays_WhenPasseValidDatesAndCustomHoliday_ThenReturnsCorrectCount() { // Arrange var firstDate = new DateTime(2020, 4, 20); var secondDate = new DateTime(2020, 4, 30); var anzacDayHoliday = new PublicHoliday { Name = "Anzac Day", Month = 4, Day = 25, MustHappenOnAWeekDay = true }; var holidayList = new List <PublicHoliday> { anzacDayHoliday }; var anzacDayDateIn2020 = new List <DateTime> { new DateTime(2020, 4, 27) }; var year = new List <int> { 2020 }; var calculator = new FixedDayCalculator(); _dateHelper.GetYearsBetweenDates(firstDate, secondDate).Returns(year); _publicHolidayCalculatorFactory.GetCalculator(anzacDayHoliday).Returns(calculator); var target = new DateCounter(_publicHolidayCalculatorFactory, _dateHelper, _logger); // Act var actual = target.BusinessDaysBetweenTwoDates(firstDate, secondDate, holidayList); // Assert actual.Should().Be(6); _dateHelper.Received(1).GetYearsBetweenDates(firstDate, secondDate); _publicHolidayCalculatorFactory.Received(1).GetCalculator(anzacDayHoliday); }
public PublicHoliday ExtractDataFromDateEntities(IDialogContext context, LuisResult result) { holidayData = new PublicHoliday(); EntityRecommendation Holiday_Date, Holiday_Date_Range; //Extracts date range entity from luis result : This case is for user input for a range of dates if (result.TryFindEntity("builtin.datetimeV2.daterange", out Holiday_Date_Range)) { holidayData.IsInputRange = true; var resolutionValues = (IList <object>)Holiday_Date_Range.Resolution["values"]; var lastRange = (IDictionary <string, object>)resolutionValues.Last(); holidayData.Start_Date = (lastRange).ContainsKey("start") ? Convert.ToDateTime((lastRange)["start"]) : (DateTime?)null; holidayData.End_Date = (lastRange).ContainsKey("end") ? Convert.ToDateTime((lastRange)["end"]) : (DateTime?)null; } //Extracts single date entity from luis result : This case is for user input for a specific date if (result.TryFindEntity("builtin.datetimeV2.date", out Holiday_Date)) { holidayData.IsInputSingle = true; var resolutionValues = (IList <object>)Holiday_Date.Resolution["values"]; holidayData.Single_Date = Convert.ToDateTime(((IDictionary <string, object>)resolutionValues.Last())["value"]); } return(holidayData); }
/// <summary> /// Load data method. /// </summary> /// <returns>Returns - Data</returns> private List <PublicHoliday> LoadDataOfDb() { // Initialization. List <PublicHoliday> lst = new List <PublicHoliday>(); List <Schedule> Result = new List <Schedule>(); try { Result = db.Schedule.ToList(); // Read Data. foreach (var item in Result) { PublicHoliday infoObj = new PublicHoliday(); // Setting. infoObj.Sr = item.id; infoObj.Title = item.title; infoObj.Desc = item.discription; infoObj.Start_Date = item.start; infoObj.End_Date = item.end; // Adding. lst.Add(infoObj); } } catch (Exception ex) { // info. Console.Write(ex); } // info. return(lst); }
public static PublicHolidayResponse MapFrom(PublicHoliday publicHoliday) { return(new PublicHolidayResponse { Date = publicHoliday.Date, Name = publicHoliday.Title }); }
private bool IsPublicHoliday(PublicHoliday publicHoliday, DateTime date) { return(publicHoliday.Month == date.Month && ((publicHoliday.FixedDate && publicHoliday.DayInMonth == date.Day) || (publicHoliday.VariableDayInMonth != null && publicHoliday.VariableDayInMonth.DayOfWeek == (int)date.DayOfWeek && publicHoliday.VariableDayInMonth.WeekOfMonth == DateTimeHelper.GetWeekNumberOfMonth(date)))); }
public ActionResult DeleteConfirmed(int id) { PublicHoliday publicHoliday = db.PublicHolidays.Find(id); db.PublicHolidays.Remove(publicHoliday); db.SaveChanges(); return(RedirectToAction("Index")); }
public void dleteHoliday(int Id, int UserId) { PublicHoliday holidayData = _db.PublicHolidays.Where(x => x.Id == Id).FirstOrDefault(); holidayData.Archived = true; holidayData.UserIDLastModifiedBy = UserId; holidayData.LastModified = DateTime.Now; _db.SaveChanges(); }
public ActionResult Edit([Bind(Include = "Id,Title,Desc,Start_Date,End_Date")] PublicHoliday publicHoliday) { if (ModelState.IsValid) { db.Entry(publicHoliday).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(publicHoliday)); }
public void CheckGlobalSwtichWork() { var publicHoliday = new PublicHoliday(2020, 01, 30, "Test", "Test", CountryCode.AT, null, null, PublicHolidayType.Public); Assert.IsTrue(publicHoliday.Global); publicHoliday = new PublicHoliday(2020, 01, 30, "Test", "Test", CountryCode.AT, null, new[] { "AT-1" }, PublicHolidayType.Public); Assert.IsFalse(publicHoliday.Global); }
public void SaveHolidayData(int CountryId, string CountryName, List <publicHolidayCountyList> HolidayData, int UserId) { if (CountryId > 0) { PublicHolidayCountry country = _db.PublicHolidayCountries.Where(x => x.Id == CountryId).FirstOrDefault(); country.Name = CountryName; country.UserIDLastModifiedBy = UserId; country.LastModified = DateTime.Now; _db.SaveChanges(); foreach (var item in HolidayData) { PublicHoliday holidayData = new PublicHoliday(); holidayData.Name = item.Name; var holidayDate = DateTime.ParseExact(item.Date, inputFormat, CultureInfo.InvariantCulture); holidayData.Date = Convert.ToDateTime(holidayDate.ToString(outputFormat)); holidayData.PublicHolidayCountryID = country.Id; holidayData.Archived = false; holidayData.UserIDCreatedBy = UserId; holidayData.CreatedDate = DateTime.Now; holidayData.UserIDLastModifiedBy = UserId; holidayData.LastModified = DateTime.Now; _db.PublicHolidays.Add(holidayData); _db.SaveChanges(); } } else { PublicHolidayCountry country = new PublicHolidayCountry(); country.Name = CountryName; country.Archived = false; country.UserIDCreatedBy = UserId; country.CreatedDate = DateTime.Now; country.UserIDLastModifiedBy = UserId; country.LastModified = DateTime.Now; _db.PublicHolidayCountries.Add(country); _db.SaveChanges(); foreach (var item in HolidayData) { PublicHoliday holidayData = new PublicHoliday(); holidayData.Name = item.Name; var holidayDate = DateTime.ParseExact(item.Date, inputFormat, CultureInfo.InvariantCulture); holidayData.Date = Convert.ToDateTime(holidayDate.ToString(outputFormat)); holidayData.PublicHolidayCountryID = country.Id; holidayData.Archived = false; holidayData.UserIDCreatedBy = UserId; holidayData.CreatedDate = DateTime.Now; holidayData.UserIDLastModifiedBy = UserId; holidayData.LastModified = DateTime.Now; _db.PublicHolidays.Add(holidayData); _db.SaveChanges(); } } }
public ActionResult Create([Bind(Include = "Id,Title,Desc,Start_Date,End_Date")] PublicHoliday publicHoliday) { if (ModelState.IsValid) { db.PublicHolidays.Add(publicHoliday); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(publicHoliday)); }
public void GetCalculator_WhenPassedHoliday_ThenReturnsCorrectCalculator(PublicHoliday publicHoliday, Type typeOfCalculator) { // Arrange var target = new PublicHolidayCalculatorFactory(); // Act var actual = target.GetCalculator(publicHoliday); // Assert actual.GetType().Should().Be(typeOfCalculator); }
public void TestInitialize() { try { publicHoliday = new PublicHoliday(); } catch (Exception e) { Assert.Fail(e.Message); } }
public IHttpActionResult GetById(int id) { PublicHoliday publicHoliday = publicHolidayRepository.ReadById(id); if (publicHoliday == null) { return(NotFound()); } return(Ok(publicHoliday)); }
/// <summary> /// 指定された <see cref="PublicHoliday"/> が祝日なら <c>true</c>、それ以外なら <c>false</c> を返します。 /// </summary> /// <param name="value"></param> /// <returns></returns> public static bool IsPublicHoliday(this PublicHoliday value) { switch (value) { case PublicHoliday.None: return(false); default: return(Enum.IsDefined(typeof(PublicHoliday), value)); } }
public IHttpActionResult Post(PublicHoliday publicHoliday) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } publicHoliday.Date = publicHoliday.Date.AddHours(4); publicHolidayRepository.Create(publicHoliday); return(CreatedAtRoute("DefaultApi", new { id = publicHoliday.Id }, publicHoliday)); }
private PublicHoliday DayOfMadrid(int year, CountryCode countryCode, PublicHoliday labourDay) { var date = new DateTime(year, 5, 2).Shift(saturday => saturday, sunday => sunday.AddDays(1)); if (labourDay.Date == date) { date = date.AddDays(1); } return(new PublicHoliday(date, "Fiesta de la Comunidad de Madrid", "Day of Madrid", countryCode, null, new string[] { "ES-M" })); }
public void GetPublicHolidayByYears_WhenNullName_ThenThrows() { // Arrange var target = new FixedDayCalculator(); var holiday = new PublicHoliday { Name = null }; // Act Action actual = () => target.GetPublicHolidayByYears(null, holiday); // Assert actual.Should().Throw<ArgumentException>().WithMessage("Cannot process a custom holidays without a name."); }
public PublicHolidayCsv(PublicHoliday item) { this.Date = item.Date.ToString("yyyy-MM-dd"); this.LocalName = item.LocalName; this.Name = item.Name; this.CountryCode = item.CountryCode.ToString(); this.Fixed = item.Fixed; this.Global = item.Global; this.LaunchYear = item.LaunchYear; this.Type = item.Type; this.Counties = item.Counties == null ? "" : $"{string.Join(',', item.Counties)}"; }
public void LongWeekend6() { var publicHolidays = new PublicHoliday[] { new PublicHoliday(2020, 01, 11, "Holiday Sunday", "Holiday Sunday", CountryCode.AT), }; ILongWeekendCalculator longWeekendCalculator = new LongWeekendCalculator(WeekendProvider.Universal); var longWeekends = longWeekendCalculator.Calculate(publicHolidays); Assert.AreEqual(0, longWeekends.Count()); }
public void updateHoliday(int Id, string Name, string Date, int UserId) { PublicHoliday holidayData = _db.PublicHolidays.Where(x => x.Id == Id).FirstOrDefault(); holidayData.Name = Name; var holidayDate = DateTime.ParseExact(Date, inputFormat, CultureInfo.InvariantCulture); holidayData.Date = Convert.ToDateTime(holidayDate.ToString(outputFormat)); holidayData.UserIDLastModifiedBy = UserId; holidayData.LastModified = DateTime.Now; _db.SaveChanges(); }
public static List <PublicHoliday> GetMayDay(DateTime startDate, DateTime endDate) { List <PublicHoliday> results = new List <PublicHoliday>(); PublicHoliday holiday = DateSystem.GetPublicHolidays(startDate, endDate, CountryCode.GB).Where(h => h.LocalName == "Early May Bank Holiday").FirstOrDefault(); if (holiday != null) { results.Add(holiday); } return(results); }
public static List <PublicHoliday> GetBoxingDay(DateTime startDate, DateTime endDate) { List <PublicHoliday> results = new List <PublicHoliday>(); PublicHoliday holiday = new PublicHoliday(new DateTime(Math.Max(startDate.Ticks, endDate.Ticks)).Year, 12, 26, "Boxing Day", "St. Stephen's Day", CountryCode.GB); if (holiday != null) { results.Add(holiday); } return(results); }
public static List <PublicHoliday> GetJan2ndScotland(DateTime startDate, DateTime endDate) { List <PublicHoliday> results = new List <PublicHoliday>(); PublicHoliday holiday = new PublicHoliday(new DateTime(Math.Max(startDate.Ticks, endDate.Ticks)).Year, 1, 2, "New Year's Day", "New Year's Day", CountryCode.GB); if (holiday != null) { results.Add(holiday); } return(results); }
public static List <PublicHoliday> GetJan2ndScotlandHoliday(DateTime startDate, DateTime endDate) { List <PublicHoliday> results = new List <PublicHoliday>(); PublicHoliday holiday = DateSystem.GetPublicHolidays(startDate, endDate, CountryCode.GB).Where(h => h.LocalName == "New Year's Day" && h.Counties != null && h.Counties.Contains("GB-SCT")).LastOrDefault(); if (holiday != null) { results.Add(holiday); } return(results); }