Skip to content

Commit

Permalink
CE-174 fix unification issue with create/update site in personal project
Browse files Browse the repository at this point in the history
  • Loading branch information
rassokhin-s committed Mar 2, 2021
1 parent acadbe8 commit b0c0db2
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 21 deletions.
28 changes: 19 additions & 9 deletions app/model/projects.js
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,24 @@ var Projects = {
return this.find({ id }).get(0)
},

/**
* Gets personal project url for given user
* @param {*} user
* @param {integer} user.user_id
* @param {string} user.firstname
*/
getPersonalProjectUrl: function (user) {
return `${user.user_id}-${this.nameToUrl(user.firstname)}-project`
},

/**
* Removes everything except latin characters, replaces spaces with dashes
* @param {*} name
*/
nameToUrl: function (name) {
return name.replace(/[^a-z0-9A-Z-]/g, '-').replace(/-+/g,'-').replace(/(^-)|(-$)/g, '').toLowerCase()
},

/**
* Creates personal project for given user
* @param {*} user
Expand All @@ -992,7 +1010,7 @@ var Projects = {
is_private: true,
plan: this.plans.free,
name: `${user.firstname} ${user.lastname}'s project`,
url: `${user.user_id}-${this.nameToUrl(user.firstname)}-project`,
url: this.getPersonalProjectUrl(user),
description: `${user.firstname}'s personal project`,
project_type_id: 1
};
Expand All @@ -1008,14 +1026,6 @@ var Projects = {
return this.find({ id: projectId }).get(0)
},

/**
* Removes everything except latin characters, replaces spaces with dashes
* @param {*} name
*/
nameToUrl: function (name) {
return name.replace(/[^a-z0-9A-Z-]/g, '-').replace(/-+/g,'-').replace(/(^-)|(-$)/g, '').toLowerCase()
},

/**
* Checks whether user has permission for the project or not
* @param {integer} projectId
Expand Down
34 changes: 22 additions & 12 deletions app/routes/data-api/project/sites.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,17 @@ router.post('/create', function(req, res, next) {
if(err) return next(err);

if (rfcxConfig.coreAPIEnabled) {
model.sites.createInCoreAPI({
...site,
site_id: result.insertId
}, req.session.idToken)
model.projects.findOrCreatePersonalProject({ ...req.session.user, user_id: req.session.user.id })
.then((personalProject) => {
return model.sites.createInCoreAPI({
site_id: result.insertId,
name: site.name,
lat: site.lat,
lon: site.lon,
alt: site.alt,
...personalProject && personalProject.project_id === site.project_id ? {} : { project_id: site.project_id }
}, req.session.idToken)
})
.then((externalSite) => {
return model.sites.setExternalId(result.insertId, externalSite.id)
})
Expand Down Expand Up @@ -95,14 +102,17 @@ router.post('/update', function(req, res, next) {
});

if (rfcxConfig.coreAPIEnabled) {
model.sites.updateInCoreAPI({
site_id: site.site_id,
name: site.name,
lat: site.lat,
lon: site.lon,
alt: site.alt,
...(site.project_id !== project.project_id? { project_id: project.project_id } : {})
}, req.session.idToken)
model.projects.findOrCreatePersonalProject({ ...req.session.user, user_id: req.session.user.id })
.then((personalProject) => {
return model.sites.updateInCoreAPI({
site_id: site.site_id,
name: site.name,
lat: site.lat,
lon: site.lon,
alt: site.alt,
...personalProject && personalProject.project_id === site.project_id ? {} : { project_id: site.project_id }
}, req.session.idToken)
})
}

res.json({ message: "site updated" });
Expand Down

0 comments on commit b0c0db2

Please sign in to comment.