|
|
import BaseApi from "~/src/api/BaseApi"; |
|
|
import _ from "lodash"; |
|
|
import { Joi } from "celebrate"; |
|
|
import db from "../../database"; |
|
|
|
|
|
const { |
|
|
description, |
|
|
request, |
|
|
test, |
|
|
response, |
|
|
GET, |
|
|
POST, |
|
|
PUT, |
|
|
DELETE, |
|
|
SOCKET, |
|
|
isPublic, |
|
|
cache, |
|
|
PRIVATE, |
|
|
} = BaseApi; |
|
|
|
|
|
export default class waterSample extends BaseApi { |
|
|
description = "سرویس نمونه گیری آب"; |
|
|
/////////////////////////////// |
|
|
|
|
|
@PRIVATE |
|
|
findWorkFlowId = (type) => { |
|
|
const typePeaces = type.split(" "); |
|
|
if (typePeaces.includes("آشامیدنی")) return 11; |
|
|
else if (typePeaces.includes("سامانه")) return 14; |
|
|
else if (typePeaces.includes("معدنی")) return 11; |
|
|
else if (typePeaces.includes("بسته")) return 11; |
|
|
else if (typePeaces.includes("استخر")) return 15; |
|
|
else if (typePeaces.includes("شناگاه")) return 17; |
|
|
else if (typePeaces.includes("یخ")) return 13; |
|
|
else if (type.split("/").includes("فاضلاب")) return 16; |
|
|
else return -1; |
|
|
}; |
|
|
|
|
|
@GET |
|
|
@description("دریافت لیست نمونه گیری آبها") |
|
|
@request( |
|
|
optional({ |
|
|
..._.pick(db.waterSample.validation, db.waterSample.getList), |
|
|
pageIndex: Joi.number().min(1).description("شمارهی صفحه"), |
|
|
pageSize: Joi.number().min(1).description("سایز صفحه"), |
|
|
sort: Joi.string().description("پارامتر مرتب سازی"), |
|
|
asc: Joi.bool().description("آیا خروجی به صورت صعودی مرتب شود؟"), |
|
|
processId: Joi.number().description("شناسهی فرایند"), |
|
|
checklistId: Joi.number().description("شناسهی چکلیست"), |
|
|
}) |
|
|
) |
|
|
@response() |
|
|
list = async (data) => { |
|
|
data = omitNull(data); |
|
|
|
|
|
let where = _.pick(data, db.waterSample.getList); |
|
|
for (const key in where) { |
|
|
if (db.waterSample.validation[key].type == "string") |
|
|
where[key] = { [Op.substring]: where[key] }; |
|
|
} |
|
|
|
|
|
const limit = +data.pageSize || 20; |
|
|
const offset = |
|
|
data.pageIndex && data.pageSize |
|
|
? data.pageSize * (data.pageIndex - 1) |
|
|
: 0; |
|
|
|
|
|
let order = ["id"]; |
|
|
if (data.sort && (data.asc == false || data.asc == "false")) { |
|
|
order = [[data.sort, "DESC"]]; |
|
|
} |
|
|
if (data.sort && (data.asc == true || data.asc == "true" || !data.asc)) { |
|
|
order = [[data.sort, "ASC"]]; |
|
|
} |
|
|
|
|
|
const result = await db.waterSample.findAndCountAll({ |
|
|
where, |
|
|
order, |
|
|
offset, |
|
|
limit, |
|
|
raw: true, |
|
|
}); |
|
|
|
|
|
return result; |
|
|
}; |
|
|
|
|
|
@GET |
|
|
@description("دریافت اطلاعات نمونه گیری آب") |
|
|
@request(_.pick(db.waterSample.validation, ["id"])) |
|
|
@response() |
|
|
info = async (data) => { |
|
|
const result = await db.waterSample.findByPk(data.id, { |
|
|
raw: true, |
|
|
}); |
|
|
|
|
|
if (!result) |
|
|
return { |
|
|
statusCode: 404, |
|
|
message: "شناسه نمونه گیری آب نامعتبر است.", |
|
|
}; |
|
|
|
|
|
return result; |
|
|
}; |
|
|
|
|
|
@POST |
|
|
@description("افزودن نمونه گیری آب") |
|
|
@request(_.pick(db.waterSample.validation, db.waterSample.add)) |
|
|
@response(_.pick(db.waterSample.validation, ["id"])) |
|
|
add = async (data) => { |
|
|
const checkedData = _.pick(omitNull(data), db.waterSample.add); |
|
|
|
|
|
checkedData.workflowId = this.findWorkFlowId(checkedData.type); |
|
|
|
|
|
const result = await db.waterSample.create(checkedData); |
|
|
|
|
|
if (!result) |
|
|
return { |
|
|
statusCode: 400, |
|
|
message: "بروز خطا. درخواست انجام نشد", |
|
|
}; |
|
|
|
|
|
return { id: result.dataValues.id }; |
|
|
}; |
|
|
|
|
|
@PUT |
|
|
@description("ویرایش نمونه گیری آب") |
|
|
@request({ |
|
|
id: Joi.number().required().description("شناسه نمونه گیری آب"), |
|
|
...optional(_.pick(db.waterSample.validation, db.waterSample.updateList)), |
|
|
}) |
|
|
@response({}) |
|
|
update = async (data) => { |
|
|
const checkedData = _.pick(omitNull(data), db.waterSample.updateList); |
|
|
if (!Object.keys(checkedData).length) |
|
|
return { |
|
|
statusCode: 400, |
|
|
message: "بروز خطا در اطلاعات ورودی", |
|
|
}; |
|
|
|
|
|
const { id } = data; |
|
|
|
|
|
if (checkedData.type) |
|
|
checkedData.workflowId = this.findWorkFlowId(checkedData.type); |
|
|
|
|
|
const result = await db.waterSample.update(checkedData, { |
|
|
where: { id }, |
|
|
}); |
|
|
|
|
|
if (!result) |
|
|
return { |
|
|
statusCode: 400, |
|
|
message: "شناسه واحد آب آشامیدنی نامعتبر است.", |
|
|
}; |
|
|
|
|
|
return result; |
|
|
}; |
|
|
|
|
|
@DELETE |
|
|
@description("حذف نمونه گیری آب") |
|
|
@request(_.pick(db.waterSample.validation, ["id"])) |
|
|
@response({}) |
|
|
delete = async (data) => { |
|
|
const { id } = data; |
|
|
|
|
|
const result = await db.waterSample.destroy({ where: { id } }); |
|
|
|
|
|
if (!result) |
|
|
return { |
|
|
statusCode: 404, |
|
|
message: "شناسه نمونه گیری آب نامعتبر است.", |
|
|
}; |
|
|
|
|
|
return {}; |
|
|
}; |
|
|
}
|
|
|
|