Skip to content

Commit f808685

Browse files
committed
hobbiesImport example
1 parent d38f45d commit f808685

File tree

3 files changed

+168
-0
lines changed

3 files changed

+168
-0
lines changed

hobbiesImport.js

+80
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

hobbiesImport.ts

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
///<reference path='typings/business-rules-engine/business-rules-engine.d.ts'/>
2+
///<reference path='typings/node/node.d.ts'/>
3+
///<reference path='typings/underscore/underscore.d.ts'/>
4+
///<reference path='typings/q/q.d.ts'/>
5+
6+
///<reference path='node_modules/br-hobbies/business-rules.d.ts'/>
7+
8+
import _ = require('underscore');
9+
import Q = require('q');
10+
var Hobbies = require('br-hobbies');
11+
var mongoose = require('mongoose');
12+
13+
//fake our employee db
14+
var employees = [
15+
{FirstName:'John',LastName:'Smith'},
16+
{FirstName:'Goerge',LastName:'Podolsky'},
17+
{FirstName:'Jan',LastName:'Novak'},
18+
{FirstName:'Karel',LastName:'Abraham'},
19+
{FirstName:'Josef',LastName:'Blaha'}
20+
]
21+
22+
//connect to mongo
23+
mongoose.connect('mongodb://rsamec:[password]@ds059908.mongolab.com:59908/documents');
24+
25+
//create a mongoose model
26+
var Doc = mongoose.model('docs', {
27+
shortName:String,
28+
name: String,
29+
desc: String,
30+
data: Object,
31+
created: Date,
32+
updated: Date});
33+
34+
//create document header
35+
var docHeader = {
36+
name:'hobbies',
37+
created:new Date()
38+
};
39+
40+
//iterate list of employee
41+
_.each(employees, function(employee){
42+
43+
//create data
44+
var data:Hobbies.IHobbiesData = {
45+
Person:{
46+
FirstName: employee.FirstName,
47+
LastName: employee.LastName,
48+
Email: employee.FirstName.charAt(1) + employee.LastName + "@gmail.com"
49+
},
50+
Hobbies:[
51+
{HobbyName:"English", Frequency:Hobbies.HobbyFrequency.Weekly , Paid:true,Recommendation:true},
52+
{HobbyName:"Swimming", Frequency:Hobbies.HobbyFrequency.Monthly , Paid:false,Recommendation:true}
53+
]
54+
};
55+
56+
//create business rules
57+
var businessRules = new Hobbies.BusinessRules(data);
58+
59+
//execute business rules
60+
var promise = businessRules.Validate();
61+
62+
//verify results
63+
return promise.then(function (result) {
64+
65+
//log if any errors encounters
66+
if (result.HasErrors){
67+
console.log('error encounters at employee: ' + employee.LastName);
68+
console.log(result.ErrorMessage);
69+
return;
70+
}
71+
72+
//create mongo document -> combine document header with document data
73+
var document = new Doc(_.extend(docHeader, {desc:employee.FirstName + " " + employee.LastName,data:data}));
74+
75+
//save to Db
76+
document.save(function (err) {
77+
if (err) {console.log('error encounters at employee: ' + employee.LastName)};
78+
});
79+
});
80+
})
81+
82+
83+
84+
85+
86+

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
"description": "Demo for form validation engine",
55
"main": "index.js",
66
"dependencies": {
7+
"br-hobbies": "^1.1.0",
78
"br-vacation-approval": "^1.0.4",
89
"business-rules-engine": "^1.0.25",
910
"i18n-2": "^0.4.6",
1011
"moment": "^2.7.0",
1112
"moment-range": "^1.0.2",
13+
"mongoose": "^3.8.15",
1214
"q": "^1.0.1",
1315
"underscore": "^1.6.0"
1416
},

0 commit comments

Comments
 (0)