From 46ad34093de6613ab1447f0208eac7ca21cbdad7 Mon Sep 17 00:00:00 2001
From: Nicolas Fley <nicolas.fley@student.ecp.fr>
Date: Wed, 7 Jun 2017 13:09:34 +0200
Subject: [PATCH] user joinded

---
 models/item.create.js | 44 +++++++++++++++++++++++++++++++++++++++++++
 models/item.model.js  |  5 +++--
 models/user.create.js | 34 +++++++++++++++++++++++++++++++++
 models/user.model.js  | 23 ++++++++++++++++++++--
 routes/item.route.js  | 27 +++++++++++++++++++++++---
 5 files changed, 126 insertions(+), 7 deletions(-)
 create mode 100644 models/item.create.js
 create mode 100644 models/user.create.js

diff --git a/models/item.create.js b/models/item.create.js
new file mode 100644
index 0000000..ca622c2
--- /dev/null
+++ b/models/item.create.js
@@ -0,0 +1,44 @@
+var Sequelize = require('sequelize');
+var sequelize = require('./sequelize');
+var Users = require('./user.create');
+
+sequelize
+  .authenticate()
+  .then(() => {
+    console.log('Connection has been established successfully.');
+  })
+  .catch(err => {
+    console.error('Unable to connect to the database:', err);
+  });
+
+var Items = sequelize.define('Items', {
+	description: Sequelize.STRING,
+	price: Sequelize.FLOAT,
+    typeItem: Sequelize.INTEGER, // typeDemande
+    userId: Sequelize.INTEGER,
+    id: {
+        type: Sequelize.INTEGER,
+        primaryKey: true,
+        autoIncrement: true
+    }
+}, {
+	tableItem: 'Items',
+});
+
+sequelize.sync({force:true}).then(() => {
+  Items.create({
+    description: 'Slip semi-propre',
+    price: 4,
+    userId: 1,
+    typeItem: 2
+  })
+
+  Items.create({
+    description: 'Bon shit sa mère',
+    price: 10,
+    userId: 2,
+    typeItem: 1
+  })
+})
+
+Items.belongsTo(Users)
diff --git a/models/item.model.js b/models/item.model.js
index 309125b..d0b6469 100644
--- a/models/item.model.js
+++ b/models/item.model.js
@@ -1,5 +1,6 @@
 var Sequelize = require('sequelize');
 var sequelize = require('./sequelize');
+var Users = require('./user.model');
 
 sequelize
   .authenticate()
@@ -19,7 +20,7 @@ var Items = sequelize.define('Items', {
 	tableItem: 'Items',
 });
 
