Created
June 30, 2020 16:51
-
-
Save prajwal-stha/33a92a80fb4644037d965b9d0f266fbd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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