Skip to content

Commit

Permalink
🎨 Update Format
Browse files Browse the repository at this point in the history
  • Loading branch information
nmdra committed Oct 13, 2024
1 parent a6081fd commit 8d5f70e
Show file tree
Hide file tree
Showing 14 changed files with 235 additions and 174 deletions.
8 changes: 6 additions & 2 deletions backend/middlewares/farmerauthMiddleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,14 @@ export const protect = async (req, res, next) => {
// Verify token
const decoded = jwt.verify(token, process.env.JWT_SECRET)
// Get farmer from the token
req.user = await Farmer.findById(decoded.userId).select('-password')
req.user = await Farmer.findById(decoded.userId).select(
'-password'
)
next()
} catch (err) {
res.status(401).json({ message: 'Not authorized, token failed' })
res.status(401).json({
message: 'Not authorized, token failed',
})
console.error('Token verification failed:', err)
throw new Error('Not authorized, token failed')
}
Expand Down
42 changes: 22 additions & 20 deletions backend/models/Blog.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
import mongoose from 'mongoose'

// Define blog schema with timestamps
const blogSchema = new mongoose.Schema({
title: {
type: String,
required: true,
minlength: 5,
maxlength: 100,
const blogSchema = new mongoose.Schema(
{
title: {
type: String,
required: true,
minlength: 5,
maxlength: 100,
},
content: {
type: String,
required: true,
minlength: 5,
},
author: {
type: String,
required: true,
},
newsImage: {
type: String,
},
},
content: {
type: String,
required: true,
minlength: 5,
},
author: {
type: String,
required: true,
},
newsImage: {
type: String,
},
}, { timestamps: true }) // Automatically adds createdAt and updatedAt fields
{ timestamps: true }
) // Automatically adds createdAt and updatedAt fields

const Blog = mongoose.model('Blog', blogSchema)
export default Blog

26 changes: 16 additions & 10 deletions backend/routes/Blog.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ router.post('/add', async (req, res) => {
})

await newBlog.save()
res.status(201).json({ message: 'Blog post created successfully', newBlog })
res.status(201).json({
message: 'Blog post created successfully',
newBlog,
})
} catch (err) {
res.status(500).json({ error: err.message })
}
Expand Down Expand Up @@ -66,13 +69,13 @@ router.get('/get/:id', async (req, res) => {
// Route to update an existing blog post
router.put('/update/:id', async (req, res) => {
try {
const { id } = req.params; // Get the blog post ID from the request parameters
const { title, content, author, newsImage } = req.body; // Extract the updated fields from the request body
const { id } = req.params // Get the blog post ID from the request parameters
const { title, content, author, newsImage } = req.body // Extract the updated fields from the request body

// Validate required fields
const errors = validateBlogFields(title, content, author);
const errors = validateBlogFields(title, content, author)
if (Object.keys(errors).length) {
return res.status(400).json({ errors });
return res.status(400).json({ errors })
}

// Find the blog post by ID and update it
Expand All @@ -86,18 +89,21 @@ router.put('/update/:id', async (req, res) => {
updatedAt: Date.now(), // Update the timestamp
},
{ new: true } // Return the updated document
);
)

// If the blog post is not found, return a 404 error
if (!updatedBlog) {
return res.status(404).json({ error: 'Blog post not found' });
return res.status(404).json({ error: 'Blog post not found' })
}

res.status(200).json({ message: 'Blog post updated successfully', updatedBlog });
res.status(200).json({
message: 'Blog post updated successfully',
updatedBlog,
})
} catch (err) {
res.status(500).json({ error: err.message });
res.status(500).json({ error: err.message })
}
});
})

