Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
e62aefd
Added preliminary matching algorithm code
apatel117 Oct 24, 2022
5c5e167
Update README.md
MaisaBasher Nov 14, 2022
ebbdc08
Merge pull request #53 from phamtoquyen/Restructure-Database
phamtoquyen Nov 21, 2022
8c6c9b2
Get userID from database
phamtoquyen Nov 21, 2022
e31abeb
added UI for friendlist to access chat
MaisaBasher Nov 21, 2022
3007370
Sent id to chatting page
MaisaBasher Nov 21, 2022
59de60b
Merge pull request #54 from phamtoquyen/Friend
MaisaBasher Nov 21, 2022
222acba
minor updated
phamtoquyen Nov 21, 2022
4ccfaa6
Merge branch 'ChatFeature' of https://github.com/phamtoquyen/JIA-2113…
phamtoquyen Nov 21, 2022
b2c3867
updated get findChat function and get receiverId from senderId
phamtoquyen Nov 23, 2022
ee5d256
create ChatBox
phamtoquyen Nov 24, 2022
e7b5cbf
Render Chat Header
phamtoquyen Nov 24, 2022
efa4c00
display chat message
phamtoquyen Nov 25, 2022
8531295
Merge pull request #55 from phamtoquyen/ChatBox
phamtoquyen Nov 25, 2022
9973ddf
Merge branch 'master' of https://github.com/phamtoquyen/JIA-2113---La…
apatel117 Nov 25, 2022
a6e16f3
Merge pull request #56 from phamtoquyen/ChatFeature
phamtoquyen Nov 26, 2022
6bcf0f8
Added Matching Algorithm service
apatel117 Dec 1, 2022
285bee2
Added Matching Algorithm services
apatel117 Dec 1, 2022
8d8c1d8
Added preliminary matching algorithm code
apatel117 Oct 24, 2022
c2060d9
Added Matching Algorithm service
apatel117 Dec 1, 2022
6eeb7a1
Added Matching Algorithm services
apatel117 Dec 1, 2022
59b5cce
Created friends Service, friends Model
theprathampatel Dec 2, 2022
b4f35b9
Merge branch 'MatchingAlgorithm' of https://github.com/phamtoquyen/JI…
theprathampatel Dec 2, 2022
35a5a49
Created friends controller
theprathampatel Dec 2, 2022
2d823ba
Add getUserName
apatel117 Dec 2, 2022
7c803b1
Finalize way to get firstName
apatel117 Dec 2, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1,475 changes: 103 additions & 1,372 deletions Backend--JIA-2113---Language-Exchange-Matchmaker/package-lock.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"express": "4.17.1",
"multer": "1.4.3",
"mysql2": "2.3.0",
"nodemon": "2.0.12",
"nodemon": "^2.0.20",
"sequelize": "^6.19.0"
},
"devDependencies": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import db from '../models/index';
const { Op } = require("sequelize");

let handleFriendsModel = (user1_ID, user2_ID) => {
return new Promise(async (resolve, reject) => {
try{
let message = {};
console.log("Check friendsService");

let friendsModel = await db.FriendsModel.create({
user1_ID: user1_ID,
user2_ID: user2_ID
});
message.errMessage = 'Friends Model Successfully Created!';
message.data = friendsModel;
resolve(message);
}catch(e){
reject(e)
}
})
}


let handleFindFriends = (user1_ID) => {
return new Promise(async (resolve, reject) => {
try{
let friendsData = {};

let friendsModels = await db.FriendsModel.findAll({
where: {[Op.or]: [{user1_ID : user1_ID}]
}
});
friendsData.errMessage = 'Friends found!';
friendsData.data = friendsModels;
resolve(friendsData);
}

catch(e){
reject(e)
}
})
}

let handleFindFriend = (user1_ID, user2_ID) => {
return new Promise(async (resolve, reject) => {
try{
let messageData = {};

let friendsModels = await db.FriendsModel.findAll({
where: {
[Op.and]: [
{ user1_ID: user1_ID },
{ user2_ID: user2_ID }
]
}
});
console.log(friendsModels)
messageData.errMessage = 'Find friends of a specific sender & receiver';
messageData.data = friendsModels;
resolve(messageData);
}

catch(e){
reject(e)
}
})
}




module.exports = {handleFriendsModel : handleFriendsModel,
handleFindFriends : handleFindFriends,
handleFindFriend : handleFindFriend}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import db from '../models/index';

let checkFriends = (native_language, target_language) => {
return new Promise (async (resolve, reject) => {
try{
let user = await db.UserProfile.findAll({
// attributes: ['id'],
where: {native_language : target_language, target_language : native_language},
order: {limit: 5}
})
return (user)
if (user){
resolve(true)
}else {
resolve(false)
}
}catch(e){
reject(e);
}
})
}



module.exports = {checkFriends}

//above code will return all instances

//maybe use findByPk to get a single entry using a primary key?
// this can be incremented to go throught the entire table

