mirror of
https://github.com/franjsco/tick3t-api
synced 2025-01-04 19:09:12 +01:00
add controller: ticket
This commit is contained in:
parent
1d7cecae40
commit
3d9acde82f
128
src/controllers/ticket.js
Normal file
128
src/controllers/ticket.js
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
import TicketModel from '../models/ticket';
|
||||||
|
|
||||||
|
|
||||||
|
export const getAll = (req, res, next) => {
|
||||||
|
const { page, status, id } = req.query;
|
||||||
|
|
||||||
|
const filter = {};
|
||||||
|
|
||||||
|
if (status) {
|
||||||
|
filter.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (id) {
|
||||||
|
filter.ticketId = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
limit: 5,
|
||||||
|
page: Number.parseInt(page, 10) || 1,
|
||||||
|
sort: { createdAt: -1 },
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
TicketModel.paginate(filter, options, (err, result) => {
|
||||||
|
if (err) {
|
||||||
|
next(err);
|
||||||
|
}
|
||||||
|
if (result.docs.length) {
|
||||||
|
res.json({
|
||||||
|
status: 'success',
|
||||||
|
message: 'Tickets found',
|
||||||
|
currentPage: result.page,
|
||||||
|
totalPages: result.totalPages,
|
||||||
|
hasNextPage: result.hasNextPage,
|
||||||
|
totalDocs: result.totalDocs,
|
||||||
|
data: result.docs,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
res.json({
|
||||||
|
success: false,
|
||||||
|
message: 'Tickets not found',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export const updateById = (req, res, next) => {
|
||||||
|
const { ticketId } = req.params;
|
||||||
|
TicketModel.findOneAndUpdate({ ticketId }, req.body, { new: true }, (err, ticket) => {
|
||||||
|
if (err) {
|
||||||
|
next(err);
|
||||||
|
}
|
||||||
|
res.json({
|
||||||
|
status: 'success',
|
||||||
|
message: 'Ticket updated',
|
||||||
|
data: ticket,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const deleteById = (req, res, next) => {
|
||||||
|
TicketModel.findByIdAndRemove(req.params.ticketId, (err, ticket) => {
|
||||||
|
if (err) {
|
||||||
|
next(err);
|
||||||
|
}
|
||||||
|
res.json({
|
||||||
|
status: 'success',
|
||||||
|
message: 'Ticket deleted',
|
||||||
|
data: null,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export const getById = (req, res, next) => {
|
||||||
|
const { ticketId } = req.params;
|
||||||
|
|
||||||
|
TicketModel.findOne({ ticketId }, (err, ticketInfo) => {
|
||||||
|
if (err) {
|
||||||
|
next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ticketInfo) {
|
||||||
|
res.json({
|
||||||
|
success: true,
|
||||||
|
message: 'Ticket Found',
|
||||||
|
data: ticketInfo,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
res.status(404).send({
|
||||||
|
success: false,
|
||||||
|
message: 'Ticket Not Found',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export const create = (req, res, next) => {
|
||||||
|
const generatedTicketId = Math.random().toString(36).substr(2, 9);
|
||||||
|
|
||||||
|
const ticketMod = new TicketModel({
|
||||||
|
ticketId: generatedTicketId,
|
||||||
|
status: 'open',
|
||||||
|
firstName: req.body.firstName,
|
||||||
|
lastName: req.body.lastName,
|
||||||
|
email: req.body.email,
|
||||||
|
type: req.body.type,
|
||||||
|
subject: req.body.subject,
|
||||||
|
message: req.body.message,
|
||||||
|
});
|
||||||
|
|
||||||
|
ticketMod.save((err, ticket) => {
|
||||||
|
if (err) {
|
||||||
|
next(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json({
|
||||||
|
success: true,
|
||||||
|
message: 'Ticket added',
|
||||||
|
data: {
|
||||||
|
ticketId: generatedTicketId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user