unclean SPARC
This commit is contained in:
@@ -0,0 +1,336 @@
|
||||
class SubmissionModel extends EICModel {
|
||||
|
||||
constructor(privileges) {
|
||||
super('/organisations/{pic}/proposals/{pid}', privileges);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitizes legacy short proposals form format
|
||||
* @param {*} item
|
||||
* @returns
|
||||
*/
|
||||
sanitizeLegacy(item) {
|
||||
|
||||
let merged = {...item.DiagnosticSubmission, ...item.Diagnostic};
|
||||
this.data = item;
|
||||
this.data.team = JSON.parse(JSON.stringify(item.DiagnosticTeamMembers));
|
||||
this.data.UpdatedAt = item.DiagnosticSubmission.UpdatedAt;
|
||||
this.data.resubmitted = item.DiagnosticSubmission.ResubmissionType ? true: false;
|
||||
|
||||
delete this.data.DiagnosticSubmission;
|
||||
delete this.data.Diagnostic;
|
||||
|
||||
for(let key in merged) {
|
||||
this.data[key] = merged[key];
|
||||
}
|
||||
|
||||
return this.sanitize(this.data);
|
||||
}
|
||||
|
||||
sanitize(item) {
|
||||
if(['created', 'updated'].includes(item.status)) item.status = 'draft';
|
||||
if(['evaluation-finalised'].includes(item.status)) item.status = 'evaluated';
|
||||
if(['evaluation-contested'].includes(item.status)) item.status = 'contested';
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
getProposalLegacy(pic, number) {
|
||||
//if(!this.hasPrivilege('read')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('read');
|
||||
endpoint.uri = endpoint.uri.replace('{pic}', pic);
|
||||
endpoint.uri = endpoint.uri.replace('{pid}', number);
|
||||
/**/
|
||||
|
||||
return (
|
||||
this.request('https://api.dev.eismea.eu/stable/bypass/legacy/short-proposals'+'?'+crypto.randomUUID(), 'POST', { params: { ProposalId: number}})
|
||||
.then( async serverData => {
|
||||
return this.sanitizeLegacy(serverData.payload);
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
getProposal(pic, number) {
|
||||
if(!this.hasPrivilege('read')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('read');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', number);
|
||||
|
||||
return (
|
||||
this.request(uri+'?'+crypto.randomUUID(), endpoint.method)
|
||||
.then( async serverData => {
|
||||
switch(serverData.payload.version) {
|
||||
case '1.1':
|
||||
case '1.0':
|
||||
this.data = serverData.payload;
|
||||
return this.sanitize(this.data);
|
||||
default:
|
||||
return this.sanitizeLegacy(serverData.payload);
|
||||
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches latest company info from F&T portal
|
||||
* @param {string} pic
|
||||
* @returns
|
||||
*/
|
||||
getOrganisationInfo(pic) {
|
||||
if(!this.hasPrivilege('update')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('organisationUpdate');
|
||||
let uri = endpoint.uri.replace('{pic}', pic);
|
||||
|
||||
return (
|
||||
this.request(uri+'?'+crypto.randomUUID(), endpoint.method)
|
||||
.then( async serverData => {
|
||||
return serverData.payload;
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Saves proposal form
|
||||
* @param {*} number
|
||||
* @param {*} payload
|
||||
* @returns
|
||||
*/
|
||||
save(pic, number, form) {
|
||||
if(!this.hasPrivilege('update')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('update');
|
||||
endpoint.uri = endpoint.uri.replace('{pic}', pic);
|
||||
endpoint.uri = endpoint.uri.replace('{pid}', number);
|
||||
|
||||
let payload = {
|
||||
status: 'draft',
|
||||
form: form
|
||||
}
|
||||
|
||||
//this.merge(this.data, form);
|
||||
|
||||
return (
|
||||
this.request(endpoint.uri+'?'+crypto.randomUUID(), endpoint.method, payload)
|
||||
.then( async serverData => { return serverData.payload; })
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Submits the short proposal
|
||||
* @param {*} number
|
||||
* @param {*} payload
|
||||
*/
|
||||
submit(pic,number, form) {
|
||||
if(!this.hasPrivilege('update')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('update');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', number);
|
||||
|
||||
let payload = {
|
||||
status: 'submitting',
|
||||
form: form
|
||||
}
|
||||
|
||||
return (
|
||||
this.request(uri+'?'+crypto.randomUUID(), endpoint.method, payload)
|
||||
.then( async serverData => { return serverData.payload; })
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Withdraws the submitted short proposal
|
||||
* @param {*} number
|
||||
* @param {*} payload
|
||||
*/
|
||||
withdraw(pic,number, form) {
|
||||
if(!this.hasPrivilege('withdraw')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('update');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', number);
|
||||
|
||||
let payload = {
|
||||
status: 'withdrawing',
|
||||
form: form
|
||||
}
|
||||
|
||||
return (
|
||||
this.request(uri+'?'+crypto.randomUUID(), endpoint.method, payload)
|
||||
.then( async serverData => { return serverData.payload; })
|
||||
)
|
||||
}
|
||||
|
||||
clone(pic, number) {
|
||||
if(!this.hasPrivilege('clone')) return ( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('clone');
|
||||
let uri = endpoint.uri.replace('{pic}', pic);
|
||||
|
||||
let payload = {
|
||||
sourceProposal: number
|
||||
}
|
||||
|
||||
return (
|
||||
this.request(uri, endpoint.method, payload)
|
||||
.then( async serverData => { return serverData.payload })
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Complains the evaluation of the short proposal
|
||||
* @param {*} number
|
||||
* @param {*} payload
|
||||
*/
|
||||
complain(pic,number, form) {
|
||||
if(!this.hasPrivilege('complain')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('complain');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', number);
|
||||
|
||||
/*
|
||||
let payload = {
|
||||
status: 'complaining',
|
||||
form: form
|
||||
}
|
||||
*/
|
||||
return (
|
||||
this.request(uri+'?'+crypto.randomUUID(), endpoint.method, form)
|
||||
.then( async serverData => { return serverData.payload; })
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
app.registerClass('SubmissionModel', SubmissionModel);
|
||||
|
||||
class SubmissionTeamModel extends EICModel {
|
||||
|
||||
constructor(privileges) {
|
||||
super('/organisations/{pic}/proposals/{pid}/team', privileges);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a team member to the short proposal
|
||||
* @param {*} member
|
||||
* @returns
|
||||
*/
|
||||
create(pic, number, member) {
|
||||
if(!this.hasPrivilege('create')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('create');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', number);
|
||||
|
||||
return (
|
||||
this.request(uri+'?'+crypto.randomUUID(), endpoint.method, member)
|
||||
.then( async serverData => { return serverData.payload; })
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a team member of the short proposal
|
||||
* @param {*} member
|
||||
* @returns
|
||||
*/
|
||||
update(pic, number, member) {
|
||||
if(!this.hasPrivilege('update')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('update');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', number).replace('{uid}', member.id);
|
||||
|
||||
return (
|
||||
this.request(uri+'?'+crypto.randomUUID(), endpoint.method, member)
|
||||
.then( async serverData => { return serverData.payload; })
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a team member from the short proposal
|
||||
* @param {*} id
|
||||
* @returns
|
||||
*/
|
||||
delete(pic, number, id) {
|
||||
if(!this.hasPrivilege('delete')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('delete');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', number).replace('{uid}', id);
|
||||
|
||||
return (
|
||||
this.request(uri+'?'+crypto.randomUUID(), endpoint.method)
|
||||
.then( async serverData => { return serverData.payload; })
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
app.registerClass('SubmissionTeamModel', SubmissionTeamModel);
|
||||
|
||||
class SubmissionMembersModel extends EICModel {
|
||||
contributors = [];
|
||||
|
||||
constructor(privileges) {
|
||||
super('/organisations/{pic}/proposals/{pid}/members', privileges);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the contributors list on a proposal
|
||||
* @param {string} pic
|
||||
* @param {string} pid
|
||||
* @returns
|
||||
*/
|
||||
list(pic,pid) {
|
||||
if(!this.hasPrivilege('list')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('list');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', pid);
|
||||
|
||||
return (
|
||||
this.request(uri, endpoint.method)
|
||||
.then( async serverData => {
|
||||
this.contributors = serverData.payload;
|
||||
return this.contributors;
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Grants to an organisation member access to the short proposal
|
||||
* @param {string} pic
|
||||
* @param {string} pid
|
||||
* @param {string} uid
|
||||
* @returns
|
||||
*/
|
||||
grant(pic, pid, uid) {
|
||||
if(!this.hasPrivilege('grant')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('grant');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', pid).replace('{uid}', uid);
|
||||
let proposalLink = '/organisations/{pic}/proposals/{pid}'.replace('{pic}',pic).replace('{pid}',pid)
|
||||
return (
|
||||
this.request(uri, endpoint.method, { status: 'active', proposalLink: proposalLink})
|
||||
.then( async serverData => { return serverData.payload })
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Revokes an organisation member access to the short proposal
|
||||
* @param {string} pic
|
||||
* @param {string} pid
|
||||
* @param {string} uid
|
||||
* @returns
|
||||
*/
|
||||
revoke(pic, pid, uid) {
|
||||
if(!this.hasPrivilege('revoke')) return( new Promise((resolve, reject) => reject()))
|
||||
|
||||
let endpoint = this.getApiEndpoint('revoke');
|
||||
let uri = endpoint.uri.replace('{pic}', pic).replace('{pid}', pid).replace('{uid}', uid);
|
||||
let proposalLink = '/organisations/{pic}/proposals/{pid}'.replace('{pic}',pic).replace('{pid}',pid)
|
||||
return (
|
||||
this.request(uri, endpoint.method, { status: 'deleted', proposalLink: proposalLink })
|
||||
.then( async serverData => { return serverData.payload })
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
app.registerClass('SubmissionMembersModel', SubmissionMembersModel);
|
||||
Reference in New Issue
Block a user