Skip to content

Commit

Permalink
Merge pull request #82 from nci-ats/dev
Browse files Browse the repository at this point in the history
Pull from dev into master for end of sprint 1
  • Loading branch information
brianfunk authored Feb 28, 2017
2 parents 2866313 + 27f91ff commit 294ec33
Show file tree
Hide file tree
Showing 33 changed files with 2,471 additions and 217 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,6 @@ jspm_packages
# Optional REPL history
.node_repl_history
.DS_Store

# Lint Settings
.eslintrc.json*
41 changes: 34 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,47 @@ A repository for the development of an API to support the public facing ePermit

This repository is being development under a task order of the Agile Blanket Purchase Agreement.

## Setup

1. Clone or download this repository.
2. Run `npm install` to install application and all dependencies.
3. Run `npm start` to start Node.js server.

## How to Test

- Use `npm test` to run Mocha unit tests.
- Use `npm run coverage` for Istanbul code coverage.

## Configuration

- Environment variables:
- PORT | Default: 8000
- Dotenv:
- [Dotenv](https://www.npmjs.com/package/dotenv) is used which can load environment variables from a .env file into process.env
- Example: PORT=8080

## Dependencies

Refer to application package and dependency trackers for dependency information:
- Application package:
- [package.json](https://github.com/nci-ats/fs-middlelayer-api/blob/dev/package.json)
- [npm-shrinkwrap.json](https://github.com/nci-ats/fs-middlelayer-api/blob/dev/npm-shrinkwrap.json)
- Dependency trackers:
- [Gemnasium](https://gemnasium.com/github.com/nci-ats/fs-middlelayer-api/)
- [VersionEye](https://www.versioneye.com/user/projects/58a669e7b4d2a20055fcb84c)
- [Bithound](https://www.bithound.io/github/nci-ats/fs-middlelayer-api/feat%2Fswagger-ui/dependencies/npm)

## Point of Contact and Notifications
You can report issues and submit questions by opening a new [Issue](https://help.github.com/articles/creating-an-issue/) in GitHub. You can [Watch](https://help.github.com/articles/watching-repositories/) this repo to receive notifications from GitHub when a new issue is posted, when an existing issue’s status is updated, and when a pull request is created.

## Contributing

See [CONTRIBUTING](CONTRIBUTING.md) for additional information.

## Public domain
## Public Domain

This project is in the worldwide [public domain](LICENSE.md). As stated in [CONTRIBUTING](CONTRIBUTING.md):

> This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
>
> All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.
## Point of Contact


## Notifications

2 changes: 1 addition & 1 deletion controllers/permits/special-uses/commercial/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ get.all = function(req,res){
"commercial":{
"outfitters": outfitter
}
}
};

return commercial;

Expand Down
84 changes: 80 additions & 4 deletions controllers/permits/special-uses/commercial/outfitters/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@
// required modules

var include = require('include')(__dirname);
var _ = require('lodash');

//*******************************************************************
// validation

var validate_special_use = include('controllers/permits/special-uses/validate.js');
var validate_outfitters = include('controllers/permits/special-uses/commercial/outfitters/validate.js');
var error = include('error.js');
var util = include('controllers/permits/special-uses/utility.js');

//*******************************************************************
// controller
Expand All @@ -26,25 +35,92 @@ var post;
// get all

get.all = function(req){

return include('test/data/outfitters.get.all.json');
}

};

// get id

get.id = function(req,res){

res.json(include('test/data/outfitters.get.id.json'));
}

};

// put id

put.id = function(req,res){
res.json(include('test/data/outfitters.put.id.json'));
}
};

// post

post = function(req,res){
res.json(include('test/data/outfitters.post.json'));

var validate_res = validate_post_input(req);

if(validate_res.fieldsValid){

res.json(include('test/data/outfitters.post.json'));

}else{

error.sendError(req,res,400,validate_res.error_message);

}

};

function validate_post_input(req){

var output = {

'fieldsValid': true,
'error_message': undefined

};
var error_array = [];

if(_.isEmpty(req.body)){

output.fieldsValid = false;
output.error_message = 'Body cannot be empty.';

}else if(_.isEmpty(req.body['applicant-info'])){

output.fieldsValid = false;
output.error_message = 'applicant-info field cannot be empty.';

}else if (_.isEmpty(req.body['temp-outfitter-fields'])){

output.fieldsValid = false;
output.error_message = 'temp-outfitter field cannot be empty.';

}else{

var applicant_info = validate_special_use.applicant_info(req);
var outfitters = validate_outfitters.outfitters(req);

if(!applicant_info.fields_valid){

output.error_message = applicant_info.object_missing_message;

}

output.fieldsValid = output.fieldsValid && applicant_info.fields_valid;
error_array = error_array.concat(applicant_info.error_array);

output.fieldsValid = output.fieldsValid && outfitters.fields_valid;
error_array = error_array.concat(outfitters.error_array);

if(!output.error_message){
output.error_message = util.build_error_message(error_array);
}

}

return output;
}

//*******************************************************************
Expand Down
76 changes: 76 additions & 0 deletions controllers/permits/special-uses/commercial/outfitters/validate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
___ ___ ___ _ _ _ ___ ___
| __/ __| ___| _ \___ _ _ _ __ (_) |_ /_\ | _ \_ _|
| _|\__ \ / -_) _/ -_) '_| ' \| | _| / _ \| _/| |
|_| |___/ \___|_| \___|_| |_|_|_|_|\__| /_/ \_\_| |___|
*/

//*******************************************************************

'use strict';

//*******************************************************************

var outfitters = function(req){

var output = {
'fields_valid': true,
'error_array':[]
};
if(!req.body['applicant-info'].orgType){
output.fields_valid = false;
output.error_array.push('orgType');
}
if (!req.body['temp-outfitter-fields'].activityDescription) {
output.fields_valid = false;
output.error_array.push('activityDescription');
}
if (!req.body['temp-outfitter-fields'].locationDescription) {
output.fields_valid = false;
output.error_array.push('locationDescription');
}
if (!req.body['temp-outfitter-fields'].startDateTime) {
output.fields_valid = false;
output.error_array.push('startDateTime');
}
if (!req.body['temp-outfitter-fields'].endDateTime) {
output.fields_valid = false;
output.error_array.push('endDateTime');
}

var files_res = validate_files(req);
output.fields_valid = output.fields_valid && files_res.fields_valid;
output.error_array = output.error_array.concat(files_res.error_array);

return output;
};

function validate_files (req){

var output = {
'fields_valid': true,
'error_array':[]
};

if (!req.body['temp-outfitter-fields'].insuranceCertificate) {
output.fields_valid = false;
output.error_array.push('insuranceCertificate');
}
if (!req.body['temp-outfitter-fields'].goodStandingEvidence) {
output.fields_valid = false;
output.error_array.push('goodStandingEvidence');
}
if (!req.body['temp-outfitter-fields'].operatingPlan) {
output.fields_valid = false;
output.error_array.push('operatingPlan');
}

return output;
}

//*******************************************************************
// exports

module.exports.outfitters = outfitters;
2 changes: 1 addition & 1 deletion controllers/permits/special-uses/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ get.all = function(req,res){
"commercial" : commercial_res,
"non-commercial" : non_commercial_res
}
}
};