// Route to delete a blog post by ID
router.delete('/delete/:id', async (req, res) => {
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/Components/Address.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ const Address = () => {
onChange={handleInputChange}
className="block w-full px-4 py-2 border rounded-md"
placeholder="Zip Code"
min="10000" // Minimum value
max="99999" // Maximum value
min="10000" // Minimum value
max="99999" // Maximum value
required
/>
</div>
Expand Down
19 changes: 11 additions & 8 deletions frontend/src/Components/Home/BlogHeader.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { Link } from 'react-router-dom';
import logo from '../../assets/logo/logo.png';
import { FaCartShopping } from 'react-icons/fa6';
import React from 'react'

Check failure on line 1 in frontend/src/Components/Home/BlogHeader.jsx

View workflow job for this annotation

GitHub Actions / ESLint Report Analysis

frontend/src/Components/Home/BlogHeader.jsx#L1

[no-unused-vars] 'React' is defined but never used.
import { Link } from 'react-router-dom'
import logo from '../../assets/logo/logo.png'
import { FaCartShopping } from 'react-icons/fa6'

const BlogHeader = ({ loading }) => {

Check failure on line 6 in frontend/src/Components/Home/BlogHeader.jsx

View workflow job for this annotation

GitHub Actions / ESLint Report Analysis

frontend/src/Components/Home/BlogHeader.jsx#L6

[react/prop-types] 'loading' is missing in props validation
return (
Expand All @@ -13,20 +13,23 @@ const BlogHeader = ({ loading }) => {
</Link>
</div>
<div>
<Link to="/shop"> {/* Update the link to the shop */}
<Link to="/shop">
{' '}
{/* Update the link to the shop */}
<button
type="button"
className="flex items-center bg-green-500 text-white px-4 py-2 rounded hover:bg-green-600"
disabled={loading}
>
<FaCartShopping className="mr-2" /> {/* Cart icon placed here */}
<FaCartShopping className="mr-2" />{' '}
{/* Cart icon placed here */}
{loading ? 'Adding...' : 'Shop with Farmcart'}
</button>
</Link>
</div>
</div>
</div>
);
)
}

export default BlogHeader;
export default BlogHeader
11 changes: 4 additions & 7 deletions frontend/src/Components/Home/Header.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -85,14 +85,11 @@ const Header = () => {
<div className="flex items-center gap-6">
{isLoggedIn ? (
<div className="flex items-center gap-4 text-sm">
<div className='pr-2'>
<Link to="/help">
Help & Support
</Link>
</div>

<CartButton cartItemCount={cartItemCount} />
<div className="pr-2">
<Link to="/help">Help & Support</Link>
</div>

<CartButton cartItemCount={cartItemCount} />

<button
className="flex items-center gap-2"
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/Components/Order/ProgressBar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import React from 'react'
import { FaShoppingCart, FaShippingFast, FaCheckCircle } from 'react-icons/fa'

const ProgressBar = ({ currentStep }) => {

Check failure on line 4 in frontend/src/Components/Order/ProgressBar.jsx

View workflow job for this annotation

GitHub Actions / ESLint Report Analysis

frontend/src/Components/Order/ProgressBar.jsx#L4

[react/prop-types] 'currentStep' is missing in props validation
const totalSteps = 3
const totalSteps = 3

const icons = [
<FaShoppingCart key="cart" />,
<FaShippingFast key="shipping" />,
<FaCheckCircle key="done" />,
<FaCheckCircle key="done" />,
]

return (
Expand Down
1 change: 0 additions & 1 deletion frontend/src/Layouts/BlogLayout.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,3 @@ function BlogLayout() {
}

export default BlogLayout

38 changes: 29 additions & 9 deletions frontend/src/Pages/blog manage/AddBlog.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function AddNews() {
// Function to handle adding news
const addNews = async (e) => {
e.preventDefault()

// Clear previous errors
setErrors({})

Expand Down Expand Up @@ -126,7 +126,10 @@ function AddNews() {
<form onSubmit={addNews}>
<div className="grid grid-cols-1 gap-6 mt-4 sm:grid-cols-2">
<div>
<label className="text-white dark:text-green-200" htmlFor="title">
<label
className="text-white dark:text-green-200"
htmlFor="title"
>
Title
</label>
<input
Expand All @@ -136,11 +139,16 @@ function AddNews() {
value={title}
onChange={(e) => setTitle(e.target.value)}
/>
{errors.title && <p className="text-red-500">{errors.title}</p>}
{errors.title && (
<p className="text-red-500">{errors.title}</p>
)}
</div>

<div>
<label className="text-white dark:text-gray-200" htmlFor="author">
<label
className="text-white dark:text-gray-200"
htmlFor="author"
>
Author
</label>
<input
Expand All @@ -150,11 +158,16 @@ function AddNews() {
value={author}
onChange={(e) => setAuthor(e.target.value)}
/>
{errors.author && <p className="text-red-500">{errors.author}</p>}
{errors.author && (
<p className="text-red-500">{errors.author}</p>
)}
</div>

<div className="col-span-2">
<label className="text-white dark:text-gray-200" htmlFor="content">
<label
className="text-white dark:text-gray-200"
htmlFor="content"
>
Content
</label>
<textarea
Expand All @@ -164,11 +177,16 @@ function AddNews() {
value={content}
onChange={(e) => setContent(e.target.value)}
/>
{errors.content && <p className="text-red-500">{errors.content}</p>}
{errors.content && (
<p className="text-red-500">{errors.content}</p>
)}
</div>

<div>
<label className="block mb-2 font-medium text-white text-l dark:text-white" htmlFor="newsImage">
<label
className="block mb-2 font-medium text-white text-l dark:text-white"
htmlFor="newsImage"
>
Upload Image
</label>
<input
Expand All @@ -183,7 +201,9 @@ function AddNews() {
{/* Image Preview Section */}
{imagePreview && (
<div className="col-span-2 mt-4">
<h2 className="text-white dark:text-gray-200">Image Preview:</h2>
<h2 className="text-white dark:text-gray-200">
Image Preview:
</h2>
<img
src={imagePreview}
alt="Preview"
Expand Down
54 changes: 27 additions & 27 deletions frontend/src/Pages/blog manage/BlogList.jsx
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import { Link } from 'react-router-dom';
import React, { useState, useEffect } from 'react'

Check failure on line 1 in frontend/src/Pages/blog manage/BlogList.jsx

View workflow job for this annotation

GitHub Actions / ESLint Report Analysis

frontend/src/Pages/blog manage/BlogList.jsx#L1

[no-unused-vars] 'React' is defined but never used.
import axios from 'axios'
import { Link } from 'react-router-dom'

function BlogList() {
const [blogs, setBlogs] = useState([]);
const [loading, setLoading] = useState(true); // Loading state
const [error, setError] = useState(null); // Error state
const [blogs, setBlogs] = useState([])
const [loading, setLoading] = useState(true) // Loading state
const [error, setError] = useState(null) // Error state

useEffect(() => {
fetchBlogs();
}, []);
fetchBlogs()
}, [])

const fetchBlogs = async () => {
setLoading(true);
setLoading(true)
try {
const res = await axios.get('/api/Blog');
setBlogs(res.data);
console.log(res.data);
const res = await axios.get('/api/Blog')
setBlogs(res.data)
console.log(res.data)
} catch (err) {
console.error(err);
setError('Failed to load blogs.'); // Set error message
console.error(err)
setError('Failed to load blogs.') // Set error message
} finally {
setLoading(false);
setLoading(false)
}
};
}

const deleteBlog = async (id) => {
const confirmed = window.confirm(
'Are you sure you want to delete this Blog?'
);
)
if (confirmed) {
try {
await axios.delete(`/api/Blog/delete/${id}`);
alert('Blog deleted successfully!');
fetchBlogs(); // Refresh the blog list
await axios.delete(`/api/Blog/delete/${id}`)
alert('Blog deleted successfully!')
fetchBlogs() // Refresh the blog list
} catch (error) {
console.error('Error deleting blog:', error);
alert('Blog deletion failed.');
console.error('Error deleting blog:', error)
alert('Blog deletion failed.')
}
}
};
}

if (loading) {
return <div className="text-center">Loading blogs...</div>; // Loading message
return <div className="text-center">Loading blogs...</div> // Loading message
}

if (error) {
return <div className="text-center text-red-500">{error}</div>; // Error message
return <div className="text-center text-red-500">{error}</div> // Error message
}

return (
Expand Down Expand Up @@ -103,7 +103,7 @@ function BlogList() {
</div>
</section>
</>
);
)
}

export default BlogList;
export default BlogList
Loading

0 comments on commit 8d5f70e

Please sign in to comment.