Update ribc.js
- Added processInternRequest: Intern Request accept/reject - Added processTaskRequest: Task Request accept/reject - Removed setRequestStatus and getRequestStatus: status is now in note field of the request itself - Updated addProjectDetails: now can also be used to update details - TaskRequests and InternRequests are requested from cloud for all users (only sent by self) - Minor fixes
This commit is contained in:
parent
d119d40432
commit
83fdfda70d
110
scripts/ribc.js
110
scripts/ribc.js
@ -1,5 +1,6 @@
|
|||||||
(function() {
|
(function() {
|
||||||
const Ribc = window.RIBC = {};
|
const Ribc = window.RIBC = {};
|
||||||
|
const Admin = Ribc.admin = {};
|
||||||
|
|
||||||
Ribc.init = function(isSubAdmin = false) {
|
Ribc.init = function(isSubAdmin = false) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -29,21 +30,21 @@
|
|||||||
|
|
||||||
function refreshGeneralData(isSubAdmin) {
|
function refreshGeneralData(isSubAdmin) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
var generalDataList = ["InternUpdates"]
|
var generalDataList = ["InternUpdates"],
|
||||||
var subAdminOnlyList = []
|
subAdminOnlyList = [],
|
||||||
|
selfOnlyList = [];
|
||||||
if (isSubAdmin) {
|
(isSubAdmin ? generalDataList : selfOnlyList).push("TaskRequests", "InternRequests");
|
||||||
generalDataList.push("TaskRequests", "InternRequests")
|
let promises = [];
|
||||||
subAdminOnlyList.push("RequestStatus")
|
|
||||||
}
|
|
||||||
var promises = []
|
|
||||||
for (let data of generalDataList)
|
for (let data of generalDataList)
|
||||||
promises.push(floCloudAPI.requestGeneralData(data))
|
promises.push(floCloudAPI.requestGeneralData(data))
|
||||||
for (let data of subAdminOnlyList)
|
for (let data of subAdminOnlyList)
|
||||||
promises.push(floCloudAPI.requestGeneralData(data, {
|
promises.push(floCloudAPI.requestGeneralData(data, {
|
||||||
senderID: floGlobals.subAdmins
|
senderID: floGlobals.subAdmins
|
||||||
}));
|
}));
|
||||||
|
for (let data of selfOnlyList)
|
||||||
|
promises.push(floCloudAPI.requestGeneralData(data, {
|
||||||
|
senderID: floDapps.user.id
|
||||||
|
}));
|
||||||
Promise.all(promises)
|
Promise.all(promises)
|
||||||
.then(results => resolve('General Data Refreshed Successfully'))
|
.then(results => resolve('General Data Refreshed Successfully'))
|
||||||
.catch(error => reject(error))
|
.catch(error => reject(error))
|
||||||
@ -69,7 +70,8 @@
|
|||||||
return {
|
return {
|
||||||
floID: data.sender,
|
floID: data.sender,
|
||||||
update: data.message,
|
update: data.message,
|
||||||
time: data.vectorClock.split('_')[0]
|
time: data.vectorClock.split('_')[0],
|
||||||
|
note: data.note
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
internUpdates = internUpdates.filter(data => data.floID in _.internList)
|
internUpdates = internUpdates.filter(data => data.floID in _.internList)
|
||||||
@ -79,6 +81,14 @@
|
|||||||
return internUpdates;
|
return internUpdates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Admin.commentInternUpdate = (vectorClock, comment) => new Promise((resolve, reject) => {
|
||||||
|
if (!(vectorClock in floGlobals.generalDataset("InternUpdates")))
|
||||||
|
return reject("Intern update not found");
|
||||||
|
floCloudAPI.noteApplicationData(vectorClock, comment)
|
||||||
|
.then(result => resolve(result))
|
||||||
|
.catch(error => reject(error))
|
||||||
|
});
|
||||||
|
|
||||||
Ribc.applyForTask = (projectCode, branch, task, comments = '') => new Promise((resolve, reject) => {
|
Ribc.applyForTask = (projectCode, branch, task, comments = '') => new Promise((resolve, reject) => {
|
||||||
floCloudAPI.sendGeneralData([projectCode, branch, task, comments], "TaskRequests")
|
floCloudAPI.sendGeneralData([projectCode, branch, task, comments], "TaskRequests")
|
||||||
.then(result => resolve(result))
|
.then(result => resolve(result))
|
||||||
@ -95,8 +105,6 @@
|
|||||||
Ribc.getInternRating = (floID) => _.internRating[floID];
|
Ribc.getInternRating = (floID) => _.internRating[floID];
|
||||||
Ribc.getAssignedInterns = (projectCode, branch, taskNumber) => _.internsAssigned[projectCode + "_" + branch + "_" + taskNumber]
|
Ribc.getAssignedInterns = (projectCode, branch, taskNumber) => _.internsAssigned[projectCode + "_" + branch + "_" + taskNumber]
|
||||||
|
|
||||||
const Admin = Ribc.admin = {};
|
|
||||||
|
|
||||||
Admin.updateObjects = () => new Promise((resolve, reject) => {
|
Admin.updateObjects = () => new Promise((resolve, reject) => {
|
||||||
floCloudAPI.updateObjectData("RIBC")
|
floCloudAPI.updateObjectData("RIBC")
|
||||||
.then(result => resolve(result))
|
.then(result => resolve(result))
|
||||||
@ -112,54 +120,46 @@
|
|||||||
Admin.addProjectDetails = function(projectCode, details) {
|
Admin.addProjectDetails = function(projectCode, details) {
|
||||||
if (!(projectCode in _.projectMap))
|
if (!(projectCode in _.projectMap))
|
||||||
return "Project not Found!";
|
return "Project not Found!";
|
||||||
_.projectDetails[projectCode] = details
|
if (projectCode in _.projectDetails && typeof projectCode === 'object' && typeof details === 'object')
|
||||||
|
for (let d in details)
|
||||||
|
_.projectDetails[projectCode][d] = details[d];
|
||||||
|
else
|
||||||
|
_.projectDetails[projectCode] = details;
|
||||||
return "added project details for " + projectCode;
|
return "added project details for " + projectCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
Admin.setRequestStatus = (vectorClock, status) => new Promise((resolve, reject) => {
|
|
||||||
floCloudAPI.sendGeneralData({
|
|
||||||
vectorClock,
|
|
||||||
status
|
|
||||||
}, "RequestStatus").then(result => resolve(result)).catch(error => reject(error))
|
|
||||||
});
|
|
||||||
|
|
||||||
const getRequestStatus = Admin.getRequestStatus = function(vectorClock = null) {
|
|
||||||
let requestStatus = Object.values(floGlobals.generalDataset("RequestStatus"));
|
|
||||||
if (vectorClock) {
|
|
||||||
for (let data of requestStatus) {
|
|
||||||
if (data.message.vectorClock === vectorClock)
|
|
||||||
return data.message.status
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
} else {
|
|
||||||
let applicationStatus = {};
|
|
||||||
for (let data of requestStatus)
|
|
||||||
applicationStatus[data.message.vectorClock] = data.message.status
|
|
||||||
return applicationStatus
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Admin.getInternRequests = function(ignoreProcessed = true) {
|
Admin.getInternRequests = function(ignoreProcessed = true) {
|
||||||
var internRequests = Object.values(floGlobals.generalDataset("InternRequests")).map(data => {
|
var internRequests = Object.values(floGlobals.generalDataset("InternRequests")).map(data => {
|
||||||
return {
|
return {
|
||||||
floID: data.sender,
|
floID: data.senderID,
|
||||||
vectorClock: data.vectorClock,
|
vectorClock: data.vectorClock,
|
||||||
name: data.message[0],
|
name: data.message[0],
|
||||||
comments: data.message[1]
|
comments: data.message[1],
|
||||||
|
status: data.note
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
//filter existing interns
|
//filter existing interns
|
||||||
internRequests = internRequests.filter(data => !(data.floID in _.internList))
|
internRequests = internRequests.filter(data => !(data.floID in _.internList))
|
||||||
//filter processed requests
|
//filter processed requests
|
||||||
var applicationStatus = getRequestStatus()
|
|
||||||
if (ignoreProcessed)
|
if (ignoreProcessed)
|
||||||
internRequests = internRequests.filter(data => !(data.vectorClock in applicationStatus))
|
internRequests = internRequests.filter(data => !data.status);
|
||||||
else
|
|
||||||
internRequests.forEach(data => data.status = applicationStatus[data.vectorClock])
|
|
||||||
return internRequests;
|
return internRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
Admin.addIntern = function(floID, internName) {
|
Admin.processInternRequest = function(vectorClock, accept = true) {
|
||||||
|
let request = floGlobals.generalDataset("InternRequests")[vectorClock];
|
||||||
|
if (!request)
|
||||||
|
return "Request not found";
|
||||||
|
var status;
|
||||||
|
if (accept && addIntern(request.senderID, request.message[0]))
|
||||||
|
status = "Accepted";
|
||||||
|
else
|
||||||
|
status = "Rejected";
|
||||||
|
floCloudAPI.noteApplicationData(vectorClock, status).then(_ => null).catch(e => console.error(e))
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
const addIntern = Admin.addIntern = function(floID, internName) {
|
||||||
if (floID in _.internList)
|
if (floID in _.internList)
|
||||||
return false
|
return false
|
||||||
_.internList[floID] = internName
|
_.internList[floID] = internName
|
||||||
@ -177,27 +177,37 @@
|
|||||||
Admin.getTaskRequests = function(ignoreProcessed = true) {
|
Admin.getTaskRequests = function(ignoreProcessed = true) {
|
||||||
var taskRequests = Object.values(floGlobals.generalDataset("TaskRequests")).map(data => {
|
var taskRequests = Object.values(floGlobals.generalDataset("TaskRequests")).map(data => {
|
||||||
return {
|
return {
|
||||||
floID: data.sender,
|
floID: data.senderID,
|
||||||
vectorClock: data.vectorClock,
|
vectorClock: data.vectorClock,
|
||||||
projectCode: data.message[0],
|
projectCode: data.message[0],
|
||||||
branch: data.message[1],
|
branch: data.message[1],
|
||||||
task: data.message[2],
|
task: data.message[2],
|
||||||
comments: data.message[3]
|
comments: data.message[3],
|
||||||
|
status: data.note
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
//filter only intern requests
|
//filter only intern requests
|
||||||
taskRequests = taskRequests.filter(data => data.floID in _.internList)
|
taskRequests = taskRequests.filter(data => data.floID in _.internList)
|
||||||
//filter processed requests
|
//filter processed requests
|
||||||
var applicationStatus = getRequestStatus()
|
|
||||||
if (ignoreProcessed)
|
if (ignoreProcessed)
|
||||||
taskRequests = taskRequests.filter(data => !(data.vectorClock in applicationStatus))
|
taskRequests = taskRequests.filter(data => !data.status)
|
||||||
else
|
|
||||||
taskRequests.forEach(data => data.status = applicationStatus[data.vectorClock])
|
|
||||||
return taskRequests
|
return taskRequests
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Admin.processTaskRequest = function(vectorClock, accept = true) {
|
||||||
|
let request = floGlobals.generalDataset("TaskRequests")[vectorClock];
|
||||||
|
if (!request)
|
||||||
|
return "Request not found";
|
||||||
|
var status;
|
||||||
|
if (accept && assignInternToTask(request.senderID, request.message[0], request.message[1], request.message[2]))
|
||||||
|
status = "Accepted";
|
||||||
|
else
|
||||||
|
status = "Rejected";
|
||||||
|
floCloudAPI.noteApplicationData(vectorClock, status).then(_ => null).catch(e => console.error(e))
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
Admin.assignInternToTask = function(floID, projectCode, branch, taskNumber) {
|
const assignInternToTask = Admin.assignInternToTask = function(floID, projectCode, branch, taskNumber) {
|
||||||
var index = projectCode + "_" + branch + "_" + taskNumber
|
var index = projectCode + "_" + branch + "_" + taskNumber
|
||||||
if (!Array.isArray(_.internsAssigned[index]))
|
if (!Array.isArray(_.internsAssigned[index]))
|
||||||
_.internsAssigned[index] = []
|
_.internsAssigned[index] = []
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user