Commit cf517367 authored by Weerasinghe D.N.H's avatar Weerasinghe D.N.H

db commit

parent a68ec64c
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/backend" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
......
import React, { useEffect, useState } from "react";
import axios from "axios";
import { useParams } from "react-router-dom";
import Sidebar from "../components/sidebar/Sidebar";
import TopNav from "../components/topnav/TopNav";
import "../assets/css/Usercreate.css";
const DeliveryReportSubmit = () => {
const { id } = useParams();
const [btnState, setBtnState] = useState(false);
const [error, setError] = useState("");
const [deliveryReport, setDeliveryReport] = useState({});
const saveDeliveryReport = async (e) => {
e.preventDefault();
setBtnState(true);
if (!deliveryReport.description) {
setBtnState(false);
return setError("Please fill all the fields");
}
try {
const res = await axios.post("/reports/deliveryreport", deliveryReport);
if (res.status === 201) {
setDeliveryReport({});
getOrderDetails();
setError("");
const res = await axios.put(`orders/supplier/submitted/${id}`);
if (res.status === 200) {
window.alert("Delivery report registered successfully");
window.location.href = "/auth/supplier/deliveryreports";
}
}
setBtnState(false);
} catch (err) {
setBtnState(false);
console.log(err.response);
}
};
const getOrderDetails = async () => {
try {
const res = await axios.get(`orders/${id}`);
console.log(res.data);
setDeliveryReport(res.data.order);
} catch (err) {
console.log(err.response);
}
};
useEffect(() => getOrderDetails(), []);
return (
<div>
<Sidebar />
<div id="main" className="layout__content">
<TopNav />
<div className="layout__content-main">
<h1 className="page-header">Submit Delivery Report</h1>
<div className="row">
<div className="col-12">
<form className="card" style={{ position: "relative" }}>
{error && (
<div className="error-bg" style={{ left: "3%" }}>
<p>{error}</p>
</div>
)}
<div className="row">
<div className="col-4">
<label htmlFor="">Order Item</label>
<div className="row-user">
<input
disabled
type="text"
placeholder="Delivered Item"
value={deliveryReport.itemName}
required
/>
</div>
</div>
<div className="col-4">
<label htmlFor="">Order ID</label>
<div className="row-user">
<input
disabled
type="text"
placeholder="Order ID"
value={deliveryReport._id}
required
/>
</div>
</div>
<div className="col-4">
<label htmlFor="">Quantity</label>
<div className="row-user">
<input
disabled
type="text"
placeholder="Quantity"
value={deliveryReport.quantity}
required
/>
</div>
</div>
</div>
<div className="row">
<div className="col-4">
<label htmlFor="">Total</label>
<div className="row-user">
<input
disabled
type="text"
placeholder="Delivered Item"
value={deliveryReport.total}
required
/>
</div>
</div>
<div className="col-4">
<label htmlFor="">Order Type</label>
<div className="row-user">
<input
disabled
type="text"
placeholder="Order ID"
value={
deliveryReport.urgentOrder === false
? "Regular Order"
: "Urgent Order"
}
required
/>
</div>
</div>
</div>
<div className="row">
<div className="col-12">
<div className="row-user">
<input
type="text"
placeholder="Description"
value={deliveryReport.description}
onChange={(e) =>
setDeliveryReport({
...deliveryReport,
description: e.target.value,
})
}
required
/>
</div>
</div>
</div>
<div className="row-user">
<button type="submit" onClick={saveDeliveryReport}>
{btnState ? "Saving" : "Save"}
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
);
};
export default DeliveryReportSubmit;
import React, { useState, useEffect } from "react";
import { Link } from "react-router-dom";
import Sidebar from "../components/sidebar/Sidebar";
import TopNav from "../components/topnav/TopNav";
import Table from "../components/table/Table";
import Badge from "../components/badge/Badge";
import axios from "axios";
const ManageAllOrders = () => {
const fields = [
"Order ID",
"Item Name",
"Quantity",
"Total",
"Created Date",
"Status",
];
const [orders, setOrders] = useState(null);
const renderOrderHead = (item, index) => <th key={index}>{item}</th>;
const renderOrderBody = (item, index) => (
<tr key={index}>
<td>{index + 1}</td>
<td>{item.itemName}</td>
<td>{item.quantity}</td>
<td>{item.total}</td>
<td>{new Date(item.createdAt).toLocaleDateString()}</td>
<td>
<Badge
type={permissionStatus[item.isApprovedByOfficer]}
content={item.isApprovedByOfficer}
/>
</td>
</tr>
);
const getAllOrder = async () => {
const res = await axios.get("orders/getAllOrdersByManager");
console.log(res.data.orders);
setOrders(res.data.orders);
};
useEffect(() => {
getAllOrder();
}, []);
const permissionStatus = {
pending: "warning",
approved: "success",
rejected: "danger",
};
return (
<div>
<Sidebar />
<div id="main" className="layout__content">
<TopNav />
<div className="layout__content-main">
<div className="card">
<h2>All Order Details</h2>
{orders && (
<Table
limit="10"
headData={fields}
renderHead={(item, index) => renderOrderHead(item, index)}
bodyData={orders}
renderBody={(item, index) => renderOrderBody(item, index)}
/>
)}
</div>
<Link to={"/auth/manager/ApprovedOrders"}>
<div className="row-user">
<button>Approved Orders</button>
</div>
</Link>
</div>
</div>
</div>
);
};
export default ManageAllOrders;
import React, { useState, useEffect } from "react";
import axios from "axios";
import Sidebar from "../components/sidebar/Sidebar";
import Spinner from "../components/loading/Spinner";
import TopNav from "../components/topnav/TopNav";
import Table from "../components/table/Table";
import Badge from "../components/badge/Badge";
import "../components/badge/badge.css";
import "react-calendar/dist/Calendar.css";
const ManageDeliveryReports = () => {
const [suppliers, setSuppliers] = useState([]);
const [isLoading, setIsLoading] = useState(true);
const fields = [
"",
"Item",
"Quantity",
"Description",
"Total",
"Delivered Address",
"Order Type",
];
const getAllSuppliers = async () => {
setIsLoading(true);
try {
const res = await axios.get(`reports/deliveryreport/supplier`);
console.log(res);
setSuppliers(res.data.reports);
setIsLoading(false);
} catch (err) {
console.log(err.response);
}
};
useEffect(() => getAllSuppliers(), []);
const renderOrderHead = (item, index) => <th key={index}>{item}</th>;
const renderOrderBody = (item, index) => (
<tr key={index}>
<td>{index + 1}</td>
<td>{item.item}</td>
<td>{item.quantity}</td>
<td>{item.description}</td>
<td>{item.total}</td>
<td>{item.address}</td>
<td>
{item.urgentOrder ? (
<div style={{ cursor: "pointer" }}>
<Badge type="danger" content="Urgent" />
</div>
) : (
<div style={{ cursor: "pointer" }}>
<Badge type="primary" content="Regular" />
</div>
)}
</td>
</tr>
);
return (
<div>
<Sidebar />
<div id="main" className="layout__content">
<TopNav />
<div className="layout__content-main">
<h1 className="page-header">Manage Delivery Reports</h1>
<div className="row"></div>
<div className="row">
<div className="col-12">
<div className="card">
{isLoading ? (
<Spinner />
) : (
<Table
limit="5"
headData={fields}
renderHead={(item, index) => renderOrderHead(item, index)}
bodyData={suppliers}
renderBody={(item, index) => renderOrderBody(item, index)}
/>
)}
</div>
</div>
</div>
</div>
</div>
</div>
);
};
export default ManageDeliveryReports;
import React, { useEffect, useState } from "react";
import Sidebar from "../components/sidebar/Sidebar";
import TopNav from "../components/topnav/TopNav";
import Table from "../components/table/Table";
import Spinner from "../components/loading/Spinner";
import "../assets/css/Usercreate.css";
import axios from "axios";
const ManageUsers = () => {
const [error, setError] = useState("");
const [btnState, setBtnState] = useState(false);
const [isLoading, setIsLoading] = useState(true);
const [siteManagers, setSiteManagers] = useState([]);
const [sites, setSites] = useState([]);
const [site, setSite] = useState({
name: "",
location: "",
siteManagerId: "",
});
const fields = ["", "Site Name", "Location", "Site Manager", "Email"];
const renderOrderHead = (item, index) => <th key={index}>{item}</th>;
const renderOrderBody = (item, index) => (
<tr key={index}>
<td>{index + 1}</td>
<td>{item.name}</td>
<td>{item.location}</td>
<td>{item.siteManagerId ? item.siteManagerId.name : "Not Assigned"}</td>
<td>{item.siteManagerId ? item.siteManagerId.email : "Not Assigned"}</td>
</tr>
);
const saveSite = async (e) => {
e.preventDefault();
setBtnState(true);
for (let key of Object.keys(site)) {
if (!site[key]) {
setBtnState(false);
return setError("Please fill all the fields");
}
}
if (site.siteManagerId === "sitemanager") {
setBtnState(false);
return setError("Please fill all the fields");
}
try {
const res = await axios.post("sites", site);
setSite({
name: "",
location: "",
siteManagerId: "",
});
getAllSites();
setError("");
window.alert("Site registered successfully");
setBtnState(false);
setIsLoading(true);
} catch (err) {
setBtnState(false);
console.log(err.response);
}
};
const getAllSites = async () => {
try {
const res = await axios.get(`sites`);
setSites(res.data.sites);
console.log(res.data.sites);
setIsLoading(false);
} catch (err) {
console.log(err.response);
}
};
const getAllSiteManagers = async () => {
try {
const res = await axios.get(`sitemanagers`);
setSiteManagers(res.data.sitemanagers);
} catch (err) {
console.log(err.response);
}
};
useEffect(() => {
getAllSites();
getAllSiteManagers();
}, []);
return (
<div>
<Sidebar />
<div id="main" className="layout__content">
<TopNav />
<div className="layout__content-main">
<h1 className="page-header">Manage Sites</h1>
<div className="row">
<div className="col-12">
<form className="card" style={{ position: "relative" }}>
{error && (
<div className="error-bg" style={{ left: "3%" }}>
<p>{error}</p>
</div>
)}
<div className="row">
<div className="col-6">
<div className="row-user">
<input
type="text"
placeholder="Site Name"
value={site.name}
onChange={(e) =>
setSite({
...site,
name: e.target.value,
})
}
required
/>
</div>
</div>
<div className="col-6">
<div className="row-user">
<input
type="text"
placeholder="Site Location"
value={site.location}
onChange={(e) =>
setSite({
...site,
location: e.target.value,
})
}
required
/>
</div>
</div>
<div className="col-6">
<div className="row-user">
<select
name="site"
id="site"
value={site.siteManagerId}
onChange={(e) =>
setSite({
...site,
siteManagerId: e.target.value,
})
}
required
>
<option defaultValue value="sitemanager">
SELECT SITE MANAGER
</option>
{siteManagers.length !== 0 &&
siteManagers.map((siteManager) => (
<option value={siteManager._id}>
{siteManager.name}
</option>
))}
</select>
</div>
</div>
</div>
<div className="row-user">
<button type="submit" onClick={saveSite}>
{btnState ? "Saving" : "Save"}
</button>
</div>
</form>
</div>
</div>
<div className="card">
<h2>Site Details</h2>
{isLoading ? (
<Spinner />
) : (
<Table
limit="5"
headData={fields}
renderHead={(item, index) => renderOrderHead(item, index)}
bodyData={sites}
renderBody={(item, index) => renderOrderBody(item, index)}
/>
)}
</div>
</div>
</div>
</div>
);
};
export default ManageUsers;
import React, { useState, useEffect } from "react";
import { Link } from "react-router-dom";
import Calendar from "react-calendar";
import Sidebar from "../components/sidebar/Sidebar";
import TopNav from "../components/topnav/TopNav";
import Table from "../components/table/Table";
import "react-calendar/dist/Calendar.css";
import "../components/badge/badge.css";
import AdminGreeting from "../assets/images/admin-greeting.png";
import Badge from "../components/badge/Badge";
import profilePicture from "../assets/images/admin-user-img.jpg";
import axios from "axios";
import status from "../helpers/greeting";
const OfficerDashboard = () => {
const [value, onChange] = useState(new Date());
const [orders, setOrders] = useState(null);
const fields = [
"Order ID",
"Item Name",
"Quantity",
"Total",
"Created Date",
"Status",
];
const rows = [
{
id: "1",
date: "2021.08.06",
houseOwner: "Gayath Chandula",
providence: "Pool",
status: "Approved",
},
{
id: "2",
date: "2021.08.06",
houseOwner: "Gayath Chandula",
providence: "Pool",
status: "Pending",
},
{
id: "3",
date: "2021.08.06",
houseOwner: "Gayath Chandula",
providence: "Pool",
status: "Declined",
},
{
id: "4",
date: "2021.08.06",
houseOwner: "Gayath Chandula",
providence: "Pool",
status: "Pending",
},
{
id: "4",
date: "2021.08.06",
houseOwner: "Gayath Chandula",
providence: "Pool",
status: "Pending",
},
{
id: "4",
date: "2021.08.06",
houseOwner: "Gayath Chandula",
providence: "Pool",
status: "Pending",
},
];
const permissionStatus = {
pending: "warning",
Approved: "success",
Declined: "danger",
};
const deleteHandler = (id) => {
console.log(id);
};
const renderOrderHead = (item, index) => <th key={index}>{item}</th>;
const renderOrderBody = (item, index) => (
<tr key={index}>
<td>{index + 1}</td>
<td>{item.itemName}</td>
<td>{item.quantity}</td>
<td>{item.total}</td>
<td>{new Date(item.createdAt).toLocaleDateString()}</td>
<td>
<Badge
type={permissionStatus[item.isApprovedByOfficer]}
content={item.isApprovedByOfficer}
/>
</td>
<td className="">
{item.status === "Pending" && (
<>
<button className="action-btn check">
<i className="bx bx-check"></i>
</button>
<button className="action-btn x">
<i
className="bx bx-x"
onClick={() => {
if (window.confirm("Are you sure to delete this request?")) {
deleteHandler(item.id);
}
}}
></i>
</button>
</>
)}
</td>
</tr>
);
const getAllOrder = async () => {
const res = await axios.get("orders/officer");
setOrders(res.data.orders);
console.log(res);
};
console.log(orders);
useEffect(() => {
getAllOrder();
}, []);
return (
<div>
<Sidebar />
<div id="main" className="layout__content">
<TopNav />
<div className="layout__content-main">
<div className="row">
<div className="col-8 full-width">
<div className="card greeting-card">
<div className="row">
<div className="col-8 flex-column">
<h1 className="page-header">{`Good ${status}!`} </h1>
<h3>
Today you have{" "}
{orders &&
orders.filter(
(order) => order.isApprovedByOfficer === "pending"
).length}{" "}
new notifications
</h3>
<h3>Also new booking appointments for approval</h3>
<Link className="read-more">
Read more <i className="bx bx-right-arrow-alt"></i>
</Link>
</div>
<div className="col-4">
<img
className="admin-greeting"
src={AdminGreeting}
alt=""
/>
</div>
</div>
</div>
</div>
<div className="col-4 full-width">
<div className="card">
<h2
className="request-title"
style={{ color: "transparent", marginBottom: "-.2rem" }}
>
Calender
</h2>
<Calendar
className="calender"
onChange={onChange}
value={value}
/>
</div>
</div>
</div>
<div className="row">
<div className="col-8">
<div className="card">
<div className="flex">
<h2 className="request-title">New Orders</h2>
<Link to={`/auth/officers/orderlist`}>
<button className="view-btn">View All</button>
</Link>
</div>
{orders ? (
<Table
limit="5"
headData={fields}
renderHead={(item, index) => renderOrderHead(item, index)}
bodyData={orders}
renderBody={(item, index) => renderOrderBody(item, index)}
/>
) : (
<div></div>
)}
</div>
</div>
<div className="col-4">
<div className="card">
<div className="row">
<div className="col-4 full-width-1496">
<img
src={profilePicture}
alt=""
className="profile-picture"
/>
</div>
<div className="col-8">
<h2>{localStorage.getItem("name")}</h2>
<h3 className="lighter">OFFICER</h3>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
);
};
export default OfficerDashboard;
import React, { useState, useEffect } from "react";
import Sidebar from "../components/sidebar/Sidebar";
import TopNav from "../components/topnav/TopNav";
import Table from "../components/table/Table";
import Badge from "../components/badge/Badge";
import axios from "axios";
import Popup from "./Popup";
import { MdDelete } from "react-icons/md";
import {
FaCheckCircle,
FaExclamationTriangle,
FaCheckDouble,
} from "react-icons/fa";
const OfficerOrders = () => {
const fields = [
"Order ID",
"Item Name",
"Quantity",
"Total",
"Created Date",
"Status",
"Actions",
];
const [orders, setOrders] = useState(null);
const [trigger, setTrigger] = useState(false);
const acceptOrder = async (id) => {
console.log("hi");
try {
const res = await axios.put(`orders/officer/${id}`, {
status: "approved",
});
console.log(res);
} catch (err) {
console.log(err.response);
}
getAllOrder();
};
const deleteHandler = async (id) => {
// console.log("hi");
try {
const res = await axios.put(`orders/officer/${id}`, {
status: "rejected",
});
console.log(res);
} catch (err) {
console.log(err.response);
}
getAllOrder();
};
const renderOrderHead = (item, index) => <th key={index}>{item}</th>;
const renderOrderBody = (item, index) => (
<tr key={index}>
<td>{index + 1}</td>
<td>{item.itemName}</td>
<td>{item.quantity}</td>
<td>{item.total}</td>
<td>{new Date(item.createdAt).toLocaleDateString()}</td>
<td>
<Badge
type={permissionStatus[item.isApprovedByOfficer]}
content={item.isApprovedByOfficer}
/>
</td>
<td>
{item.isApprovedByOfficer == "pending" ? (
<FaCheckCircle
className="action-btn check"
onClick={() => {
acceptOrder(item._id);
window.alert("order accepted successfully");
window.location.reload();
}}
/>
) : item.isApprovedByOfficer == "approved" ? (
<FaCheckDouble className="action-btn check " />
) : (
""
)}
{item.isApprovedByOfficer == "pending" ? (
<>
<MdDelete
className="action-btn x"
onClick={() => {
// if (window.confirm("Are you sure to delete this request?")) {
deleteHandler(item._id);
setTrigger(true);
// }
}}
/>
<Popup
trigger={trigger}
setTrigger={setTrigger}
orderId={item._id}
name="rejectReason"
/>
</>
) : item.isApprovedByOfficer == "rejected" ? (
<FaExclamationTriangle className="action-btn x" />
) : (
""
)}
{item.isApprovedByOfficer == "approved" && !item.supplierId ? (
<>
<button
className="action-btn item-assign "
onClick={() => {
setTrigger(true);
}}
>
<i className="bx bxs-user-plus"></i>
</button>
<Popup
trigger={trigger}
setTrigger={setTrigger}
order={item.itemName}
orderId={item._id}
materialId={item.orderItem}
sitemng={item.siteManagerId}
total={item.total}
name="Assign"
/>
</>
) : (
""
)}
</td>
</tr>
);
const getAllOrder = async () => {
const res = await axios.get("orders/officer/orders");
// console.log(res.data.orders);
setOrders(res.data.orders);
};
useEffect(() => {
getAllOrder();
}, []);
const permissionStatus = {
pending: "warning",
approved: "success",
rejected: "danger",
};
return (
<div>
<Sidebar />
<div id="main" className="layout__content">
<TopNav />
<div className="layout__content-main">
{orders && (
<Table
limit="10"
headData={fields}
renderHead={(item, index) => renderOrderHead(item, index)}
bodyData={orders}
renderBody={(item, index) => renderOrderBody(item, index)}
/>
)}
</div>
</div>
</div>
);
};
export default OfficerOrders;
import React, { useEffect, useState } from "react";
import { Link } from "react-router-dom";
import Sidebar from "../components/sidebar/Sidebar";
import TopNav from "../components/topnav/TopNav";
import Table from "../components/table/Table";
import AdminGreeting from "../assets/images/admin-greeting.png";
import Badge from "../components/badge/Badge";
import "../components/badge/badge.css";
import Calendar from "react-calendar";
import "react-calendar/dist/Calendar.css";
import profilePicture from "../assets/images/user2.jpg";
import Spinner from "../components/loading/Spinner";
import axios from "axios";
const SiteManagerDashboard = () => {
const [value, onChange] = useState(new Date());
const fields = ["", "Required Date", "Item", "Quantity", "Delivery Status"];
const [OrderDetail, setOrderDetail] = useState([])
const [Loading, setLoading] = useState(false);
useEffect(() => {
const FetchData = async () => {
const res = await axios.get("/orders/approved");
setOrderDetail(res.data.orders);
console.log(res.data);
if(res.statusText === "OK" ){
setLoading(true)
}
};
FetchData();
}, []);
const renderOrderHead = (item, index) => <th key={index}>{item}</th>;
const renderOrderBody = (item, index) => (
<tr key={index}>
<td>{index + 1}</td>
<td>{item.requiredDate}</td>
<td>{item.itemName}</td>
<td>{item.quantity}</td>
<td>
<div className="row-user" style={{ paddingTop: "0" }}>
{item.DeliveryStatus === "pending" ? (
<Badge type="warning" content={item.DeliveryStatus} />
) : item.DeliveryStatus === "preparing" ? (
<Badge type="primary" content={item.DeliveryStatus} />
) : item.DeliveryStatus === "delivering" ? (
<Badge type="success" content={item.DeliveryStatus} />
) : item.DeliveryStatus === "delivered" ? (
<Badge type="success" content={item.DeliveryStatus} />
) : (
""
)}
</div>
</td>
</tr>
);
return (
<div>
<Sidebar />
<div id="main" className="layout__content">
<TopNav />
<div className="layout__content-main">
<div className="row">
<div className="col-8 full-width">
<div className="card greeting-card">
<div className="row">
<div className="col-8 flex-column">
<h1 className="page-header">Good Morning! </h1>
<h3>Today you have 9 new notifications</h3>
<h3>Also new booking appointments for approval</h3>
<Link className="read-more">
Read more <i className="bx bx-right-arrow-alt"></i>
</Link>
</div>
<div className="col-4">
<img
className="admin-greeting"
src={AdminGreeting}
alt=""
/>
</div>
</div>
</div>
</div>
<div className="col-4 full-width">
<div className="card">
<h2
className="request-title"
style={{ color: "transparent", marginBottom: "-.2rem" }}
>
Calender
</h2>
<Calendar
className="calender"
onChange={onChange}
value={value}
/>
</div>
</div>
</div>
<div className="row">
<div className="col-8">
<div className="card">
<div className="flex">
<h2 className="request-title">New Orders</h2>
<Link to={`/auth/sitemanager/requisitions`}>
<button className="view-btn">View All</button>
</Link>
</div>
{Loading ? <Table
limit="5"
headData={fields}
renderHead={(item, index) => renderOrderHead(item, index)}
bodyData={OrderDetail}
renderBody={(item, index) => renderOrderBody(item, index)}
/>:<Spinner/>}
</div>
</div>
<div className="col-4">
<div className="card">
<div className="row">
<div className="col-4 full-width-1496">
<img
src={profilePicture}
alt=""
className="profile-picture"
/>
</div>
<div className="col-8">
<h2>{localStorage.getItem("name")}</h2>
<h3 className="lighter">SITE MANAGER</h3>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
);
};
export default SiteManagerDashboard;
......@@ -2,52 +2,21 @@ import axios from "axios";
import React, { useEffect, useState } from "react";
import Sidebar from "../components/sidebar/Sidebar";
import TopNav from "../components/topnav/TopNav";
import Table from "../components/table/Table";
import Badge from "../components/badge/Badge";
import Spinner from "../components/loading/Spinner";
import { MdDelete } from "react-icons/md";
import { VscReport } from "react-icons/vsc";
import Popup from "./Popup";
import { useParams } from "react-router-dom";
const StudentSubjectAssingment = () => {
const siteId = localStorage.getItem("site");
const [Materials, setMaterials] = useState([]);
const fields = [
"",
"Required Date",
"Item",
"Quantity",
"Order Status",
"Delivery Status",
"Action",
"Goods Receipt",
];
const [OrderDetail, setOrderDetail] = useState([]);
const { id } = useParams();
const [Loading, setLoading] = useState(false);
const [Trigger, setTrigger] = useState(false);
const [Name, setName] = useState("");
const [Id, setId] = useState("");
const [ItemName, setItemName] = useState("");
const [Description, setDescription] = useState("");
const [Order, setOrder] = useState({
item: {},
quantity: 0,
siteid: siteId,
requiredDate: "",
urgentOrder: false,
});
console.log(Order);
const [assignment, setAssignment] = useState([]);
const FetchData = async () => {
const resMaterials = await axios.get(`materials`);
setMaterials(resMaterials.data.materials);
const resOrders = await axios.get("/orders");
setOrderDetail(resOrders.data.orders);
if (resOrders.statusText === "OK") {
setLoading(true);
try {
const res = await axios.get("assignments/" + id);
setAssignment(res.data.assignment);
} catch (error) {
console.log(error.response);
}
};
......@@ -55,189 +24,25 @@ const StudentSubjectAssingment = () => {
FetchData();
}, []);
const deleteHandler = async (id) => {
console.log(id);
try {
const res = await axios.delete(`/orders/delete/${id}`);
if (res.statusText === "OK") {
window.location.reload();
}
} catch (Err) {
console.log(Err.response);
}
};
const orderHandler = async () => {
try {
console.log(Order);
const res = await axios.post("/orders", Order);
if (res.statusText === "OK") {
window.location.reload();
}
} catch (Err) {
console.log(Err.response);
}
};
const renderOrderHead = (item, index) => <th key={index}>{item}</th>;
const renderOrderBody = (item, index) => (
<tr key={index}>
<td>{index + 1}</td>
<td>{item.requiredDate}</td>
<td>{item.itemName}</td>
<td>{item.quantity}</td>
<td>
<div className="row-user" style={{ paddingTop: "0" }}>
{item.isApprovedByOfficer === "rejected" ? (
<Badge type="danger" content={item.isApprovedByOfficer} />
) : item.isApprovedByManager === "rejected" ? (
<Badge type="danger" content={item.isApprovedByManager} />
) : item.isApprovedByManager === "pending" ? (
<Badge type="warning" content={item.isApprovedByManager} />
) : item.isApprovedByManager === "approved" ? (
<Badge type="success" content={item.isApprovedByManager} />
) : (
""
)}
</div>
</td>
<td>
<div className="row-user" style={{ paddingTop: "0" }}>
{item.isApprovedByManager === "approved" ? (
item.DeliveryStatus === "pending" ? (
<Badge type="warning" content={item.DeliveryStatus} />
) : item.DeliveryStatus === "preparing" ? (
<Badge type="primary" content={item.DeliveryStatus} />
) : item.DeliveryStatus === "delivering" ? (
<Badge type="success" content={item.DeliveryStatus} />
) : item.DeliveryStatus === "delivered" ? (
<Badge type="success" content={item.DeliveryStatus} />
) : item.DeliveryStatus === "submitted" ? (
<Badge type="normal" content={item.DeliveryStatus} />
) : (
""
)
) : (
""
)}
</div>
</td>
<td className="">
{item.isApprovedByManager === "pending" &&
!(item.isApprovedByOfficer === "rejected") ? (
<>
<button className="action-btn x">
<MdDelete
onClick={() => {
if (window.confirm("Are you sure to delete this request?")) {
deleteHandler(item._id);
}
}}
/>
</button>
</>
) : item.isApprovedByManager === "rejected" ||
item.isApprovedByOfficer === "rejected" ? (
<>
<button className="action-btn W">
<VscReport
onClick={() => {
setName("Rejection");
setDescription(item.rejectMassage);
setTrigger(true);
}}
/>
</button>
<Popup
trigger={Trigger}
name={Name}
description={Description}
setTrigger={setTrigger}
id={Id}
item={ItemName}
/>
</>
) : (
""
)}
</td>
<td>
{item.DeliveryStatus === "submitted" ? (
<div
onClick={() => {
setName("GoodsReceipt");
setId(item._id);
setItemName(item.itemName);
setTrigger(true);
}}
>
<Badge type="normal" content="view" />
</div>
) : (
""
)}
</td>
</tr>
);
return (
<div>
<Sidebar />
<div id="main" className="layout__content">
<TopNav />
<div className="layout__content-main">
<h1 className="page-header">CTSE Module Assignments</h1>
<h1 className="page-header"> Module Assignments</h1>
<div className="row">
<div className="col-12">
<div className="card">
<div className="flex">
<h2 className="request-title">Asignment 01</h2>
<h2 className="request-title">{assignment.title}</h2>
</div>
<br />
<h3>
Analyze the case study given below and draw a usecase diagram.
</h3>
<br />
<p>
GlamourFashions (GF) is a clothing store situated in Colombo
and its planning to build an online shopping system to
promote their sales further. The management of clothing store
hired you as a System Analyst and asked to come up with the
design models for GlamourFashions Online Store (GFOS).
GlamourFashions (GF) Online Clothing Store is expected to
organize clothing items under several categories like office
wear, casual wear, evening wear and so on. A visitor can
browse on items without being registering to the system. If
he/she likes to order item, the system facilitates to add
selected items into the shopping cart and directly move to
checkout option. If the user interested to be a regular user,
the system will provide registration facility as well.
Without even registering, the user can directly go for the
checkout. For a registered user, the system is expected to
send a promotion code for users mobile every month which can
be used only once. when the user logs into the system to do
online shopping, user can enter this code which will give a 5%
discount for the order he/she makes. If the user does not use
the code within the month, automatically the system must
discard promotion code. If its been already used, the
system must display a message saying its already been used.
After adding the items into a shopping cart, user can select
the checkout button which gives two payment options, Cash on
Delivery or Pay by Card. Once the user goes to the payment
option, the system will display details about the order the
customer has made. It will display the order number, each item
details with an image of clothing item, total amount to be
paid. If any item needs to be removed from the current order
system will facilitate it as well. Finally, the system will
ask user to enter delivery details including any comments
which is optional. Based on the location to be delivered it
will indicate the delivery cost and final amount to be paid
for the order. The according to user preferences, Cash on
Delivery or Pay by Card can be selected. If the user provides
credit or debit card details, card information will be
verified using a payment gateway.
</p>
<p>{assignment.content}</p>
</div>
</div>
</div>
......@@ -251,9 +56,7 @@ const StudentSubjectAssingment = () => {
style={{ float: "right" }}
accept=".png, .jpg, .jpeg"
type="file"
onChange={(e) =>
setOrder({ ...Order, quantity: e.target.value })
}
onChange={(e) => console.log(" submission")}
required
/>
</div>
......
......@@ -2,11 +2,8 @@ import React, { useContext } from "react";
import { Route, Switch } from "react-router-dom";
import Assign from "../pages/Assign";
import DeliveryReportSubmit from "../pages/DeliveryReportSubmit";
import Inventory from "../pages/Inventory";
import Login from "../pages/Login";
import ManageAllOrders from "../pages/ManageAllOrders";
import ManageDeliveryReports from "../pages/ManageDeliveryReports";
import ManageAssignments from "../pages/ManageAssignments";
import SubjectsStudent from "../pages/SubjectsStudent";
import ManagerApprovedOrders from "../pages/ManagerApprovedOrders";
......@@ -14,10 +11,7 @@ import TeacherDashboard from "../pages/TeacherDashboard";
import ManageServices from "../pages/ManageServices";
import ManageStudents from "../pages/ManageStudents";
import ManageModules from "../pages/ManageModules";
import OfficerDashboard from "../pages/OfficerDashboard";
import OfficerOrders from "../pages/OfficerOrders";
import Register from "../pages/Register";
import SiteManagerDashboard from "../pages/SiteManagerDashboard";
import StudentSubjectAssingment from "../pages/StudentSubjectAssingment";
import ViewAssignment from "../pages/ViewAssignment";
import StudentDashboard from "../pages/StudentDashboard";
......@@ -36,18 +30,42 @@ const Routes = () => {
<Route exact path="/register" component={Register} />
<Route exact path="/login" component={Login} />
<Route exact path="/auth/teacher/dashboard" component={TeacherDashboard} />
<Route
exact
path="/auth/teacher/dashboard"
component={TeacherDashboard}
/>
<Route exact path="/auth/teacher/students" component={ManageStudents} />
<Route exact path="/auth/teacher/modules" component={ManageModules} />
<Route exact path="/auth/teacher/assignments" component={ManageAssignments} />
<Route exact path="/auth/teacher/assignments/:id" component={ViewAssignment} />
<Route exact path="/auth/teacher/assignments/:id/diagrams" component={GeneratedDiagrams} />
<Route
exact
path="/auth/teacher/assignments"
component={ManageAssignments}
/>
<Route
exact
path="/auth/teacher/assignments/:id"
component={ViewAssignment}
/>
<Route
exact
path="/auth/teacher/assignments/:id/diagrams"
component={GeneratedDiagrams}
/>
<Route exact path="/auth/student/dashboard" component={StudentDashboard} />
<Route
exact
path="/auth/student/dashboard"
component={StudentDashboard}
/>
<Route exact path="/auth/student/modules" component={SubjectsStudent} />
<Route exact path="/auth/student/services" component={ManageServices} />
<Route exact path="/auth/student/assignment" component={StudentSubjectAssingment} />
<Route
exact
path="/auth/student/assignment"
component={StudentSubjectAssingment}
/>
</Switch>
);
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment