Формулировка проблемы: для реализации нового модуля «Документы» в мобильном клиенте требуется реализовать API для работы с комментариями.
Решение: необходимо реализовать три новых
метода API, позволяющих:
добавлять/изменять комментарии;
удалять комментарии;
возвращать список комментариев.
Метод, позволяющий добавлять/изменять комментарии
URL метода:
rest/api/docflow/doc/comments/save. Типа запроса:
POST.
Метод принимает следующие строковые параметры:
documentID - UUID
документа (обяз.);
workID - UUID работы
(необяз.);
commentID - UUID
комментария (обяз. только для изменения комментария);
comment - текст комментария (обяз.);
locale - локаль пользователя,
ru/en/kz (не обяз., по умолчанию
ru).
В случае успешного выполнения метода сервер вернет описание добавленного, либо измененного комментария.
Альтернативные потоки событий:
если параметр documentID не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
documentID», комментарии не
добавляются/изменяются;
если передан некорректный параметр
documentID, сервер вернет сообщение
«Некорректный параметр
documentID: значение параметра», комментарии
не добавляются/изменяются;
если параметр comment не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
comment», комментарий не изменяется.
если передан некорректный параметр commentID,
сервер вернет сообщение «Вы не можете изменить данный
комментарий», комментарий не изменяется (только для изменения
комментария).
Метод, позволяющий удалять комментарии
URL метода:
rest/api/docflow/doc/comments/remove. Типа
запроса: GET.
Метод принимает следующие строковые параметры:
commentID - UUID
комментария (обяз.);
locale - локаль пользователя,
ru/en/kz (не обяз., по умолчанию
ru).
В случае успешного выполнения метода сервер вернет сообщение «Комментарий удален».
Альтернативные потоки событий:
если параметр commentID не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
commentID», комментарий не удаляется;
если передан некорректный параметр commentID,
сервер вернет сообщение «Вы не можете удалить данный
комментарий», комментарий не удаляется;
в случае неуспешного выполнения метода сервер вернет сообщение «Ошибка удаления комментария».
Метод, позволяющий возвращать список комментариев
Метод возвращает комментарии к документу, отсортированные в обратном порядке по дате добавления.
URL метода:
rest/api/docflow/doc/comments/list. Типа запроса:
GET.
Метод принимает следующие строковые параметры:
documentID - UUID
документа (обяз.);
start - номер первой записи (не обяз., начало
отсчета - 0);
count - количество записей в возвращаемом
списке (не обяз., по умолчанию 3);
getCounters - возвращать ли общее количество
комментариев (не обяз., true - да,
false - нет, по умолчанию);
locale - локаль пользователя,
ru/en/kz (не обяз., по умолчанию
ru).
Альтернативные потоки событий:
если параметр documentID не передан, либо он
пустой, сервер вернет сообщение «Не передан параметр
documentID», список не возвращается;
если передан некорректный параметр
documentID, сервер вернет сообщение
«Некорректный параметр
documentID: значение параметра», список не
возвращается.
Метод возвращает json со следующими полями:
commentID - UUID
комментария;
comment - текст комментария;
author - массив со следующими полями:
userID - UUID автора;
name - Фамилия И.О.
автора;
created - время создания комментария в
формате yyyy-MM-dd HH:mm:ss;
created_label - время от даты создания либо
время создания в формате:
текущий день, в течение часа -
ХХ минут(ы) назад;
текущий день, более часа назад, но в течение дня -
Сегодня в ЧЧ:ММ;
в течение предыдущего дня -
Вчера в ЧЧ:ММ;
более двух дней назад, но в течение текущей рабочей недели:
при просмотре комментария со среды по воскресенье
текущей рабочей недели -
В понедельник в ЧЧ:ММ;
четверг - воскресенье -
Во вторник в ЧЧ:ММ;
пятница - воскресенье -
В среду в ЧЧ:ММ;
суббота - воскресенье -
В четверг в ЧЧ:ММ;
только воскресенье -
В пятницу в ЧЧ:ММ;
предыдущая рабочая неделя и более -
ДД месяц ГГГГ ЧЧ:ММ;
comment_icon_type - тип иконки комментария;
comment_icon - комментарий самого
пользователя;
comment_icon_gray - комментарий другого
пользователя ;
comment_icon_green - комментарий
согласования / утверждения ;
comment_icon_red - комментарий отказа в
согласовании / утверждении ;
comment_icon_result - комментарий
результата работы;
type - тип комментария:
0 - простой комментарий;
1 - комментарий, вводимый при
согласовании/утверждении вводимый в случае положительного
ответа;
2 - комментарий, вводимый при
согласовании/утверждении вводимый в случае отрицательного
ответа;
3 - комментарий - результат выполнения
работы;
4 - автокомментарий об удалении работы;
is_editable - возможно ли изменить
комментарий (true - да,
false - нет);
is_deletable - возможно ли удалить
комментарий (true - да,
false - нет).
Пример возвращаемых массивов
Метод, позволяющий возвращать список комментариев:
если getCounters=true:
{
"list": [
{
"commentID": "c1c55f4c-2b86-485b-bcc1-a6e9e1489d78",
"comment": "бла бла бла\n",
"author": {
"userID": "ecb06f77-7ad7-4f54-9479-18fe932be337",
"name": "Абдрешен Л.С."
},
"created": "1421120565000",
"created_label": "7 минут назад",
"type": "0",
"is_editable": "true",
"is_deletable": "true",
"comment_icon_type": "comment_icon"
},
{
"commentID": "92c22233-f535-4ada-9e55-83e22b473f6e",
"comment": "Документ зарегистрирован за номером {№ Вн.документа}-23-Dec.-14.\n",
"author": {
"userID": "ee71a4c6-888a-4f04-86de-44ab394f5749",
"name": "Слепаков И.И."
},
"created": "1419328932000",
"created_label": "23 декабря 2014 16:02",
"type": "1",
"is_editable": "false",
"is_deletable": "false",
"comment_icon_type": "comment_icon_green"
}
],
"count": "2"
}
если getCounters=false:
[
{
"commentID": "c1c55f4c-2b86-485b-bcc1-a6e9e1489d78",
"comment": "бла бла бла\n",
"author": {
"userID": "ecb06f77-7ad7-4f54-9479-18fe932be337",
"name": "Абдрешен Л.С."
},
"created": "1421120565000",
"created_label": "1 минут назад",
"type": "0",
"is_editable": "true",
"is_deletable": "true",
"comment_icon_type": "comment_icon"
},
{
"commentID": "92c22233-f535-4ada-9e55-83e22b473f6e",
"comment": "Документ зарегистрирован за номером {№ Вн.документа}-23-Dec.-14.\n",
"author": {
"userID": "ee71a4c6-888a-4f04-86de-44ab394f5749",
"name": "Слепаков И.И."
},
"created": "1419328932000",
"created_label": "23 декабря 2014 16:02",
"type": "1",
"is_editable": "false",
"is_deletable": "false",
"comment_icon_type": "comment_icon_green"
}
]