App.js
const express = require('express');
const cors = require('cors');
const app = express();
const port = 3001;
const flightRouter = require('./router/flightRouter');
const bookRouter = require('./router/bookRouter');
const airportRouter = require('./router/airportRouter');
app.use(cors());
app.use(express.json());
app.use('/flight', flightRouter);
app.use('/book', bookRouter);
app.use('/airport', airportRouter);
app.get('/', (req, res) => {
res.status(200).send('Welcome, States Airline!');
});
app.use((req, res, next) => {
res.status(404).send('Not Found!');
});
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send({
message: 'Internal Server Error',
stacktrace: err.toString()
});
});
app.listen(port, () => {
console.log(`[RUN] StatesAirline Server... | http://localhost:${port}`);
});
module.exports = app;
bookRouter.js
router.get('/', findAll);
router.get('/:phone', findByPhone);
router.get('/:phone/:flight_uuid', findByPhoneAndFlightId);
router.post('/', create);
router.delete('/:booking_uuid', deleteByBookingId);
module.exports = router;
flightController.js
const flights = require('../repository/flightList');
const fs = require('fs');
module.exports = {
findAll: (req, res) => {
const { departure_times, arrival_times, destination, departure } =
req.query;
if (Object.keys(req.query).length === 0) return res.json(flights);
else if (departure_times !== undefined && arrival_times !== undefined) {
const data = flights.filter(
flight =>
flight.departure_times === departure_times &&
flight.arrival_times === arrival_times
);
return res.json(data);
} else if (departure !== undefined && destination !== undefined) {
const data = flights.filter(
flight =>
flight.departure === departure && flight.destination === destination
);
return res.json(data);
} else {
return res.json('Incorrect request');
}
},
findById: (req, res) => {
const { uuid } = req.params;
const data = flights.filter(flight => flight.uuid === uuid);
return res.json(data);
},
update: (req, res) => {
const { uuid } = req.params;
const bodyData = req.body;
const beUpdatedIdx = flights.findIndex(flight => flight.uuid === uuid);
const updatedFlight = { ...flights[beUpdatedIdx], ...bodyData };
flights.splice(beUpdatedIdx, 1, updatedFlight);
return res.status(200).json(updatedFlight);
},
};
bookController.js
const { v4: uuid } = require('uuid');
let booking = [];
module.exports = {
findAll: (req, res) => {
return res.status(200).json(booking);
}
,
findByPhone: (req, res) => {
const {phone} = req.params;
const data = booking.filter(book => book.phone === phone);
return res.status(200).json(data);
},
findByPhoneAndFlightId: (req,res) => {
const {phone, flight_uuid} = req.params;
const data = booking.filter(book => book.phone === phone && book.flight_uuid === flight_uuid);
return res.status(200).json(data);
},
create: (req, res) => {
const booking_uuid = uuid();
const { flight_uuid, name, phone } = req.body;
if(booking.find(book => book.phone === phone && book.flight_uuid === flight_uuid )){
return res.status(409).json("It's Already booked.")
}
else{
booking.unshift({booking_uuid, flight_uuid, name, phone});
res.location(`/book/${booking_uuid}`);
return res.status(201).json(booking[0])
}
},
deleteByBookingId: (req, res) => {
const {booking_uuid} = req.params;
booking = booking.filter(book => book.booking_uuid !== booking_uuid);
return res.status(200).json({booking_uuid});
}
};