Skip to content

Commit

Permalink
🎨 Fix Format
Browse files Browse the repository at this point in the history
  • Loading branch information
nmdra committed Aug 26, 2024
1 parent e0f390a commit 2efd81a
Show file tree
Hide file tree
Showing 56 changed files with 6,109 additions and 3,384 deletions.
1 change: 0 additions & 1 deletion backend/config/db.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,3 @@ const connectDB = async () => {
}

export default connectDB

170 changes: 99 additions & 71 deletions backend/controllers/farmerController.js
Original file line number Diff line number Diff line change
@@ -1,38 +1,55 @@
import asyncHandler from '../middlewares/asyncHandler.js';
import Farmer from '../models/farmerModel.js';
import { generateToken } from '../utils/genrateToken.js';
import asyncHandler from '../middlewares/asyncHandler.js'
import Farmer from '../models/farmerModel.js'
import { generateToken } from '../utils/genrateToken.js'

// @desc Register a new farmer
// @route POST /api/farmers/register
// @access Public
const registerFarmer = asyncHandler(async (req, res) => {
const { name, BirthDay, NIC, Address, email, contactNumber, password } = req.body;
const { name, BirthDay, NIC, Address, email, contactNumber, password } =
req.body

// Check if all required fields are provided
if (!name || !BirthDay || !NIC || !Address || !email || !contactNumber || !password) {
return res.status(400).json({ message: 'All fields are required' });
if (
!name ||
!BirthDay ||
!NIC ||
!Address ||
!email ||
!contactNumber ||
!password
) {
return res.status(400).json({ message: 'All fields are required' })
}

// Check if the farmer already exists by email
try {
const farmerByEmail = await Farmer.findOne({ email });
const farmerByEmail = await Farmer.findOne({ email })
if (farmerByEmail) {
return res.status(400).json({ message: 'Farmer with this email already exists' });
return res
.status(400)
.json({ message: 'Farmer with this email already exists' })
}
} catch (error) {
console.error('Error checking email:', error);
return res.status(500).json({ message: 'Error checking email', error: error.message });
console.error('Error checking email:', error)
return res
.status(500)
.json({ message: 'Error checking email', error: error.message })
}

// Check if the farmer already exists by NIC
try {
const farmerByNIC = await Farmer.findOne({ NIC });
const farmerByNIC = await Farmer.findOne({ NIC })
if (farmerByNIC) {
return res.status(400).json({ message: 'Farmer with this NIC already exists' });
return res
.status(400)
.json({ message: 'Farmer with this NIC already exists' })
}
} catch (error) {
console.error('Error checking NIC:', error);
return res.status(500).json({ message: 'Error checking NIC', error: error.message });
console.error('Error checking NIC:', error)
return res
.status(500)
.json({ message: 'Error checking NIC', error: error.message })
}

// Create a new Farmer
Expand All @@ -44,10 +61,10 @@ const registerFarmer = asyncHandler(async (req, res) => {
email,
contactNumber,
password,
});
})

// Generate and set token in cookie
generateToken(res, farmer._id);
generateToken(res, farmer._id)

// Respond with the farmer details and token
res.status(201).json({
Expand All @@ -59,39 +76,39 @@ const registerFarmer = asyncHandler(async (req, res) => {
email: farmer.email,
contactNumber: farmer.contactNumber,
token: generateToken(res, farmer._id), // Include token in the response
});
});
})
})

// @desc Authenticate farmer & get token
// @route POST /api/farmers/login
// @access Public
const authFarmer = asyncHandler(async (req, res) => {
const { email, password } = req.body;
const { email, password } = req.body

// Find farmer by email
const farmer = await Farmer.findOne({ email });
const farmer = await Farmer.findOne({ email })

// Check if farmer exists and passwords match
if (farmer && (await farmer.matchPassword(password))) {
const token = generateToken(res, farmer._id);
const token = generateToken(res, farmer._id)
res.json({
_id: farmer._id,
name: farmer.name,
email: farmer.email,
token, // Send the token in the response body
});
})
} else {
res.status(401);
throw new Error('Invalid email or password');
res.status(401)
throw new Error('Invalid email or password')
}
});
})

// @desc Get farmer profile
// @route GET /api/farmers/profile
// @access Private (or Public if no auth check is required)
const getFarmerProfile = asyncHandler(async (req, res) => {
// Find farmer by ID from the request (req.user._id should be set by authentication middleware)
const farmer = await Farmer.findById(req.user._id);
const farmer = await Farmer.findById(req.user._id)

if (farmer) {
res.json({
Expand All @@ -102,44 +119,49 @@ const getFarmerProfile = asyncHandler(async (req, res) => {
Address: farmer.Address,
email: farmer.email,
contactNumber: farmer.contactNumber,
});
})
} else {
res.status(404);
throw new Error('Farmer not found');
res.status(404)
throw new Error('Farmer not found')
}
});
})

