Сортировка видов работ
Для удобства работы клиентов с видами работ предлагается организовать ручную сортировку видов работ.
Пользователи клиентских программ смогут сортировать вручную список видов работ.
Отсортированный список будет сохраняться в БД и отдаваться клиентам при последующих запросах списка (в ответе к данному запросу, а также в ответах на GET-запросы /newstype, /newstype/all).
Реализация
1. В БД в таблицу issues.types будет добавлена колонка order_key типа integer, которая по умолчанию примет значения колонки id для каждого элемента таблицы.
2. Для ручной сортировки будет добавлен POST-запрос /newstype/sort, который можно будет выполнить неоднократно.
3. Запрос будет доступен пользователям со следующими ролями: главный администратор, главный инспектор, администратор организации, инспектор организации.
4. В теле POST-запроса /newstype/sort клиент должен будет передать id-шники видов работ в отсортированном им порядке:
NewstypesSortJson.txt
{«ids»:[868,708,14,165,7,9,13,2,10,3,1,992,970,1330,1331,1009,1332,1334,1333,1329,1327,829,1328,608,649,8,749,1274,1279,1284,1289,1294,1299,809,
12,888,4,1030,11,5,908,909,1326,6,871,872,689]}
// IN --->
{ "ids": [4, 1, 3, 6, 2, 5]
}
Если переданный список id-шников будет некорректным, в ответе будет выдан BadRequest.
Корректность списка id-шников проверяется по следующим пунктам:
- неверный формат переданных данных,
- передача несуществующих id-шников,
- передача неверного количества id-шников (должны быть переданы все существующие в БД id-шники).
5. В БД будет произведен UPDATE: порядок полученных id-шников будет занесен в таблицу issues.types в столбец order_key.
6. Пользователю в ответ на POST-запрос /newstype/sort, а также в ответ на GET-запросы /newstype, /newstype/all будет выдаваться список видов работ, отсортированный в указанном порядке.
Ответ на POST-запрос /newstype/sort будет аналогичен ответу на GET /newstype/all.
// OUT <---
{
"res": 1,
"resText": "",
"newstype": [
{
"id": "4",
"name": "Аварии",
"icon": "1_icon_7.jpg",
"icon3d": "2.png",
"period_of_review": null,
"period_of_review_in_sec": null,
"deadline_type": "AT_CREATE",
"departments": [
"1",
"3"
],
"group_id": "7",
"order_key": "1",
...
},
{
"id": "1",
"name": "Неисправность коммуникаций",
"icon": "icon_149.png",
"icon3d": "icon3d_149.png",
"period_of_review": null,
"period_of_review_in_sec": null,
"deadline_type": "AT_CREATE",
"departments": [
"1",
"2"
],
"group_id": null,
"order_key": "2",
...
},
...
]
}
7. Для новых видов работ order_key будет назначаться равным id.
8. Сортировка внутри групп видов работ будет реализована на клиентах.