return special_uses;

Expand Down
74 changes: 70 additions & 4 deletions controllers/permits/special-uses/non-commercial/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,15 @@
// required modules

var include = require('include')(__dirname);
var _ = require('lodash');

//*******************************************************************
// mock data
var mock = {};
// validation

mock.non_commercial_get_id = include('test/data/non-commercial.get.id.json');
var validate_special_use = include('controllers/permits/special-uses/validate.js');
var validate_noncommercial = include('controllers/permits/special-uses/non-commercial/validate.js');
var error = include('error.js');
var util = include('controllers/permits/special-uses/utility.js');

//*******************************************************************
// controller
Expand Down Expand Up @@ -56,11 +59,74 @@ put.id = function(req,res){
// post

post = function(req,res){

var validate_res = validate_post_input(req);

if(validate_res.fieldsValid){

res.json(include('test/data/non-commercial.post.json'));

}else{

res.json(include('test/data/non-commercial.post.json'));
error.sendError(req,res,400,validate_res.error_message);

}

};

function validate_post_input(req){

var output = {

'fieldsValid': true,
'error_message': undefined

};
var error_array = [];

if(_.isEmpty(req.body)){

output.fieldsValid = false;
output.error_message = 'Body cannot be empty.';

}else if(_.isEmpty(req.body['applicant-info'])){

output.fieldsValid = false;
output.error_message = 'applicant-info field cannot be empty.';

}else if (_.isEmpty(req.body['noncommercial-fields'])){

output.fieldsValid = false;
output.error_message = 'noncommercial-fields cannot be empty.';

}else{

var applicant_info = validate_special_use.applicant_info(req);
var noncommercial = validate_noncommercial.noncommercial(req);

if(!applicant_info.fields_valid){

output.error_message = applicant_info.object_missing_message;

}

output.fieldsValid = output.fieldsValid && applicant_info.fields_valid;
error_array = error_array.concat(applicant_info.error_array);

output.fieldsValid = output.fieldsValid && noncommercial.fields_valid;
error_array = error_array.concat(noncommercial.error_array);

if(!output.error_message){
output.error_message = util.build_error_message(error_array);
}

}

return output;
}



//*******************************************************************
// exports

Expand Down
Loading

0 comments on commit 294ec33

Please sign in to comment.