// @desc Update farmer profile
// @route PUT /api/farmers/profile
// @access Private (or Public if no auth check is required)
const updateFarmerProfile = asyncHandler(async (req, res) => {
try {
const farmer = await Farmer.findById(req.user._id);
const farmer = await Farmer.findById(req.user._id)

if (!farmer) {
return res.status(404).json({ message: 'Farmer not found' });
return res.status(404).json({ message: 'Farmer not found' })
}

// Validate password format if provided
if (req.body.password) {
const passwordIsValid = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/.test(req.body.password);
const passwordIsValid =
/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/.test(
req.body.password
)
if (!passwordIsValid) {
return res.status(400).json({ message: 'Invalid password format' });
return res
.status(400)
.json({ message: 'Invalid password format' })
}

// Hash the new password
farmer.password = await bcrypt.hash(req.body.password, 10);
farmer.password = await bcrypt.hash(req.body.password, 10)
}

// Update other fields
farmer.name = req.body.name || farmer.name;
farmer.BirthDay = req.body.BirthDay || farmer.BirthDay;
farmer.NIC = req.body.NIC || farmer.NIC;
farmer.Address = req.body.Address || farmer.Address;
farmer.email = req.body.email || farmer.email;
farmer.contactNumber = req.body.contactNumber || farmer.contactNumber;
farmer.name = req.body.name || farmer.name
farmer.BirthDay = req.body.BirthDay || farmer.BirthDay
farmer.NIC = req.body.NIC || farmer.NIC
farmer.Address = req.body.Address || farmer.Address
farmer.email = req.body.email || farmer.email
farmer.contactNumber = req.body.contactNumber || farmer.contactNumber

const updatedFarmer = await farmer.save();
const updatedFarmer = await farmer.save()

res.json({
_id: updatedFarmer._id,
Expand All @@ -150,10 +172,13 @@ const updateFarmerProfile = asyncHandler(async (req, res) => {
email: updatedFarmer.email,
contactNumber: updatedFarmer.contactNumber,
token: generateToken(res, updatedFarmer._id), // Generate new token and include in response
});
})
} catch (error) {
console.error('Error updating profile:', error.message); // Detailed logging
res.status(500).json({ message: 'Error updating farmer profile', error: error.message });
console.error('Error updating profile:', error.message) // Detailed logging
res.status(500).json({
message: 'Error updating farmer profile',
error: error.message,
})
}
})

Expand All @@ -164,38 +189,41 @@ const logoutFarmer = asyncHandler(async (req, res) => {
// Clear the token cookie
res.cookie('token', '', {
httpOnly: true,
expires: new Date(0), // Set the cookie expiration to a past date
});
expires: new Date(0), // Set the cookie expiration to a past date
})

res.status(200).json({ message: 'Farmer logged out successfully' });
});
res.status(200).json({ message: 'Farmer logged out successfully' })
})

// @desc Delete farmer account
// @route DELETE /api/farmers/profile
// @access Private (or Public if no auth check is required)
const deleteFarmerAccount = asyncHandler(async (req, res) => {
try {
// Find and delete farmer by ID
const farmer = await Farmer.findByIdAndDelete(req.user._id);
const farmer = await Farmer.findByIdAndDelete(req.user._id)

if (!farmer) {
res.status(404);
throw new Error('Farmer not found');
res.status(404)
throw new Error('Farmer not found')
}

res.status(200).json({ message: 'Farmer account deleted successfully' });
res.status(200).json({ message: 'Farmer account deleted successfully' })
} catch (error) {
console.error('Error deleting farmer account:', error); // Log the full error
res.status(500).json({ message: 'Error deleting farmer account', error: error.message });
console.error('Error deleting farmer account:', error) // Log the full error
res.status(500).json({
message: 'Error deleting farmer account',
error: error.message,
})
}
});
})

// @desc Get farmer by ID
// @route GET /api/farmers/:id
// @access Private (or Public if no auth check is required)
const getFarmerById = asyncHandler(async (req, res) => {
// Find farmer by ID from the request parameters
const farmer = await Farmer.findById(req.params.id);
const farmer = await Farmer.findById(req.params.id)

if (farmer) {
res.json({
Expand All @@ -206,19 +234,19 @@ const getFarmerById = asyncHandler(async (req, res) => {
Address: farmer.Address,
email: farmer.email,
contactNumber: farmer.contactNumber,
});
})
} else {
res.status(404);
throw new Error('Farmer not found');
res.status(404)
throw new Error('Farmer not found')
}
});

export {
registerFarmer,
authFarmer,
getFarmerProfile,
updateFarmerProfile,
logoutFarmer,
deleteFarmerAccount,
getFarmerById
};
})

export {
registerFarmer,
authFarmer,
getFarmerProfile,
updateFarmerProfile,
logoutFarmer,
deleteFarmerAccount,
getFarmerById,
}
7 changes: 3 additions & 4 deletions backend/controllers/orderController.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { MOCK_DATA } from "../data/MOCK_ORDERS.js";
import { MOCK_DATA } from '../data/MOCK_ORDERS.js'

export const getAllOrders = async (req, res, next) => {
try {
res.json(MOCK_DATA);

res.json(MOCK_DATA)
} catch (error) {
return next(error)
}
}
}
Loading

0 comments on commit 2efd81a

Please sign in to comment.