Перейти к содержанию

Плановая дата завершения задания во временной зоне автора или исполнителя

Плановая дата завершения задания во временной зоне автора или исполнителя

Так же вместе со временными зонами и возможностью отправлять задачи, указывая время в квантах, появилась возможность указать - как трактовать плановую дату. Данная возможность доступна в случае, если задание отправляется по-старому (с указанием плановой даты), и позволяет указать, что переданная дата относится к временной зоне исполнителя задания, автора задания, или же не пытаться интерпретировать дату никак и использовать без каких-либо манипуляций. В классе CardTask за это отвечает свойство PlannedType. Оно принимает три значения перечисления:

  • None - с датой завершения не производится изменений. Дата загружается и сохраняется как есть.

  • InAuthorTime - дата изменяется в соответствии с временной зоной автора задания.

  • InPerformerTime - дата изменяется в соответствии с временной зоной исполнителя задания.

Если с первым случаем, а по совместительству - значением по умолчанию (None), всё понятно, то для InAuthorTime и InPerformerTime - есть особенности.

InAuthorTime - подразумевает, что переданный при создании задания Planned относится к временной зоне автора задания. И значит из него необходимо вычесть смещение временной зоны автора перед сохранением в базу. Допустим мы некий сотрудник “А” в Москве (UTC+3) и мы ставим задачу сотруднику “Б” в Новосибирске (UTC+7). И мы хотим, чтобы задание было выполнено к некоторой дате к 14.00 по Москве. Если в CardTask будет установлено PlannedType = CardTaskPlannedType.InAuthorTime, и дата переданная с клиента не будет никак модифицирована, то при создании такого задания через WorkflowAPI будет передана дата (Planned) с временем 14.00, а в базу попадёт дата с 11.00, т.к. будут вычтены 3 часа смещения временной зоны автора. Для исполнителя же эта дата будет со временем 18.00, т.к. по его временной зоне в это время будет 18.00 (11.00 + 7 часов смещения)

Tip

Настройка “Игнорировать часовой пояс” в контроле даты/времени позволяет не приводить ведённые пользователем дату/время к UTC относительно локального времени пользователя и передаёт их на сервер – “как есть”.

InPerformerTime - подразумевает, что переданный при создании задания Planned относится к временной зоне исполнителя задания. И значит из него необходимо вычесть смещение временной зоны исполнителя перед сохранением в базу. Опять же предположим, что мы некий сотрудник “А” в Москве (UTC+3) и мы ставим задачу сотруднику “Б” в Новосибирске (UTC+7). И мы хотим, чтобы задание было выполнено к некоторой дате к 14.00 по Новосибирску. Если в CardTask будет установлено PlannedType = CardTaskPlannedType.InPerformerTime, и дата, переданная с клиента, не будет никак модифицирована, то будет передана дата (Planned) с временем 14.00, а в базу попадёт дата с 07.00, т.к. будут вычтены 7 часов смещения временной зоны исполнителя. И для исполнителя эта дата будет со временем 14.00, т.к. по его временной зоне в это время будет именно 14.00 (07.00 + 7 часов смещения)

Back to top