|
|
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, |
|
|
} = BaseApi; |
|
|
|
|
|
export default class drinkWaterUnit extends BaseApi { |
|
|
description = "سرویس تولید کننده آب آشامیدنی"; |
|
|
/////////////////////////////// |
|
|
|
|
|
@GET |
|
|
@description("دریافت لیست تولید کننده آب آشامیدنیها") |
|
|
@request( |
|
|
optional(_.pick(db.drinkWaterUnit.validation, db.drinkWaterUnit.getList)) |
|
|
) |
|
|
@response() |
|
|
list = async (data) => { |
|
|
const where = _.pick(omitNull(data), db.drinkWaterUnit.getList); |
|
|
|
|
|
for (const key in where) { |
|
|
if (db.drinkWaterUnit.validation[key].type == "string") |
|
|
where[key] = { [Op.substring]: where[key] }; |
|
|
} |
|
|
|
|
|
const result = await db.drinkWaterUnit.findAll({ |
|
|
where, |
|
|
order: [ |
|
|
["rate", "ASC"], |
|
|
["universityName", "ASC"], |
|
|
], |
|
|
}); |
|
|
|
|
|
return result; |
|
|
}; |
|
|
|
|
|
@GET |
|
|
@description("دریافت اطلاعات تولید کننده آب آشامیدنی") |
|
|
@request(_.pick(db.drinkWaterUnit.validation, ["id"])) |
|
|
@response() |
|
|
info = async (data) => { |
|
|
const result = await db.drinkWaterUnit.findByPk(data.id, { |
|
|
raw: true, |
|
|
attributes: ["brand"], |
|
|
}); |
|
|
|
|
|
if (!result) |
|
|
return { |
|
|
statusCode: 404, |
|
|
message: "شناسه تولید کننده آب آشامیدنی نامعتبر است.", |
|
|
}; |
|
|
|
|
|
return result; |
|
|
}; |
|
|
|
|
|
@POST |
|
|
@description("افزودن تولید کننده آب آشامیدنی") |
|
|
@request(_.pick(db.drinkWaterUnit.validation, db.drinkWaterUnit.add)) |
|
|
@response(_.pick(db.drinkWaterUnit.validation, ["id"])) |
|
|
add = async (data) => { |
|
|
const checkedData = _.pick(omitNull(data), db.drinkWaterUnit.add); |
|
|
|
|
|
checkedData.rate = checkedData.rate.upperCase(); |
|
|
|
|
|
if (!["A", "B", "C", "D"].includes(checkedData.rate)) |
|
|
return { |
|
|
statusCode: 400, |
|
|
message: "بروز خطا در اطلاعات ورودی", |
|
|
}; |
|
|
|
|
|
const result = await db.drinkWaterUnit.create(checkedData); |
|
|
if (!result) |
|
|
return { |
|
|
statusCode: 400, |
|
|
message: "درخواست انجام نشد.", |
|
|
}; |
|
|
|
|
|
return { id: result.dataValues.id }; |
|
|
}; |
|
|
|
|
|
@PUT |
|
|
@description("ویرایش تولید کننده آب آشامیدنی") |
|
|
@request({ |
|
|
id: Joi.number().required().description("شناسه تولید کننده آب آشامیدنی"), |
|
|
...optional( |
|
|
_.pick(db.drinkWaterUnit.validation, db.drinkWaterUnit.updateList) |
|
|
), |
|
|
}) |
|
|
@response({}) |
|
|
update = async (data) => { |
|
|
const checkedData = _.pick(omitNull(data), db.drinkWaterUnit.updateList); |
|
|
if (!Object.keys(checkedData).length) |
|
|
return { |
|
|
statusCode: 400, |
|
|
message: "بروز خطا در اطلاعات ورودی", |
|
|
}; |
|
|
|
|
|
if (checkedData.rate) { |
|
|
checkedData.rate = checkedData.rate.upperCase(); |
|
|
if (!["A", "B", "C", "D"].includes(checkedData.rate)) |
|
|
return { |
|
|
statusCode: 400, |
|
|
message: "درخواست انجام نشد.", |
|
|
}; |
|
|
} |
|
|
|
|
|
const { id } = data; |
|
|
|
|
|
const result = await db.drinkWaterUnit.update(checkedData, { |
|
|
where: { id }, |
|
|
}); |
|
|
|
|
|
if (!result) |
|
|
return { |
|
|
statusCode: 400, |
|
|
message: "شناسه واحد آب آشامیدنی نامعتبر است.", |
|
|
}; |
|
|
|
|
|
return result; |
|
|
}; |
|
|
|
|
|
@DELETE |
|
|
@description("حذف تولید کننده آب آشامیدنی") |
|
|
@request(_.pick(db.drinkWaterUnit.validation, ["id"])) |
|
|
@response({}) |
|
|
delete = async (data) => { |
|
|
const { id } = data; |
|
|
|
|
|
const result = await db.drinkWaterUnit.destroy({ where: { id } }); |
|
|
|
|
|
if (!result) |
|
|
return { |
|
|
statusCode: 404, |
|
|
message: "شناسه تولید کننده آب آشامیدنی نامعتبر است.", |
|
|
}; |
|
|
|
|
|
return {}; |
|
|
}; |
|
|
}
|
|
|
|