// let checkFriends = (id, native_language, target_language) => {
// return new Promise (async (resolve, reject) => {
// try{
// let array = []
// let user = await db.UserProfile.findByPk({
// where: {id : id, native_language : target_language, target_language : native_language},
// order: {limit: 5}
// })
// array.push(this.getDataValue('firstName'));
// console.log(user)
// if (user){
// resolve(true)
// }else {
// resolve(false)
// }
// }catch(e){
// reject(e);
// }
// })
// }
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ let handleProfileCreation = (native_language, target_language, target_language_p
return new Promise(async (resolve, reject) => {
try{
let userData = {};
console.log("hi");

let userProfile = await db.UserProfile.create({
id: user_id,
Expand All @@ -137,6 +136,24 @@ let handleProfileCreation = (native_language, target_language, target_language_p
})
}

let getUserInfoById = (userId) => {
return new Promise (async (resolve, reject) => {
try{
let user = await db.UserAccount.findOne({
where: {id: userId}
})
console.log(userId)
if (user){
resolve(user);
}else {
resolve([]);
}
}catch(e){
reject(e);
}
})
}

module.exports = {
handleUserLogin, checkUserEmail, handleUserRegister, handleProfileCreation
handleUserLogin, checkUserEmail, handleUserRegister, handleProfileCreation, getUserInfoById
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// get the client
import mysql from 'mysql2/promise';

const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database: 'nodejsbasic',
password: ''
})

export default pool;
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import express from "express";

const configViewEngine = (app) => {
app.use(express.static('./src/public'));
app.set("view engine", "ejs");
app.set("views", "./src/views")
}

export default configViewEngine;
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,14 @@ let findChat = async (req, res) => {
let receiverId = req.params.receiverId

console.log("check userId >>>>", senderId, receiverId)
let messageData = await chatService.handleFindChats(senderId, receiverId)
let messageData = await chatService.handleFindChat(senderId, receiverId)
return res.status(200).json({
message: messageData.errMessage,
chatsData: messageData.data? messageData.data : {}
})
}





module.exports = {
createChat: createChat,
findChats: findChats,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import FriendsModel from'../models/FriendsModel';
import friendsService from'../Service/friendsService';
let createFriends = async (req, res) => {
let user1_ID = req.body.user1_ID;
let user2_ID = req.body.user2_ID;
let message = await friendsService.handleFriendsModel(user1_ID, user2_ID)
return res.status(200).json({
message: message.errMessage,
messageData: message.data? message.data : {}
})
}

let findFriends = async (req, res) => {
let user1_ID = req.params.user1_ID
console.log("check friends for userID >>>>", userId)
let messageData = await friendsService.handleFindFriends(user1_ID)
return res.status(200).json({
message: messageData.errMessage,
chatsData: messageData.data? messageData.data : {}
})
}

let findFriend = async (req, res) => {
let user1_ID = req.params.user1_ID
let user2_ID = req.params.user2_ID

console.log("check if two users are friends >>>>", user1_ID, user2_ID)
let messageData = await friendsService.handleFindFriend(user1_ID, user2_ID)
return res.status(200).json({
message: messageData.errMessage,
chatsData: messageData.data? messageData.data : {}
})
}


module.exports = {
createFriends: createFriends,
findFriends: findFriends,
findFriend: findFriend
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import matchingService from '../Service/matchingService';
import matchingService from '../Service/userService';

// let handleMatchingFriends = async (req, res) => {
// // let id = req.body.id
// // let userNative = req.body.userNative
// // let userTarget = req.body.userTarget
// // let arrayOfName = {}

// // Call handleUserLogin to have the value of userData
// let userData = await matchingService.checkFriends(id, userNative, userTarget)
// userData.forEach(stat => {
// console.log(stat.id);
// let userFirstName = userService.getUserInfoById(stat.id)
// arrayOfName.push(userFirstName.firstName)
// });
// // return arrayOfName


// return res.send(arrayOfName)
// }

let handleGetUser = async (req, res) => {
const userId = req.params.userId
console.log("check id >>>", userId)
if (userId) {
let userData = await userService.getUserInfoById(userId)
return res.send(userData)

}else {
return res.send("User not found !");
}
}


let handleGetUserFirstName = async (req, res) => {
const userId = req.params.userId
const arrayOfName = {}

// let userData = userService.getUserInfoById(userId)
// arrayOfName.push(userData.firstName)
// return arrayOfName
// return res.send(userData.firstName)


let userData = await matchingService.checkFriends(id, userNative, userTarget)
let userName = userService.handleGetUser(userId)
console.log(userData)
console.log(userName)
// userData.forEach(stat => {

for (let i = 0; i < 4; i++) {
userName = userService.getUserInfoById(userData[i].id)
arrayOfName.push(userName)
}
return res.send(arrayOfName)
}



module.exports = {
handleMatchingFriends: handleMatchingFriends,
handleGetUserFirstName: handleGetUserFirstName
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ let findMessage = async (req, res) => {
})
}





module.exports = {
addMessage: addMessage,
findMessage: findMessage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,22 @@ let handleProfileCreation = async (req, res) => {
})
}

let handleGetUser = async (req, res) => {
const userId = req.params.userId
console.log("check id >>>", userId)
if (userId) {
let userData = await userService.getUserInfoById(userId)
return res.send(userData)

}else {
return res.send("User not found !");
}
}


module.exports = {
handleLogin: handleLogin,
handleRegister: handleRegister,
handleProfileCreation: handleProfileCreation
handleProfileCreation: handleProfileCreation,
handleGetUser : handleGetUser
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('FriendsModel', {
user1_ID: {
allowNull: false,
primaryKey: true,
type: Sequelize.INTEGER,
references: {
model: 'UserProfile',
key: 'id'
}
},
user2_ID: {
allowNull: false,
primaryKey: true,
type: Sequelize.INTEGER,
references: {
model: 'UserProfile',
key: 'id'
}
},
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('FriendsModel');
}
};
Loading