Skip to content

Commit

Permalink
Merge 3820474 into e0e33f4
Browse files Browse the repository at this point in the history
  • Loading branch information
chiomadans1759 committed Sep 6, 2019
2 parents e0e33f4 + 3820474 commit 078199f
Show file tree
Hide file tree
Showing 20 changed files with 1,355 additions and 13 deletions.
69 changes: 69 additions & 0 deletions src/controllers/facilities.controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import models from '../db/models';
import Response from '../utils/response.utils';

const { Facility, Room } = models;

/**
* This class creates the facilities controllers
*/
export default class FacilitiesController {
/**
* @param {object} req The facility details
* @param {object} res The facility details returned after listing a facility
* @returns {object} A newly created facility
*/
static async createFacilities(req, res) {
const { facilitiesValues } = req.body;
try {
const facility = await Facility.create(
facilitiesValues,
{ returning: true }
);
return Response.Success(res, facility, 201);
} catch (error) {
console.log(error)
return Response.InternalServerError(res, 'Could not register facility');
}
}

/**
* @param {object} req The room details
* @param {object} res The room details returned after creating a room
* @returns {object} A newly registered room
*/
static async createRoom(req, res) {
const { roomsValues } = req.body;
try {
const room = await Room.create(
roomsValues,
{ returning: true }
);

return Response.Success(res, room, 201);
} catch (error) {
return Response.InternalServerError(res, 'Could not register rooms');
}
}

/**
* @param {object} req
* @param {object} res The facilities being returned
* @returns {object} All the facilities on the facilities table
*/
static async getAllFacilities(req, res) {
try {
const facilities = await Facility.findAll({ returning: true });

if (facilities.lenght < 1) {
return res.status(404).json({
status: 'success',
error: 'There is no facilities listed on barefoot nomad at this time'
});
}

return Response.Success(res, facilities, 200);
} catch (error) {
return Response.InternalServerError(res, 'Could not return facilities');
}
}
}
1 change: 1 addition & 0 deletions src/db/models/like.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@ module.exports = (sequelize) => {
onDelete: 'CASCADE'
});
};

return Like;
};
1 change: 1 addition & 0 deletions src/db/models/request.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,6 @@ module.exports = (sequelize, DataTypes) => {
onDelete: 'CASCADE'
});
};

return Request;
};
1 change: 1 addition & 0 deletions src/db/models/room.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,6 @@ module.exports = (sequelize, DataTypes) => {
onDelete: 'CASCADE'
})
);

return Room;
};
2 changes: 1 addition & 1 deletion src/db/seeders/20190828065701-users-seeder.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ module.exports = {
preferred_language: 'Latin',
preferred_currency: 'GBP',
location: 'Texas',
role: 'requester',
role: 'travel_admin',
created_at: new Date(),
updated_at: new Date()
},
Expand Down
1 change: 0 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ app.use((req, res, next) => {
app.use(express.json());
app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(morgan(':remote-addr - [:date] ":method :url" :status', { stream: logger.stream }));
app.use(passport.initialize());
Expand Down
28 changes: 28 additions & 0 deletions src/middlewares/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,34 @@ const auth = {
});
}
},

async verifyTravelAdmin(req, res, next) {
try {
let token;

if (req.headers.authorization) {
token = req.headers.authorization;
} else if (req.headers['x-access-token']) {
token = req.headers['x-access-token'];
} else if (req.headers.token) {
token = req.headers.token;
}
const decoded = auth.verifyToken(token);

if (!((decoded.payload.role === 'super_admin') || (decoded.payload.role === 'travel_admin'))) {
return res.status(401).json({
status: 'error',
error: 'Hi! You are not permitted to perform this action',
});
}
return next();
} catch (error) {
return res.status(500).json({
status: 'error',
error: 'Error Accessing Route',
});
}
},
};

export default auth;
47 changes: 47 additions & 0 deletions src/middlewares/facilities.middleware.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import FacilityUtils from '../utils/facility.utils';
import models from '../db/models';

const { Facility } = models;
const { getFacilitiesDetails } = FacilityUtils;
const { getRoomsDetails } = FacilityUtils;

const FacilitiesChecks = {
async getFacilitiesValues(req, res, next) {
const facilitiesValues = getFacilitiesDetails(req.body);
const isEmpty = Object.keys(facilitiesValues).length === 0;

if (!isEmpty) {
// make facilitiesValues available to the next middleware
req.body.facilitiesValues = facilitiesValues;
if (typeof (facilitiesValues.images) === 'string') {
const { images } = facilitiesValues;
req.body.facilitiesValues = { ...facilitiesValues, images: images.split(',') };
req.body.images = images.split(',');
}
return next();
}
res.status(422).json({
status: 'error',
error: 'You have not entered any facilities details'
});
},

async getRoomsValues(req, res, next) {
const roomsValues = getRoomsDetails(req.body);
// ensures the user supplies, at least, one value to update
const isEmpty = Object.keys(roomsValues).length === 0;

if (!isEmpty) {
// make userValues available to the next middleware
req.body.roomsValues = roomsValues;
return next();
}
// Return a 422 error if user does not supply values to update.
res.status(422).json({
status: 'error',
error: 'You have not entered any room details'
});
}
};

export default FacilitiesChecks;
28 changes: 28 additions & 0 deletions src/routes/api/facilities.router.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import express from 'express';
import auth from '../../middlewares/auth';
import facilitiesController from '../../controllers/facilities.controller';
import validateFacilities from '../../validation/facilities/facilities.validation';
import validateRooms from '../../validation/facilities/rooms.validation';
import FacilitiesChecks from '../../middlewares/facilities.middleware';

const router = express.Router();

/* Requests Routes Here */
router.post('/facilities',
auth.verifyUserToken,
auth.verifyTravelAdmin,
FacilitiesChecks.getFacilitiesValues,
validateFacilities,
facilitiesController.createFacilities);

router.post('/facilities/rooms',
auth.verifyUserToken,
auth.verifyTravelAdmin,
FacilitiesChecks.getRoomsValues,
validateRooms,
facilitiesController.createRoom);

router.get('/facilities',
facilitiesController.getAllFacilities);

export default router;
3 changes: 3 additions & 0 deletions src/routes/api/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@ import express from 'express';
import commentRouter from './comment.router';
import authRouter from './auth.router';
import requestRouter from './requests.router';
import facilitiesRouter from './facilities.router';


const router = express.Router();

router.use('/comment', commentRouter);
router.use('/auth', authRouter);
router.use('/', requestRouter);
router.use('/', facilitiesRouter);


export default router;
2 changes: 1 addition & 1 deletion src/routes/api/requests.router.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Auth from '../../middlewares/auth.middleware';
const router = express.Router();

/* Requests Routes Here */
router.patch('/request/:id',
router.patch('/requests/:id',
auth.verifyUserToken,
auth.verifyManager,
validateRequests.validateRequestsID,
Expand Down
3 changes: 2 additions & 1 deletion src/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import AuthRouter from './api/auth.router';
import RequestsRoutes from './api/requests.router';
import CommentRoutes from './api/comment.router';
import UserRouter from './api/user.router';
import FacilitiesRouter from './api/facilities.router';

const router = [RequestsRoutes, AuthRouter, UserRouter, CommentRoutes];
const router = [RequestsRoutes, AuthRouter, UserRouter, CommentRoutes, FacilitiesRouter];

export default router;
Loading

0 comments on commit 078199f

Please sign in to comment.