Skip to content

Commit

Permalink
🐛 Feat:Added new Controller for the Agent registration
Browse files Browse the repository at this point in the history
  • Loading branch information
Ayush-Vish committed Oct 27, 2024
1 parent a1feb77 commit c248c14
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 33 deletions.
27 changes: 12 additions & 15 deletions auth/src/controllers/auth.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,31 +77,30 @@ const clientRegister = async (
}
};

const agentRegister = async (
req: Request,
export const agentRegister = async (
req: RequestWithUser,
res: Response,
next: NextFunction
) => {
try {

const { email, password, name } = req.body;
if (!email || !password || !name) {
return next(new ApiError('Email, password, and name are required', 400));
}
console.log(req.user)
const serviceProviderId = req.user.id;
if(!serviceProviderId) {
return next(new ApiError("Agent can be registered by SERVICE_PROVIDER" , 400));

}
const agentExists = await Agent.findOne({ email });
if (agentExists) {
return next(new ApiError('Agent already exists', 400));
}
const newAgent = await Agent.create(req.body);
const token = sign(
{
id: newAgent._id,
email: newAgent.email,
name: newAgent.name,
role: 'AGENT',
},
'SOME_SECRET'
);
res.cookie('token', token, cookieOptions);

const newAgent = await Agent.create({...req.body, serviceProviderId});

return res.status(201).json({
message: 'Agent created successfully',
data: newAgent,
Expand All @@ -122,8 +121,6 @@ const register = async (req: Request, res: Response, next: NextFunction) => {
switch (role) {
case 'SERVICE_PROVIDER':
return await registerServiceProvider(req, res, next);
case 'AGENT':
return await agentRegister(req, res, next);
case 'CLIENT':
return await clientRegister(req, res, next);
default:
Expand Down
4 changes: 3 additions & 1 deletion auth/src/routes/routes.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { Router } from 'express';
import {
agentRegister,
getUserDetails,
login,
logout,
register,
} from '../controllers/auth.controller';
import { verifyJWT } from '@org/utils';
import { isAuthorized, verifyJWT } from '@org/utils';

const router = Router();

Expand All @@ -18,6 +19,7 @@ router.get('/', (req, res) => {

router.post('/register', register);
router.post('/login', login);
router.post('/agent-register' , verifyJWT , isAuthorized(["SERVICE_PROVIDER"]) , agentRegister);
router.get('/logout', logout);
router.get('/userDetail', verifyJWT, getUserDetails);

Expand Down
19 changes: 3 additions & 16 deletions db/src/lib/models/agent.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@ import { sign } from 'jsonwebtoken';
import mongoose from 'mongoose'
// Define the schema for the Agent
const agentSchema = new mongoose.Schema({
agentId: {
type: String,
// required: true,
unique: true
},

name: {
type: String,
required: true
Expand All @@ -23,39 +19,30 @@ const agentSchema = new mongoose.Schema({
},
address: {
type: String,
required: true
},
location: {
latitude: {
type: Number,
required: true
},
longitude: {
type: Number,
required: true
}
},
services: {
type: [String], // Array of services like coolerRepair, washingMachineRepair
required: true
},
serviceArea: {
type: String,
required: true
},
availability: {
type: String,
required: true
},
serviceProviderId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'ServiceProvider',
required: true
},
customerId: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Customer'
}],

rating: {
type: Number,
default: 0
Expand Down Expand Up @@ -93,7 +80,7 @@ agentSchema.method('signToken', function () {
id: this._id,
email: this.email,
name: this.name,
role: 'CLIENT',
role: 'AGENT',
},
'SOME_SECRET'
);
Expand Down
8 changes: 7 additions & 1 deletion shopkeeper/src/controllers/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,13 @@ const searchServices = async (req :Request, res: Response, next: NextFunction) =
try {
console.log('Search Services');
const { searchString, latitude, longitude, page, limit } = req.query as SearchQuery;
const services = await Service.find() ;
const services = await Service.find({});

if (!services) {
return next(new ApiError('No services found', 404));
}




} catch (error) {
Expand Down

0 comments on commit c248c14

Please sign in to comment.