-sequelize.sync({force:true}).then(() => {
+sequelize.sync().then(() => {
   Items.create({
     description: 'Slip semi-propre',
     price: 4,
@@ -51,7 +52,7 @@ function getItemsByDate(page, step, typeItem) {
     limit: offset + step,
     order: [['createdAt', 'DESC']],
     where: where
-  });
+})
 }
 
 function getItemsByUserId(id, page, step, typeItem){
diff --git a/models/user.create.js b/models/user.create.js
new file mode 100644
index 0000000..ef52cb3
--- /dev/null
+++ b/models/user.create.js
@@ -0,0 +1,34 @@
+var Sequelize = require('sequelize');
+var sequelize = require('./sequelize');
+
+sequelize
+  .authenticate()
+  .then(() => {
+    console.log('Connection has been established successfully.');
+  })
+  .catch(err => {
+    console.error('Unable to connect to the database:', err);
+  });
+
+var Users = sequelize.define('Users', {
+	uName: {
+		type : Sequelize.STRING,
+		allowNull: false,
+		unique: true,
+	},
+	fName: Sequelize.STRING,
+	lName: Sequelize.STRING,
+	phoneNumber: Sequelize.STRING,
+	token: Sequelize.STRING,
+	expires: Sequelize.DATE,
+    id: {
+        type: Sequelize.INTEGER,
+        primaryKey: true,
+        autoIncrement: true
+    }
+},{
+	timestamps: false,
+	tableUser: 'Users',
+});
+
+sequelize.sync({force:true})
diff --git a/models/user.model.js b/models/user.model.js
index 1b65b7d..fa898d6 100644
--- a/models/user.model.js
+++ b/models/user.model.js
@@ -21,13 +21,32 @@ var Users = sequelize.define('Users', {
 	lName: Sequelize.STRING,
 	phoneNumber: Sequelize.STRING,
 	token: Sequelize.STRING,
-	expires: Sequelize.DATE
+	expires: Sequelize.DATE,
+    id: {
+        type:Sequelize.INTEGER,
+        primaryKey: true,
+        autoIncrement: true
+    }
 },{
 	timestamps: false,
 	tableUser: 'Users',
 });
 
-sequelize.sync({force:true})
+sequelize.sync()/*.then(() => {
+  Users.create({
+    uName: '2015fleyn',
+    fName: 'Fley',
+    lName: 'Nicolas',
+    phoneNumber: '0650588938'
+  })
+
+    Users.create({
+      uName: '2015cochetg',
+      fName: 'Cochet',
+      lName: 'Gabriel',
+      phoneNumber: '0664211239'
+    })
+})*/
 
 function refreshUser(user){
 	expiresTime = user.toJSON().expires
diff --git a/routes/item.route.js b/routes/item.route.js
index a649409..12fdbc8 100644
--- a/routes/item.route.js
+++ b/routes/item.route.js
@@ -1,11 +1,32 @@
 const express = require('express');
 const itemModel = require('../models/item.model');
+const Users = require('../models/user.model');
 const authMiddleware = require('../middlewares/authMiddleware');
 const router = express.Router();
 
 const DEFAULT_PAGE = 0;
 const DEFAULT_STEP = 10;
 
+function joinUser(res,Items){
+	result = []
+	for(let i = 0; i!= Items.length; i++){
+		Users.getUser(Items[i].userId).then(user => {
+			//console.log(user)
+			for(key in user.dataValues){
+				Items[i].dataValues[key] = user.dataValues[key];
+			}
+			result.push(Items[i].dataValues)
+			if(result.length == Items.length){
+				res.send(JSON.stringify(result))
+				//return result
+			}
+		})
+	}
+	if(Items.length == 0){
+		res.send("[]")
+	}
+}
+
 //router.use(authMiddleware.checkAuth());
 
 router.get('/byId/:id', function(req, res) {
@@ -21,7 +42,7 @@ router.get('/date', function(req, res) {
 		page = DEFAULT_PAGE;
 	if(isNaN(step))
 		step = DEFAULT_STEP;
-	itemModel.getItemsByDate(page, step, typeItem).then(out => res.json(out));
+	itemModel.getItemsByDate(page, step, typeItem).then(Items => joinUser(res,Items))
 });
 
 router.get('/userId', function(req, res) {
@@ -33,7 +54,7 @@ router.get('/userId', function(req, res) {
 		page = DEFAULT_PAGE;
 	if(isNaN(step))
 		step = DEFAULT_STEP;
-	itemModel.getItemsByUserId(userId, page, step, typeItem).then(out => res.json(out));
+	itemModel.getItemsByUserId(userId, page, step, typeItem).then(Items => joinUser(res,Items));
 });
 
 router.get('/description', function(req, res) {
@@ -44,7 +65,7 @@ router.get('/description', function(req, res) {
 		page = DEFAULT_PAGE;
 	if(isNaN(step))
 		step = DEFAULT_STEP;
-	itemModel.getItemsByDescription(req.query.desc, page, step, typeItem).then(out => res.json(out));
+	itemModel.getItemsByDescription(req.query.desc, page, step, typeItem).then(Items => joinUser(res,Items));
 });
 
 router.post('/', function(req, res) {
-- 
GitLab