diff --git a/class4/sales/README.md b/class4/sales/README.md new file mode 100644 index 0000000..b99f52d --- /dev/null +++ b/class4/sales/README.md @@ -0,0 +1,13 @@ +home: last 50 sales [date, customers.fname, customer.lname, passport, price] + search: { + vendor: fname or lnames + customer: passsport + } + +item de result: click -> detail : customer, vendor, etc. + +vendors: + ABM: + click vendor -> All sales + stats: total money + total sales diff --git a/class4/sales/app.js b/class4/sales/app.js new file mode 100644 index 0000000..b2b0015 --- /dev/null +++ b/class4/sales/app.js @@ -0,0 +1,47 @@ +const http = require('http'); +const express = require('express'); +const mongojs = require('mongojs'); +const exphbs = require('express-handlebars'); +const db = mongojs('mongodb://localhost:27017/sales', ['vendors', 'customers', 'sales']); +const app = express(); + +app.engine('.hbs', exphbs({defaultLayout: 'main', extname: '.hbs'})); +app.set('view engine', '.hbs'); + +const server = http.createServer(app); +app.use( express.static('./public') ); + + +app.get('/', (req, res)=>{ + const qtype = req.query.qtype || null; + const query = {}; + if(qtype){ + switch(qtype){ + case 'vendor': + query['$or'] = [{'vendor.fname' : req.query.param}, {'vendor.lname' : req.query.param}]; + break + case 'passport': + query['customer.passport'] = req.query.param; + break; + } + } + db.sales.find(query, {}).sort({_id: 1}).limit(50, (err, sales)=>{ + res.render('home', {sales}); + }); + +}); + + +app.get('/vendors', (req, res)=>{ + const query = {}; + if(req.query.param){ + query['$or'] = [{'fname' : req.query.param}, {'lname' : req.query.param}]; + } + + db.vendors.find(query, {}, (err, vendors)=>{ + res.render('vendors', {vendors}); + }); + +}); + +server.listen(5000); diff --git a/class4/sales/package.json b/class4/sales/package.json new file mode 100644 index 0000000..8854913 --- /dev/null +++ b/class4/sales/package.json @@ -0,0 +1,26 @@ +{ + "name": "sales", + "version": "1.0.0", + "description": "sales abm and stats", + "main": "app.js ", + "scripts": { + "test": "mocha" + }, + "keywords": [ + "expressjs", + "mongodb", + "mongojs", + "sales", + "stats" + ], + "author": "Cesar Casas (https://ar.linkedin.com/in/cesarcasas)", + "license": "ISC", + "dependencies": { + "body-parser": "^1.17.1", + "compress": "^0.99.0", + "express": "^4.15.2", + "express-handlebars": "^3.0.0", + "helmet": "^3.6.0", + "mongojs": "^2.4.0" + } +} diff --git a/class4/sales/views/home.hbs b/class4/sales/views/home.hbs new file mode 100644 index 0000000..7b3ebad --- /dev/null +++ b/class4/sales/views/home.hbs @@ -0,0 +1,28 @@ + +
+ + + +
+ + + + + + + + + +{{#each sales}} + + + + + + + +{{/each}} +
DateFnameLnamePassportPrice
{{this.date}}{{this.customer.fname}}{{this.customer.lname}}{{this.customer.passport}}{{this.price}}
diff --git a/class4/sales/views/layouts/main.hbs b/class4/sales/views/layouts/main.hbs new file mode 100644 index 0000000..da57fd0 --- /dev/null +++ b/class4/sales/views/layouts/main.hbs @@ -0,0 +1,9 @@ + + + + + + + {{{body}}} + + diff --git a/class4/sales/views/vendors.hbs b/class4/sales/views/vendors.hbs new file mode 100644 index 0000000..ad629f7 --- /dev/null +++ b/class4/sales/views/vendors.hbs @@ -0,0 +1,20 @@ + +
+ + +
+ + + + + + + +{{#each vendors}} + + + + + +{{/each}} +
FnameLnameAge
{{this.fname}}{{this.lname}}{{this.age}}