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;
            }
        }
Esempio n. 4
0
        /// <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);
        }