Формулировка проблемы: для реализации нового модуля «Документы» в мобильном клиенте требуется реализовать 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" } ]