mirror of https://github.com/xfarrow/blink
update
This commit is contained in:
parent
18eec7bf66
commit
f8ce8064c2
|
@ -50,12 +50,18 @@ async function userAlreadyApplicated(personId, jobOfferId) {
|
||||||
* @returns All the applications of the specified Person, throws an exception
|
* @returns All the applications of the specified Person, throws an exception
|
||||||
* otherwise
|
* otherwise
|
||||||
*/
|
*/
|
||||||
async function getMyApplications(personId) {
|
async function getMyApplications(personId, organizationId) {
|
||||||
return await knex('JobApplication')
|
const query = knex('JobApplication')
|
||||||
.where('person_id', personId)
|
.where('person_id', personId)
|
||||||
.join('JobOffer', 'JobOffer.id', 'JobApplication.job_offer_id')
|
.join('JobOffer', 'JobOffer.id', 'JobApplication.job_offer_id')
|
||||||
.join('Organization', 'Organization.id', 'JobOffer.organization_id')
|
.join('Organization', 'Organization.id', 'JobOffer.organization_id')
|
||||||
.select('JobApplication.id', 'JobOffer.title', 'JobOffer.description', 'Organization.name', 'Organization.location');
|
.select('JobApplication.id', 'JobOffer.title', 'JobOffer.description', 'Organization.name', 'Organization.location');
|
||||||
|
|
||||||
|
if (organizationId != null) {
|
||||||
|
query.where('Organization.id', organizationId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return await query;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -50,6 +50,31 @@ async function insert(req, res) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
/**
|
||||||
|
* **GET** Request
|
||||||
|
*
|
||||||
|
* Obtain a JobApplication. Only the user themselves or the organization
|
||||||
|
* administrator can perform this action
|
||||||
|
*
|
||||||
|
* @param {*} req
|
||||||
|
* @param {*} res
|
||||||
|
*/
|
||||||
|
async function find(req, res){
|
||||||
|
try {
|
||||||
|
const jobApplication = await Application.find(req.params.idApplication);
|
||||||
|
if (jobApplication == null) {
|
||||||
|
return res.status(404).send();
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Error in function ${find.name}: ${error}`);
|
||||||
|
res.status(500).json({
|
||||||
|
error: 'Internal server error'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* **GET** Request
|
* **GET** Request
|
||||||
*
|
*
|
||||||
|
@ -57,7 +82,7 @@ async function insert(req, res) {
|
||||||
*/
|
*/
|
||||||
async function myApplications(req, res) {
|
async function myApplications(req, res) {
|
||||||
try {
|
try {
|
||||||
const applications = await Application.getMyApplications(req.jwt.person_id);
|
const applications = await Application.getMyApplications(req.jwt.person_id, req.body.organizationId);
|
||||||
return res.status(200).json(applications);
|
return res.status(200).json(applications);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Error in function ${myApplications.name}: ${error}`);
|
console.error(`Error in function ${myApplications.name}: ${error}`);
|
||||||
|
@ -70,12 +95,12 @@ async function myApplications(req, res) {
|
||||||
/**
|
/**
|
||||||
* **GET** Request
|
* **GET** Request
|
||||||
*
|
*
|
||||||
* Retrieve all the applicants who applicated to a job offer.
|
* Retrieve all the applications who applicated to a job offer.
|
||||||
* Only an organization administrator is allowed to perform this action.
|
* Only an organization administrator is allowed to perform this action.
|
||||||
*/
|
*/
|
||||||
async function getApplicantsByJobOffer(req, res) {
|
async function getApplicationsByJobOffer(req, res) {
|
||||||
try {
|
try {
|
||||||
const isAdmin = await OrganizationAdmin.isAdmin(req.jwt.person_id, req.params.idJobOffer);
|
const isAdmin = await OrganizationAdmin.isAdmin(req.jwt.person_id, req.params.idJobOffer); //todo error! It's not idJobOffer
|
||||||
if (!isAdmin) {
|
if (!isAdmin) {
|
||||||
return res.status(401).json({
|
return res.status(401).json({
|
||||||
error: 'Forbidden'
|
error: 'Forbidden'
|
||||||
|
@ -84,7 +109,7 @@ async function getApplicantsByJobOffer(req, res) {
|
||||||
const applicants = await Application.getApplicantsByJobOffer(req.params.idJobOffer);
|
const applicants = await Application.getApplicantsByJobOffer(req.params.idJobOffer);
|
||||||
return res.status(200).json(applicants);
|
return res.status(200).json(applicants);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Error in function ${getApplicantsByJobOffer.name}: ${error}`);
|
console.error(`Error in function ${getApplicationsByJobOffer.name}: ${error}`);
|
||||||
res.status(500).json({
|
res.status(500).json({
|
||||||
error: 'Internal server error'
|
error: 'Internal server error'
|
||||||
});
|
});
|
||||||
|
@ -98,7 +123,7 @@ async function getApplicantsByJobOffer(req, res) {
|
||||||
* by the specific organization.
|
* by the specific organization.
|
||||||
* Only an organization administrator is allowed to perform this action.
|
* Only an organization administrator is allowed to perform this action.
|
||||||
*/
|
*/
|
||||||
async function getApplicantsByOrganization(req, res) {
|
async function getApplicationsByOrganization(req, res) {
|
||||||
try {
|
try {
|
||||||
const isAdmin = await OrganizationAdmin.isAdmin(req.jwt.person_id, req.params.idOrganization);
|
const isAdmin = await OrganizationAdmin.isAdmin(req.jwt.person_id, req.params.idOrganization);
|
||||||
if (!isAdmin) {
|
if (!isAdmin) {
|
||||||
|
@ -109,7 +134,7 @@ async function getApplicantsByOrganization(req, res) {
|
||||||
const applicants = await Application.getApplicansByOrganization(req.params.idOrganization);
|
const applicants = await Application.getApplicansByOrganization(req.params.idOrganization);
|
||||||
return res.status(200).json(applicants);
|
return res.status(200).json(applicants);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(`Error in function ${getApplicantsByOrganization.name}: ${error}`);
|
console.error(`Error in function ${getApplicationsByOrganization.name}: ${error}`);
|
||||||
res.status(500).json({
|
res.status(500).json({
|
||||||
error: 'Internal server error'
|
error: 'Internal server error'
|
||||||
});
|
});
|
||||||
|
@ -150,7 +175,7 @@ async function remove(req, res) {
|
||||||
*/
|
*/
|
||||||
async function setStatus(req, res) {
|
async function setStatus(req, res) {
|
||||||
try {
|
try {
|
||||||
const canPersonSetStatus = Application.canPersonSetStatus(req.params.idApplication, req.jwt.person_id);
|
const canPersonSetStatus = await Application.canPersonSetStatus(req.params.idApplication, req.jwt.person_id);
|
||||||
if (!canPersonSetStatus) {
|
if (!canPersonSetStatus) {
|
||||||
return res.status(401).json({
|
return res.status(401).json({
|
||||||
error: 'Forbidden'
|
error: 'Forbidden'
|
||||||
|
@ -167,14 +192,14 @@ async function setStatus(req, res) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const routes = express.Router();
|
const routes = express.Router();
|
||||||
routes.post('/joboffers/:idJobOffer', jwtUtils.extractToken, insert);
|
routes.post('/joboffers/:idJobOffer/applications', jwtUtils.extractToken, insert);
|
||||||
routes.get('/applications/mine', jwtUtils.extractToken, myApplications); // TODO: filter by organization as well
|
routes.get('/joboffers/:idJobOffer/applications/:idApplication', jwtUtils.extractToken, find);
|
||||||
routes.get('/:idOrganization/joboffers/:idJobOffer', jwtUtils.extractToken, getApplicantsByJobOffer);
|
routes.get('/joboffers/applications/mine', jwtUtils.extractToken, myApplications);
|
||||||
routes.get('/:idOrganization/', jwtUtils.extractToken, getApplicantsByOrganization);
|
routes.get('/joboffers/:idJobOffer/applications', jwtUtils.extractToken, getApplicationsByJobOffer);
|
||||||
|
routes.get('/:idOrganization/joboffers/applications', jwtUtils.extractToken, getApplicationsByOrganization);
|
||||||
routes.delete('/joboffers/applications/:idApplication', jwtUtils.extractToken, remove);
|
routes.delete('/joboffers/applications/:idApplication', jwtUtils.extractToken, remove);
|
||||||
routes.patch('/joboffers/applications/:idApplication', jwtUtils.extractToken, setStatus);
|
routes.patch('/joboffers/applications/:idApplication', jwtUtils.extractToken, setStatus);
|
||||||
// TODO: Get by single application
|
|
||||||
// TODO: Change routes (see if practical)
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
routes
|
routes
|
||||||
};
|
};
|
|
@ -160,7 +160,7 @@ async function getPerson(req, res) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* GET Request
|
* **GET** Request
|
||||||
*
|
*
|
||||||
* Get myself, from the JWT token
|
* Get myself, from the JWT token
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue