Бизнес-календарь

Назначение

Предназначена для хранения информации о расписании работы сотрудников (количество рабочих дней, рабочих часов и др.) на определённый период времени.

Класс карточки

BackOffice-ObjectModel-Calendar:Calendar_CL.adoc[DocsVision.BackOffice.ObjectModel.Calendar]

Для работы с карточкой предназначен сервис ICalendarService. Сервис предоставляет следующие операции:

  • Добавление рабочих дат в бизнес-календарь.

  • Добавление рабочего время.

  • Получение сроков рабочего времени для различных условий.

В примере создаётся бизнес-календарь в котором все пятницы 2014 года объявляются сокращенными (рабочее время с 10 до 15 часов). По созданному календарю будет работать текущий пользователь. Дополнительных проверок не проводим.

ICalendarService calendarService = objectContext.GetService<ICalendarService>();
IStaffService staffService = objectContext.GetService<IStaffService>(); (1)

CardData cardData = userSession.CardManager.CreateCardData(DocsVision.BackOffice.CardLib.CardDefs.CardCalendar.ID); (2)

DocsVision.BackOffice.ObjectModel.Calendar calendar = objectContext.GetObject<DocsVision.BackOffice.ObjectModel.Calendar>(cardData.Id); (3)
calendar.MainInfo.Name = "bestWorks";
calendar.Description = "Легкий день";
int year = 2014;

CalendarYear calendarYear = calendarService.AddCalendarYear(year); (4)

calendarYear.Days = new ObjectCollection<CalendarDay>();
DateTime startDate = new DateTime(year, 1, 1); (5)

for (DateTime i = startDate; i <= new DateTime(year, 12, 31); i = i.AddDays(1))
{
 if (i.DayOfWeek = DayOfWeek.Friday)
 { (6)
  CalendarWorkTime calendarWorkTime = calendarService.AddCalendarWorkTime(new System.DateTime(2000, 1, 1, 10, 0, 0), new System.DateTime(2000, 1, 1, 15, 0, 0)); (7)

  CalendarDay calendarDay = calendarService.AddCalendarDay(i.DayOfYear);
  calendarDay.WorkTime = new ObjectCollection<CalendarWorkTime>();
  calendarDay.WorkTime.Add(calendarWorkTime); (8)

  calendarYear.Days.Add(calendarDay); (9)
 }
}

calendar.Years.Add(calendarYear); (10)

staffService.GetCurrentEmployee().CalendarID = cardData.Id; (11)

objectContext.AcceptChanges(); (12)
1 Инициализация контекста объектов и получение сервисов.
2 Инициализация карточки типа Бизнес-календарь (использует CardManager, старый API).
3 Доступ к карточке через объектную модель.
4 Создание объекта типа "Год".
5 Инициализация коллекции дней в году.
6 Заполнение дней.
7 Создание объекта содержащего укороченное рабочее время.
8 Создание объекта типа "День" и добавление в него рабочего времени.
9 Добавление дня в год.
10 Сохранение года в календаре.
11 Присвоение календаря текущему пользователю.
12 Сохранение всех изменений.