Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crud comanda mesa #11

Merged
merged 11 commits into from
Sep 19, 2021
125 changes: 125 additions & 0 deletions src/controllers/orderController.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
import { Request, Response } from "express";
import database from "../db";

const create = async (
request: Request,
response: Response
): Promise<Response> => {
try {
const fieldsToValidate = ["status", "idTable", "idClient", "nameClient"];

fieldsToValidate.forEach((field: string): Response => {
if (!request.body.order[field]) {
return response.status(400).json({
success: false,
message: `O campo ${field} é obrigatório.`,
});
}
return null;
});

return response.json({
success: true,
order: await database.order.create(request.body.order),
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

const getAll = async (
request: Request,
response: Response
): Promise<Response> => {
try {
const filters = {};
if (request.query.category) filters.category = request.query.category;

return response.json({
success: true,
orders: await database.order.findAll({
where: {
...filters,
},
}),
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

const getOne = async (
request: Request,
response: Response
): Promise<Response> => {
try {
return response.json({
success: true,
order: await database.order.findByPk(request.params.id),
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

const edit = async (
request: Request,
response: Response
): Promise<Response> => {
try {
await database.order.update(request.body.order, {
where: { idOrder: request.params.id },
});
return response.json({
success: true,
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

const destroy = async (
request: Request,
response: Response
): Promise<Response> => {
try {
await database.order.destroy({ where: { idOrder: request.params.id } });
return response.json({
success: true,
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

export default { create, getAll, getOne, edit, destroy };
112 changes: 112 additions & 0 deletions src/controllers/tableController.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import { Request, Response } from "express";
import database from "../db";

const create = async (
request: Request,
response: Response
): Promise<Response> => {
try {
if (!request.body.table.cpfWaiter)
return response.status(400).json({
success: false,
message: "O campo cpfGarcom é obrigatório",
});

return response.json({
success: true,
table: await database.table.create(request.body.table),
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

const getAll = async (
request: Request,
response: Response
): Promise<Response> => {
try {
return response.json({
success: true,
tables: await database.table.findAll(),
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

const getOne = async (
request: Request,
response: Response
): Promise<Response> => {
try {
return response.json({
success: true,
table: await database.table.findByPk(request.params.id),
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

const edit = async (
request: Request,
response: Response
): Promise<Response> => {
try {
await database.table.update(request.body.table, {
where: { idTable: request.params.id },
});
return response.json({
success: true,
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

const destroy = async (
request: Request,
response: Response
): Promise<Response> => {
try {
await database.table.destroy({ where: { idTable: request.params.id } });
return response.json({
success: true,
});
} catch (error) {
console.log("ERROR ---> ", error);
return response.status(500).json({
success: false,
message:
"Ocorreu um erro ao realizar a operação, tente novamente mais tarde.",
error: error.toString(),
});
}
};

export default { create, getAll, getOne, edit, destroy };
6 changes: 3 additions & 3 deletions src/models/Table.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { BuildOptions, Model, Sequelize, INTEGER, STRING } from "sequelize";

interface TableAttributes {
idMesa: number;
cpfGarcom: string;
cpfWaiter: string;
}
export interface TableModel extends Model<TableAttributes>, TableAttributes {}
export class Table extends Model<TableModel, TableAttributes> {}
Expand All @@ -16,12 +16,12 @@ export function TableFactory(sequelize: Sequelize): TableStatic {
return <TableStatic>sequelize.define(
"tables",
{
idMesa: {
idTable: {
type: INTEGER,
primaryKey: true,
autoIncrement: true,
},
cpfGarcom: {
cpfWaiter: {
type: STRING(11),
references: { model: "employees", key: "cpf" },
},
Expand Down
4 changes: 4 additions & 0 deletions src/routes/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { Router } from "express";
import orderRoutes from "./order";
import tableRoutes from "./table";

import employeeRoutes from "./employee";
import clientRoutes from "./client";
Expand All @@ -24,6 +26,8 @@ routes.get("/", (request, response) => {
});
});

routes.use("/orders", orderRoutes);
routes.use("/table", tableRoutes);
routes.use("/employee", employeeRoutes);
routes.use("/client", clientRoutes);
routes.use("/item", itemRoutes);
Expand Down
26 changes: 26 additions & 0 deletions src/routes/order.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { Router } from "express";
import orderController from "../controllers/orderController";

const routes = Router();

routes.post("/", (request, response) =>
orderController.create(request, response)
);

routes.get("/", (request, response) =>
orderController.getAll(request, response)
);

routes.get("/:id", (request, response) =>
orderController.getOne(request, response)
);

routes.put("/:id", (request, response) =>
orderController.edit(request, response)
);

routes.delete("/:id", (request, response) =>
orderController.destroy(request, response)
);

export default routes;
26 changes: 26 additions & 0 deletions src/routes/table.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { Router } from "express";
import tableController from "../controllers/tableController";

const routes = Router();

routes.post("/", (request, response) =>
tableController.create(request, response)
);

routes.get("/", (request, response) =>
tableController.getAll(request, response)
);

routes.get("/:id", (request, response) =>
tableController.getOne(request, response)
);

routes.put("/:id", (request, response) =>
tableController.edit(request, response)
);

routes.delete("/:id", (request, response) =>
tableController.destroy(request, response)
);

export default routes;