Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
152f14a
Authentication implemented completely
salmanjensen1 Oct 11, 2022
22e4b5f
introduced gitignore
salmanjensen1 Oct 11, 2022
5a85dcc
modification to gitignore
salmanjensen1 Oct 11, 2022
950cf5e
excluded node modules
salmanjensen1 Oct 11, 2022
ff64fed
minor changes for merging with frontend
salmanjensen1 Oct 12, 2022
0677422
check get service
Parasite-231 Oct 14, 2022
27a1ab0
error handling for registration
salmanjensen1 Oct 14, 2022
6b2b96a
fixed services
acesuu Oct 17, 2022
965e861
added sub service feature
acesuu Oct 18, 2022
41128b8
Merge branch 'akib' of https://github.com/507S/MeSeeks-server into akib
acesuu Oct 18, 2022
918d1ed
protected routes with JWT
salmanjensen1 Oct 18, 2022
f5189e1
Separate worker login and registration
salmanjensen1 Oct 18, 2022
d6590d6
added delete category feature
acesuu Oct 18, 2022
8d981e8
added controllers
acesuu Oct 18, 2022
b34c661
added service controller
acesuu Oct 18, 2022
a456a97
minor repo changes
salmanjensen1 Oct 18, 2022
59ad4b8
before merging with salmans branch
acesuu Oct 18, 2022
e3d3138
Merge branch 'salman' of https://github.com/507S/MeSeeks-server into …
acesuu Oct 18, 2022
70c8f6f
minor auth changes
salmanjensen1 Oct 19, 2022
b160af5
merge into main
acesuu Oct 19, 2022
03ef993
Merge branch 'main' of https://github.com/507S/MeSeeks-server into akib
acesuu Oct 19, 2022
6f863ce
Merge branch 'akib' of https://github.com/507S/MeSeeks-server into sa…
salmanjensen1 Oct 19, 2022
ef777b0
merge
salmanjensen1 Oct 19, 2022
0ed1f89
added appeal message feature
acesuu Nov 11, 2022
d31a929
added user controller route for scheduling appointment by submitting …
salmanjensen1 Nov 12, 2022
0303d87
Merge branch 'salman' of https://github.com/507S/MeSeeks-server into …
acesuu Nov 13, 2022
0410267
merged into akib's branch
salmanjensen1 Nov 14, 2022
07a214e
fixed worker authentication match password function
salmanjensen1 Nov 15, 2022
a2fd824
keeping track
acesuu Nov 18, 2022
c298fa6
keeping track
acesuu Nov 18, 2022
10d1f5d
fetch data filter according to uid
salmanjensen1 Dec 23, 2022
0a3d33e
added delete functionality of work-list
salmanjensen1 Dec 26, 2022
5bd89a3
fixed image uploading issues
acesuu Dec 29, 2022
fdf507e
adding pending work functionality
salmanjensen1 Dec 29, 2022
0880269
Merge branch 'salman' of https://github.com/507S/MeSeeks-server into …
acesuu Dec 29, 2022
01ccd00
added pending work functionality
salmanjensen1 Dec 29, 2022
c7f42b2
added ban feature
acesuu Dec 29, 2022
eef7576
Merge branch 'salman' of https://github.com/507S/MeSeeks-server into …
acesuu Dec 29, 2022
f4fea46
fixed updating services and submiting services
acesuu Dec 29, 2022
0a74bbe
added unban feature
acesuu Dec 30, 2022
5a75194
fixed unban feature
acesuu Dec 30, 2022
94d2146
update work profile
acesuu Dec 30, 2022
9a5cd89
added worker profile
acesuu Dec 30, 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
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# DB_CONNECTION="mongodb+srv://salmanjensen:sal@cluster0.yx3sl49.mongodb.net/cluster0"
# DB_CONNECTION2 = 'mongodb+srv://salmanjensen:sal@cluster0.yx3sl49.mongodb.net/?retryWrites=true&w=majority'
MONGO_URL="mongodb+srv://acesu:iutcse@cluster0.b7f93io.mongodb.net/meseeks"
SECRET = "BRUCEWAYNEISBATMAN"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ build/Release
# Dependency directories
node_modules/
jspm_packages/
client/
package-lock.json
package.json

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
Expand Down
134 changes: 134 additions & 0 deletions Controller/UserController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
const asyncHandler = require("express-async-handler")
const User = require("../Model/userModel")
const generateToken = require("../Utility/JWT-imp");
const WorkList = require("../Model/workListSchema")
const registerUser = asyncHandler(async (req, res) => {
console.log(req.body)
const { firstname, lastname, username, email, password, confirmPassword } = req.body;

const usernameExists = await User.findOne({ username });
const emailExists = await User.findOne({ email });

if (usernameExists) {
error = "Username has already been taken"
res.status(404).send(error);
throw new Error(error);
} else if (emailExists) {
error = "An account already exists under this email"
res.status(404).send(error);
throw new Error(error);
}
else if (password.length < 6) {
error = "Password should be of minimum 6 characters"
res.status(404).send(error)
throw new Error(error)
}
else if (password !== confirmPassword) {
error = "Passwords do not match"
res.status(404).send(error)
throw new Error(error)
}


const user = await User.create({
firstname,
lastname,
username,
email,
password,
});

if (user) {
res.status(201).json({
_id: user._id,
username: user.username,
email: user.email,
token: generateToken(user._id),
});
} else {
res.status(400);
throw new Error("User cannot be created");
}
});

const authUser = asyncHandler(async (req, res) => {
console.log(req.body)
const { email, password } = req.body;

const user = await User.findOne({ email });

if (user && (await user.matchPassword(password))) {
res.json({
id: user._id,
username: user.username,
email: user.email,
token: generateToken(user._id),
});
} else {
error = "Invalid Email or Password"
res.status(401).send(error);
throw new Error(error);
}
});

const reserveUser = asyncHandler(async (req, res) => {
res.status(200).json({ msg: 'you are authorized' })
})

const logoutUser = asyncHandler(async (req, res) => {
localStorage.clear();
})

const scheduleAppointment = asyncHandler(async (req, res) => {
const { workerType, location, address, phone, uid } = req.body.formData
const status = false
let list = req.body.workList

console.log(list)
console.log("***********")
let acceptedBy = null
let completed = 'false'
const workListModel = await WorkList.create({
uid,
workerType,
location,
address,
phone,
list,
status,
acceptedBy,
completed
})
console.log(workListModel)

res.status(200).end()
})

const getListOfWork = asyncHandler(async (req, res) => {
let uid = req.params.uid
// console.log("*******this is uid-**************")
// console.log(uid)
WorkList.find({uid})
.then((data) => {
// console.log('Data: ', data);
res.json(data);
})
.catch((error) => {
console.log('error: ', error);
});
});

const deleteWork = asyncHandler(async(req,res) =>{
// console.log(req.body)
let id = req.body.id
console.log(id)
WorkList.findOneAndDelete({_id: id})
.then((doc)=>{
console.log("removed: ", doc)
})
.catch((error)=>{
console.log("remove error: ", error)
})
})

module.exports = { registerUser, authUser, reserveUser, logoutUser, scheduleAppointment, getListOfWork, deleteWork };
195 changes: 195 additions & 0 deletions Controller/WorkerController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
const asyncHandler = require("express-async-handler")
const Worker = require("../Model/workerModel")
const WorkList = require("../Model/workListSchema")
const generateToken = require("../Utility/JWT-imp")

const registerWorker = asyncHandler(async (req, res) => {
console.log(req.body)
const { firstname, lastname, username, email, password, confirmPassword, phoneNumber, location, profession } = req.body;

const usernameExists = await Worker.findOne({ username });
const emailExists = await Worker.findOne({ email });

if (usernameExists) {
error = "Username has already been taken"
res.status(404).send(error);
throw new Error(error);
} else if (emailExists) {
error = "An account already exists under this email"
res.status(404).send(error);
throw new Error(error);
}
else if (password !== confirmPassword) {
error = "Passwords do not match"
res.status(404).send(error)
throw new Error(error)
}
else if (password.length < 6) {
error = "Password must be at least 6 characters"
res.status(404).send(error)
throw new Error(error)
}
const worker = await Worker.create({
firstname,
lastname,
username,
email,
password,
phoneNumber,
location,
profession
});

if (worker) {
res.status(201).json({
_id: worker._id,
username: worker.username,
email: worker.email,
token: generateToken(worker._id),
});
} else {
res.status(400);
throw new Error("Worker cannot be created");
}
});

const authWorker = asyncHandler(async (req, res) => {
console.log(req.body)
const { email, password } = req.body;
const worker = await Worker.findOne({ email });
console.log(worker)
if (worker && (await worker.matchPassword(password))) {
res.json({
id: worker._id,
username: worker.username,
email: worker.email,
category: worker.profession,
token: generateToken(worker._id),
});
} else {
error = "Invalid Email or Password"
res.status(401).send(error);
throw new Error(error);
}
});


// const updateWorkerProfile = asyncHandler(async (req, res) => {
// console.log(req.body)
// const worker = await Worker.findById(req.email);

// if (worker) {
// worker.name = req.body.name || worker.name;
// worker.email = req.body.email || worker.email;
// worker.phone = req.body.phoneNumber || worker.phoneNumber
// if (req.body.password) {
// worker.password = req.body.password;
// }

// const updatedworker = await worker.save();

// res.json({
// _id: updatedworker._id,
// name: updatedworker.name,
// email: updatedworker.email,
// pic: updatedworker.pic,
// isAdmin: updatedworker.isAdmin,
// token: generateToken(updatedworker._id),
// });
// } else {
// res.status(404);
// throw new Error("worker Not Found");
// }
// });

const getWorkerListOfWork = asyncHandler(async (req, res) => {
WorkList.find({})
.then((data) => {
console.log('Data: ', data);
res.json(data);
})
.catch((error) => {
console.log('error: ', error);
});
});

const categorizeWork = asyncHandler(async(req,res)=>{
res.status(201)
let category = req.params.category
category="Plumber"
WorkList.find({workerType: category, status:'false'})
.then((data)=>{
// console.log('Worker end data:', data);
res.json(data)
})
.catch((error)=>{
console.log("Error:", error)
})
})

const acceptWork = asyncHandler(async(req,res)=>{
const {id:work_id, uid} = req.body
console.log("work id and worker id: ", work_id, uid)
WorkList.findByIdAndUpdate(work_id, {status: 'true', location: 'ashina', acceptedBy: uid})
.then((data)=>{
console.log("Updated the status of work")
console.log(data)
})
.catch((error)=>{
console.log("Error: ", error)
})

})

const getPendingWork = asyncHandler(async(req,res)=>{
const uid = req.params.uid
console.log(uid)
WorkList.find({acceptedBy: uid, status: 'true', completed: 'false'})
.then((data)=>{
console.log("This is all pending work of uid", uid)
console.log(data)
res.json(data)
})
.catch((error)=>{
console.log("Error: ", error)
res.json(error)
})
})

const updateWorkerProfile = asyncHandler (async (req, res) => {
console.log("at update profile ")
try {
const { id } = req.params;
const updateduser = await Worker.findByIdAndUpdate(id, {
username : req.body.username,
email: req.body.email,
phoneNumber: req.body.phoneNumber,
image: {
data: req.body.image,
contentType: "image/png"
},
location: req.body.location
} ,
{
new: true
}
);
console.log(updateduser);
res.status(201).json(updateduser);
} catch (error) {
res.status(422).json(error);
}
})

const getworker = asyncHandler(async(req,res) =>{
const {id}= req.params;
try{
const userdata = await Worker.findById({_id:id});
res.status(201).json(userdata)
console.log(userdata);
} catch(error){
res.status(422).send(error);
}
})

module.exports = { registerWorker, getworker,authWorker, updateWorkerProfile, getWorkerListOfWork, categorizeWork, acceptWork, getPendingWork}
Loading