public void CalculateTimeTest() { //Arrange DateTime date1 = new DateTime(2017, 2, 6); DateTime date2 = new DateTime(2017, 2, 7); DateTime date3 = new DateTime(2017, 2, 8); DateTime date4 = new DateTime(2017, 2, 9); DateTime date5 = new DateTime(2017, 2, 10); //Act BusinessCalendarService businessCalendarService = new BusinessCalendarService(); BusinessCalendar businessCalendar = new BusinessCalendar(businessCalendarService); int sumTimeHours1 = businessCalendar.CalculateWorkTime(date1, date5); int sumTimeHours2 = businessCalendar.CalculateWorkTime(date1, date4); int sumTimeHours3 = businessCalendar.CalculateWorkTime(date2, date4); int sumTimeHours4 = businessCalendar.CalculateWorkTime(date2, date5); //Assert Assert.Equal(28, sumTimeHours1); Assert.Equal(21, sumTimeHours2); Assert.Equal(14, sumTimeHours3); Assert.Equal(21, sumTimeHours4); }
public void CalculateDeadLineTest() { //Arrange DateTime date1 = new DateTime(2017, 2, 6); DateTime date2 = new DateTime(2017, 2, 7); DateTime date3 = new DateTime(2017, 2, 8); DateTime date4 = new DateTime(2017, 2, 9); DateTime date5 = new DateTime(2017, 2, 10); int allotedHours1 = 14; int allotedHours2 = 9; int allotedHours3 = 35; int allotedHours4 = 20; int allotedHours5 = 16; DateTime startDate = new DateTime(2017, 2, 6); BusinessCalendarService businessCalendarService = new BusinessCalendarService(); BusinessCalendar businessCalendar = new BusinessCalendar(businessCalendarService); //Act DateTime deadline1 = businessCalendar.CalculateDeadLine(allotedHours1, date1); DateTime deadline2 = businessCalendar.CalculateDeadLine(allotedHours2, date1); DateTime deadline3 = businessCalendar.CalculateDeadLine(allotedHours2, date3); DateTime deadline4 = businessCalendar.CalculateDeadLine(allotedHours3, date1); DateTime deadline5 = businessCalendar.CalculateDeadLine(allotedHours4, date1); DateTime deadline6 = businessCalendar.CalculateDeadLine(allotedHours5, date2); //Assert Assert.Equal(deadline1, (new DateTime(2017, 2, 7, 16, 30, 0))); Assert.Equal(deadline2, (new DateTime(2017, 2, 7, 10, 30, 0))); Assert.Equal(deadline3, (new DateTime(2017, 2, 10, 10, 30, 0))); Assert.Equal(deadline4, (new DateTime(2017, 2, 15, 16, 30, 0))); Assert.Equal(deadline5, (new DateTime(2017, 2, 9, 15, 30, 0))); }
protected void Button1_Click(object sender, EventArgs e) { try { DateTime startDate = DateTime.Parse(TextBoxStartDate.Text); int hour = Int32.Parse(TextBoxHour.Text); BusinessCalendarService businessCalendarService = new BusinessCalendarService(); BusinessCalendar businessCalendar = new BusinessCalendar(BusinessCalendarServiceProvider.Current); DateTime deadLine = businessCalendar.CalculateDeadLine(hour, startDate); finishDate.Text = deadLine.ToString(); ErrorLabel.Visible = false; } catch (System.FormatException) { ErrorLabel.Visible = true; } }
/// <summary> /// Метод для формирования календаря /// </summary> /// <param name="startDate">первая дата</param> /// <param name="finishDate">последняя дата</param> /// <returns></returns> public Table CreateCalendar(DateTime startDate, DateTime finishDate) { //отделяем время int yearStart = startDate.Year; int monthStart = startDate.Month; int yearFinish = finishDate.Year; int monthFinish = finishDate.Month; startDate = new DateTime(startDate.Year, startDate.Month, startDate.Day); finishDate = new DateTime(finishDate.Year, finishDate.Month, finishDate.Day); BusinessCalendarService businessCalendarService = new BusinessCalendarService(); List <Day> daysInformation = new List <Day>(BusinessCalendarServiceProvider.Current.GetDays(startDate, finishDate)); //определяем какой день недели у startDate DayOfWeek dayOfWeek; DateTime lastMonthDay = new DateTime(yearStart, monthStart, 1).AddDays(-1); dayOfWeek = lastMonthDay.DayOfWeek; int lastMonthDaysCount = 0; switch (dayOfWeek) { case DayOfWeek.Sunday: lastMonthDaysCount = 6; break; case DayOfWeek.Monday: break; case DayOfWeek.Tuesday: lastMonthDaysCount = 1; break; case DayOfWeek.Wednesday: lastMonthDaysCount = 2; break; case DayOfWeek.Thursday: lastMonthDaysCount = 3; break; case DayOfWeek.Friday: lastMonthDaysCount = 4; break; case DayOfWeek.Saturday: lastMonthDaysCount = 5; break; default: lastMonthDaysCount = 0; break; } //Устанавливаем дату для первого дня в календаре DateTime calendarStartDay = lastMonthDay.AddDays(-lastMonthDaysCount); //Формируем календарь Table calendar = new Table(); calendar.CssClass = "calendar"; TableRow mainCalendarRow = new TableRow(); Table calendarCell = new Table(); //Формируем шапку для календаря TableRow monthNameRow = new TableRow(); TableCell monthNameCell = new TableCell(); monthNameCell.Attributes.Add("colspan", "7"); string[] monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames; monthNameCell.Text = monthNames[monthStart - 1]; monthNameRow.Cells.Add(monthNameCell); calendarCell.Rows.Add(monthNameRow); calendarCell.Rows.Add(createCalendarFooter()); //Формируем дни для календаря for (int rowNumber = 0; rowNumber < 5; rowNumber++) { TableRow tableRow = new TableRow(); for (int cellNumber = 0; cellNumber < 7; cellNumber++) { TableCell tableCell = new TableCell(); tableCell.Text = calendarStartDay.Day.ToString(); if ((calendarStartDay >= startDate) && (calendarStartDay <= finishDate)) { List <Day> currentDay = daysInformation.Where <Day>(d => d.GetDate() == calendarStartDay).ToList <Day>(); if (currentDay.Count == 0) { tableCell.CssClass = "calendarDay"; } else { if (currentDay[0].IsWorkDay) { tableCell.CssClass = "workDay"; } else { tableCell.CssClass = "holiday"; } } } else { tableCell.CssClass = "calendarDay"; } tableRow.Cells.Add(tableCell); calendarStartDay = calendarStartDay.AddDays(1); } calendarCell.Rows.Add(tableRow); } TableCell mainCell = new TableCell(); mainCell.Controls.Add(calendarCell); mainCalendarRow.Cells.Add(mainCell); Table separator = new Table(); TableCell separatorCell = new TableCell(); separatorCell.Style.Add("width", "100px"); mainCalendarRow.Cells.Add(separatorCell); mainCalendarRow.Cells.Add(createCalendarDescription()); calendar.Rows.Add(mainCalendarRow); return(calendar); }