Skip to content

Instantly share code, notes, and snippets.

@prajwal-stha
Created June 30, 2020 16:51
Show Gist options
  • Save prajwal-stha/33a92a80fb4644037d965b9d0f266fbd to your computer and use it in GitHub Desktop.
Save prajwal-stha/33a92a80fb4644037d965b9d0f266fbd to your computer and use it in GitHub Desktop.
const Activity = require('../../models/OnTheJobTraining/Activity')
const MemberActivity = require('../../models/OnTheJobTraining/MemberActivity')
const MemberActivityHours = require('../../models/OnTheJobTraining/MemberActivityHours')
const ActivityMedia = require('../../models/OnTheJobTraining/ActivityMedia')
const mongoose = require('mongoose');
/**
* List all the activities
* @param req
* @param res
*/
exports.listActivities = (req, res) => {
Activity.find()
.select('-__v')
.populate('onTheJobTraining', '-__v')
.exec()
.then(docs => {
if(docs.length > 0){
res.status(200).json({
status: 'success',
data: docs,
count: docs.length,
});
}else {
res.status(404).json({
status: 'error',
message: 'Empty Records'
});
}
})
.catch(err => {
res.status(503).json({
status: 'error',
error: err
});
});
}
/**
* Create New Activity
* @param req
* @param res
*/
exports.createActivity = (req, res) => {
const activity = new Activity({
_id: new mongoose.Types.ObjectId(),
name: req.body.name,
onTheJobTraining: req.body.onTheJobTraining,
memberApprenticeShip: req.body.memberApprenticeShip,
});
activity.save()
.then(result => {
res.status(200).json({
status: 'success',
data: activity
});
})
.catch(err => {
res.status(503).json({
status:'error',
error: err
});
});
};
/**
* Create Activities
* @param req
* @param res
*/
exports.createActivities = async (req, res) => {
let response = []
try{
/**
* @internal Request body 'activities' should be JSON stringified
* @type {IoTAnalytics.PipelineActivities | StepFunctions.ActivityList}
*/
const activities = typeof req.body.activities === 'string' ? JSON.parse(req.body.activities) : req.body.activities
await Promise.all(activities.map(async (activity) => {
let _activity = new Activity({
_id: new mongoose.Types.ObjectId(),
name: activity.name,
onTheJobTraining: activity.onTheJobTraining,
/**
* Off The Job USA
*/
memberApprenticeShip: activity.memberApprenticeShip || null
});
let newActivity = await _activity.save();
response.push(newActivity);
}));
res.status(200).json({
status: 'success',
data: response
});
} catch(err){
res.status(503).json({
status: 'error',
error: err
});
}
};
/**
* Get Single Activity
* @param req
* @param res
*/
exports.getOne = (req, res) => {
let target = req.params.activityId;
Activity.findById(target)
.select('-__v')
.populate('onTheJobTraining', '-__v')
.populate('memberActivity','-__v')
.exec()
.then(doc => {
if(doc){
res.status(200).json({
status: 'success',
data: doc
});
}else {
res.status(404).json({
status: 'fail',
message: 'No valid Records found'
});
}
})
.catch(err => {
res.status(503).json({
status: 'error',
error: err
});
});
}
/**
* Update the activity
* @param req
* @param res
*/
exports.update = (req, res) => {
let activityId = req.params.activityId;
Activity.update({
_id: activityId
},{
$set: req.body
})
.exec()
.then(result => {
res.status(200).json({
status:'success',
message: 'Successfully Updated'
});
})
.catch(err => {
res.status(503).json({
status: 'error',
error:err
});
});
}
/**
* Update Activities
* @param req
* @param res
*/
exports.updateActivities = async (req, res) => {
let response = []
try{
/**
* @internal Request body 'activities' should be JSON stringified
* @type {IoTAnalytics.PipelineActivities | StepFunctions.ActivityList}
*/
const activities = typeof req.body.activities === 'string' ? JSON.parse(req.body.activities) : req.body.activities
await Promise.all(activities.map(async (activity) => {
let _activity = Activity.update({
_id: activity.id
}, {
$set: activity
});
let updateActivity = await _activity.exec();
response.push(updateActivity);
}));
res.status(200).json({
status: 'success',
data: response
});
} catch(err){
res.status(503).json({
status: 'error',
error: err
});
}
};
/**
* Remove the activity
* @param req
* @param res
*/
exports.destroy = async (req, res) => {
let activityId = req.params.activityId;
const memberActivities = await MemberActivity.find({ activity: activityId })
Activity.remove({ _id: activityId })
.exec()
.then(async (result) => {
await MemberActivity.remove({ activity: activityId }).exec()
await Promise.all(memberActivities.map(async (memberActivity) => {
await ActivityMedia.remove({ memberActivity: memberActivity._id }).exec()
await MemberActivityHours.remove({ memberActivity: memberActivity._id }).exec()
}))
res.status(200).json({
status: 'success',
message: 'Successfully Deleted'
});
})
.catch(err => {
res.status(503).json({
status: 'error',
error: err
});
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment