create-myexam-app 1.0.21 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +25 -17
- package/package.json +1 -1
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +84 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env +3 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +13 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/authController.js +115 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/employeeController.js +97 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/payrollController.js +113 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/reportController.js +35 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Employee.js +52 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Payroll.js +50 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +19 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1509 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +19 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/authRoutes.js +18 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/employeeRoutes.js +19 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/payrollRoutes.js +19 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/reportRoutes.js +9 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +71 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +12 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2888 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +57 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +16 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/authApi.js +26 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/employeeApi.js +26 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/payrollApi.js +26 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/reportApi.js +6 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Header.jsx +17 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +17 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/ProtectedRoute.jsx +41 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +38 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/index.css +30 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/DashboardPage.jsx +64 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/EmployeePage.jsx +166 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/LoginPage.jsx +73 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/PayrollPage.jsx +198 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RecoverPasswordPage.jsx +69 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RegisterPage.jsx +69 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ReportsPage.jsx +113 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +13 -0
- package/projects/EPMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +9 -0
- package/projects/SCMS/frontend/node_modules/.bin/acorn +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/acorn.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/acorn.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/baseline-browser-mapping.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/browserslist +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/browserslist.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/browserslist.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/eslint +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/eslint.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/eslint.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/jiti +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/jiti.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/jiti.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/jsesc +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/jsesc.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/jsesc.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/json5 +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/json5.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/json5.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/nanoid +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/nanoid.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/nanoid.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/node-which +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/node-which.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/node-which.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/parser +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/parser.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/parser.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/rolldown +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/rolldown.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/rolldown.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/semver +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/semver.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/semver.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/update-browserslist-db.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.bin/vite +16 -0
- package/projects/SCMS/frontend/node_modules/.bin/vite.cmd +17 -0
- package/projects/SCMS/frontend/node_modules/.bin/vite.ps1 +28 -0
- package/projects/SCMS/frontend/node_modules/.package-lock.json +2401 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/_metadata.json +56 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/axios.js +3184 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/axios.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/chunk-B-1-B7_t.js +33 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/package.json +3 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom.js +186 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom_client.js +14385 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-dom_client.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-router-dom.js +10177 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react-router-dom.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react.js +769 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-dev-runtime.js +205 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-runtime.js +209 -0
- package/projects/SCMS/frontend/node_modules/.vite/deps/react_jsx-runtime.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/LICENSE +22 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/README.md +19 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/lib/index.js +217 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/lib/index.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/code-frame/package.json +32 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/LICENSE +22 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/README.md +19 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/corejs2-built-ins.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/corejs3-shipped-proposals.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/corejs2-built-ins.json +2120 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json +5 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/native-modules.json +18 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/overlapping-plugins.json +38 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/plugin-bugfixes.json +231 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/data/plugins.json +843 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/native-modules.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/overlapping-plugins.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/package.json +40 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/plugin-bugfixes.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/compat-data/plugins.js +2 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/LICENSE +22 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/README.md +19 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/cache-contexts.js +5 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/cache-contexts.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/caching.js +261 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/caching.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-chain.js +469 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-chain.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-descriptors.js +190 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/config-descriptors.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/configuration.js +290 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/configuration.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/import.cjs +6 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/import.cjs.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index-browser.js +58 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index-browser.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index.js +78 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/files/index.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/full.js +312 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/full.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/index.js +87 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/index.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/item.js +67 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/item.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/partial.js +158 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/partial.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/pattern-to-regex.js +38 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/pattern-to-regex.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/plugin.js +33 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/plugin.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/printer.js +113 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/printer.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets-browser.js +41 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets-browser.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets.js +61 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/resolve-targets.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/util.js +31 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/config/util.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/index.js +230 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/index.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/parse.js +45 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/parse.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-ast.js +48 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-ast.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file-browser.js +23 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file-browser.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file.js +40 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform-file.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform.js +47 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/lib/transform.js.map +1 -0
- package/projects/SCMS/frontend/node_modules/@babel/core/package.json +84 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +106 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/01_Introduction.md +8 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/02_Problem_Statement.md +12 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/03_Objectives.md +17 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/04_Technologies_Used.md +23 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/05_ERD.md +60 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/06_Database_Design.md +71 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/07_System_Architecture.md +28 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/08_API_Documentation.md +43 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/09_Testing.md +43 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/10_Challenges.md +12 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/REPORT/11_Conclusion.md +8 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env.example +4 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +16 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/deliveryController.js +145 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/shipmentController.js +149 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/supplierController.js +56 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/userController.js +158 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Delivery.js +34 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Shipment.js +34 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Supplier.js +38 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +21 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1540 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +22 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/deliveryRoutes.js +11 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/shipmentRoutes.js +11 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/supplierRoutes.js +9 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/userRoutes.js +11 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +70 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/.env.example +2 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +13 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2944 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +72 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +14 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/deliveryApi.js +17 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/shipmentApi.js +17 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/supplierApi.js +9 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/userApi.js +21 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +16 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/PageHeader.jsx +12 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +40 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Dashboard.jsx +62 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Delivery.jsx +212 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Login.jsx +158 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Logout.jsx +24 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Reports.jsx +221 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Shipment.jsx +212 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/Supplier.jsx +118 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/styles.css +27 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +8 -0
- package/projects/SCMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +6 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/README.md +84 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/.env +3 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/config/db.js +13 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/productController.js +29 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/reportController.js +52 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/stockTransactionController.js +128 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/userController.js +115 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/controllers/warehouseController.js +29 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/middleware/authMiddleware.js +9 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Product.js +44 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/StockTransaction.js +33 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/User.js +19 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/models/Warehouse.js +25 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package-lock.json +1509 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/package.json +19 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/productRoutes.js +10 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/reportRoutes.js +9 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/stockTransactionRoutes.js +17 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/userRoutes.js +18 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/routes/warehouseRoutes.js +10 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/backend-project/server.js +73 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/index.html +12 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package-lock.json +2888 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/package.json +23 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/postcss.config.js +6 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/App.jsx +66 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/apiClient.js +16 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/productApi.js +11 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/reportApi.js +6 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/transactionApi.js +21 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/userApi.js +26 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/api/warehouseApi.js +11 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Header.jsx +17 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Layout.jsx +17 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Message.jsx +15 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/ProtectedRoute.jsx +41 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/components/Sidebar.jsx +39 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/index.css +30 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/main.jsx +13 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/DashboardPage.jsx +64 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/LoginPage.jsx +73 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ProductPage.jsx +107 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RecoverPasswordPage.jsx +69 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/RegisterPage.jsx +69 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/ReportsPage.jsx +152 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/TransactionPage.jsx +195 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/src/pages/WarehousePage.jsx +93 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/tailwind.config.js +13 -0
- package/projects/SHMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026/frontend-project/vite.config.js +9 -0
- package/projects/SRMS/frontend/src/pages/Reports.jsx +170 -58
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/README.md +49 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/.env +3 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/middleware/authMiddleware.js +19 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Customer.js +11 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Product.js +10 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/Sale.js +19 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/models/User.js +8 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/package-lock.json +1609 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/package.json +20 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/authRoutes.js +75 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/customerRoutes.js +42 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/productRoutes.js +41 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/reportRoutes.js +129 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/routes/saleRoutes.js +107 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/backend-project/server.js +49 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/assets/index-DZxY56Bj.js +75 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/assets/index-J8MKb3Fq.css +1 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/dist/index.html +13 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/index.html +12 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/package-lock.json +2029 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/package.json +21 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/App.jsx +77 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/index.css +333 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/main.jsx +10 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Customers.jsx +85 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Dashboard.jsx +75 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Login.jsx +65 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Products.jsx +91 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Register.jsx +82 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Reports.jsx +138 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/src/pages/Sales.jsx +154 -0
- package/projects/SRMS(Ely)/KALIWABO_SHEMA_ELYSEE_National_Practical_Examination_2026(/frontend-project/vite.config.js +9 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
var Shipment = require("../models/Shipment");
|
|
2
|
+
var Supplier = require("../models/Supplier");
|
|
3
|
+
var Delivery = require("../models/Delivery");
|
|
4
|
+
|
|
5
|
+
function createShipment(req, res) {
|
|
6
|
+
var supplier = req.body.supplier;
|
|
7
|
+
var shipmentNumber = req.body.shipmentNumber;
|
|
8
|
+
var shipmentDate = req.body.shipmentDate;
|
|
9
|
+
var shipmentStatus = req.body.shipmentStatus;
|
|
10
|
+
var destination = req.body.destination;
|
|
11
|
+
|
|
12
|
+
if (!supplier || !shipmentNumber || !shipmentDate || !shipmentStatus || !destination) {
|
|
13
|
+
return res.status(400).json({ message: "All shipment fields are required" });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
Supplier.findById(supplier)
|
|
17
|
+
.then(function (supplierExists) {
|
|
18
|
+
if (!supplierExists) {
|
|
19
|
+
return { supplierNotFound: true };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return Shipment.findOne({ shipmentNumber: shipmentNumber });
|
|
23
|
+
})
|
|
24
|
+
.then(function (shipmentExists) {
|
|
25
|
+
if (shipmentExists && shipmentExists.supplierNotFound) {
|
|
26
|
+
return res.status(404).json({ message: "Selected supplier was not found" });
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (shipmentExists) {
|
|
30
|
+
return res.status(409).json({ message: "Shipment number already exists" });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return Shipment.create({
|
|
34
|
+
supplier: supplier,
|
|
35
|
+
shipmentNumber: shipmentNumber,
|
|
36
|
+
shipmentDate: shipmentDate,
|
|
37
|
+
shipmentStatus: shipmentStatus,
|
|
38
|
+
destination: destination,
|
|
39
|
+
});
|
|
40
|
+
})
|
|
41
|
+
.then(function (shipment) {
|
|
42
|
+
if (!shipment) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
res.status(201).json({ message: "Shipment inserted successfully", shipment: shipment });
|
|
47
|
+
})
|
|
48
|
+
.catch(function (error) {
|
|
49
|
+
res.status(500).json({ message: "Failed to insert shipment", error: error.message });
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function getShipments(req, res) {
|
|
54
|
+
Shipment.find()
|
|
55
|
+
.populate("supplier", "supplierCode supplierName telephone")
|
|
56
|
+
.sort({ createdAt: -1 })
|
|
57
|
+
.then(function (shipments) {
|
|
58
|
+
res.status(200).json(shipments);
|
|
59
|
+
})
|
|
60
|
+
.catch(function (error) {
|
|
61
|
+
res.status(500).json({ message: "Failed to get shipments", error: error.message });
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function updateShipment(req, res) {
|
|
66
|
+
var id = req.params.id;
|
|
67
|
+
var supplier = req.body.supplier;
|
|
68
|
+
var shipmentNumber = req.body.shipmentNumber;
|
|
69
|
+
var shipmentDate = req.body.shipmentDate;
|
|
70
|
+
var shipmentStatus = req.body.shipmentStatus;
|
|
71
|
+
var destination = req.body.destination;
|
|
72
|
+
|
|
73
|
+
if (!supplier || !shipmentNumber || !shipmentDate || !shipmentStatus || !destination) {
|
|
74
|
+
return res.status(400).json({ message: "All shipment fields are required" });
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
Supplier.findById(supplier)
|
|
78
|
+
.then(function (supplierExists) {
|
|
79
|
+
if (!supplierExists) {
|
|
80
|
+
return { supplierNotFound: true };
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return Shipment.findOne({
|
|
84
|
+
shipmentNumber: shipmentNumber,
|
|
85
|
+
_id: { $ne: id },
|
|
86
|
+
});
|
|
87
|
+
})
|
|
88
|
+
.then(function (duplicateShipment) {
|
|
89
|
+
if (duplicateShipment && duplicateShipment.supplierNotFound) {
|
|
90
|
+
return res.status(404).json({ message: "Selected supplier was not found" });
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (duplicateShipment) {
|
|
94
|
+
return res.status(409).json({ message: "Shipment number already exists" });
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return Shipment.findByIdAndUpdate(
|
|
98
|
+
id,
|
|
99
|
+
{
|
|
100
|
+
supplier: supplier,
|
|
101
|
+
shipmentNumber: shipmentNumber,
|
|
102
|
+
shipmentDate: shipmentDate,
|
|
103
|
+
shipmentStatus: shipmentStatus,
|
|
104
|
+
destination: destination,
|
|
105
|
+
},
|
|
106
|
+
{ new: true, runValidators: true }
|
|
107
|
+
);
|
|
108
|
+
})
|
|
109
|
+
.then(function (shipment) {
|
|
110
|
+
if (!shipment) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
res.status(200).json({ message: "Shipment updated successfully", shipment: shipment });
|
|
115
|
+
})
|
|
116
|
+
.catch(function (error) {
|
|
117
|
+
res.status(500).json({ message: "Failed to update shipment", error: error.message });
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function deleteShipment(req, res) {
|
|
122
|
+
var id = req.params.id;
|
|
123
|
+
|
|
124
|
+
Shipment.findByIdAndDelete(id)
|
|
125
|
+
.then(function (shipment) {
|
|
126
|
+
if (!shipment) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return Delivery.deleteMany({ shipment: id });
|
|
131
|
+
})
|
|
132
|
+
.then(function (result) {
|
|
133
|
+
if (!result) {
|
|
134
|
+
return res.status(404).json({ message: "Shipment not found" });
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
res.status(200).json({ message: "Shipment deleted successfully" });
|
|
138
|
+
})
|
|
139
|
+
.catch(function (error) {
|
|
140
|
+
res.status(500).json({ message: "Failed to delete shipment", error: error.message });
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
module.exports = {
|
|
145
|
+
createShipment: createShipment,
|
|
146
|
+
getShipments: getShipments,
|
|
147
|
+
updateShipment: updateShipment,
|
|
148
|
+
deleteShipment: deleteShipment,
|
|
149
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var Supplier = require("../models/Supplier");
|
|
2
|
+
|
|
3
|
+
function createSupplier(req, res) {
|
|
4
|
+
var supplierCode = req.body.supplierCode;
|
|
5
|
+
var supplierName = req.body.supplierName;
|
|
6
|
+
var telephone = req.body.telephone;
|
|
7
|
+
var address = req.body.address;
|
|
8
|
+
var email = req.body.email;
|
|
9
|
+
|
|
10
|
+
if (!supplierCode || !supplierName || !telephone || !address || !email) {
|
|
11
|
+
return res.status(400).json({ message: "All supplier fields are required" });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
Supplier.findOne({
|
|
15
|
+
$or: [{ supplierCode: supplierCode }, { email: email }],
|
|
16
|
+
})
|
|
17
|
+
.then(function (supplierExists) {
|
|
18
|
+
if (supplierExists) {
|
|
19
|
+
return res.status(409).json({ message: "Supplier code or email already exists" });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return Supplier.create({
|
|
23
|
+
supplierCode: supplierCode,
|
|
24
|
+
supplierName: supplierName,
|
|
25
|
+
telephone: telephone,
|
|
26
|
+
address: address,
|
|
27
|
+
email: email,
|
|
28
|
+
});
|
|
29
|
+
})
|
|
30
|
+
.then(function (supplier) {
|
|
31
|
+
if (!supplier) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
res.status(201).json({ message: "Supplier inserted successfully", supplier: supplier });
|
|
36
|
+
})
|
|
37
|
+
.catch(function (error) {
|
|
38
|
+
res.status(500).json({ message: "Failed to insert supplier", error: error.message });
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function getSuppliers(req, res) {
|
|
43
|
+
Supplier.find()
|
|
44
|
+
.sort({ createdAt: -1 })
|
|
45
|
+
.then(function (suppliers) {
|
|
46
|
+
res.status(200).json(suppliers);
|
|
47
|
+
})
|
|
48
|
+
.catch(function (error) {
|
|
49
|
+
res.status(500).json({ message: "Failed to get suppliers", error: error.message });
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
module.exports = {
|
|
54
|
+
createSupplier: createSupplier,
|
|
55
|
+
getSuppliers: getSuppliers,
|
|
56
|
+
};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
var bcrypt = require("bcryptjs");
|
|
2
|
+
var User = require("../models/User");
|
|
3
|
+
|
|
4
|
+
function createUser(req, res) {
|
|
5
|
+
var username = req.body.username ? req.body.username.trim() : "";
|
|
6
|
+
var password = req.body.password;
|
|
7
|
+
|
|
8
|
+
if (!username || !password) {
|
|
9
|
+
return res.status(400).json({ message: "Username and password are required" });
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (password.length < 6) {
|
|
13
|
+
return res.status(400).json({ message: "Password must have at least 6 characters" });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
User.findOne({ username: username })
|
|
17
|
+
.then(function (userExists) {
|
|
18
|
+
if (userExists) {
|
|
19
|
+
return res.status(409).json({ message: "Username already exists" });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return bcrypt.hash(password, 10);
|
|
23
|
+
})
|
|
24
|
+
.then(function (encryptedPassword) {
|
|
25
|
+
if (!encryptedPassword) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return User.create({ username: username, password: encryptedPassword });
|
|
30
|
+
})
|
|
31
|
+
.then(function (user) {
|
|
32
|
+
if (!user) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
req.session.user = { id: user._id, username: user.username };
|
|
37
|
+
|
|
38
|
+
req.session.save(function (error) {
|
|
39
|
+
if (error) {
|
|
40
|
+
return res.status(500).json({ message: "Failed to save user session" });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
res.status(201).json({
|
|
44
|
+
message: "User created successfully",
|
|
45
|
+
user: req.session.user,
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
})
|
|
49
|
+
.catch(function (error) {
|
|
50
|
+
res.status(500).json({ message: "Failed to create user", error: error.message });
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function loginUser(req, res) {
|
|
55
|
+
var username = req.body.username ? req.body.username.trim() : "";
|
|
56
|
+
var password = req.body.password;
|
|
57
|
+
var savedUser = null;
|
|
58
|
+
|
|
59
|
+
if (!username || !password) {
|
|
60
|
+
return res.status(400).json({ message: "Username and password are required" });
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
User.findOne({ username: username })
|
|
64
|
+
.then(function (user) {
|
|
65
|
+
if (!user) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
savedUser = user;
|
|
70
|
+
return bcrypt.compare(password, user.password);
|
|
71
|
+
})
|
|
72
|
+
.then(function (passwordIsCorrect) {
|
|
73
|
+
if (!savedUser || !passwordIsCorrect) {
|
|
74
|
+
return res.status(401).json({ message: "Invalid username or password" });
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
req.session.user = { id: savedUser._id, username: savedUser.username };
|
|
78
|
+
|
|
79
|
+
req.session.save(function (error) {
|
|
80
|
+
if (error) {
|
|
81
|
+
return res.status(500).json({ message: "Failed to save login session" });
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
res.status(200).json({
|
|
85
|
+
message: "Login successful",
|
|
86
|
+
user: req.session.user,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
})
|
|
90
|
+
.catch(function (error) {
|
|
91
|
+
res.status(500).json({ message: "Login failed", error: error.message });
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function recoverPassword(req, res) {
|
|
96
|
+
var username = req.body.username ? req.body.username.trim() : "";
|
|
97
|
+
var newPassword = req.body.newPassword;
|
|
98
|
+
var savedUser = null;
|
|
99
|
+
|
|
100
|
+
if (!username || !newPassword) {
|
|
101
|
+
return res.status(400).json({ message: "Username and new password are required" });
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (newPassword.length < 6) {
|
|
105
|
+
return res.status(400).json({ message: "New password must have at least 6 characters" });
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
User.findOne({ username: username })
|
|
109
|
+
.then(function (user) {
|
|
110
|
+
if (!user) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
savedUser = user;
|
|
115
|
+
return bcrypt.hash(newPassword, 10);
|
|
116
|
+
})
|
|
117
|
+
.then(function (encryptedPassword) {
|
|
118
|
+
if (!savedUser) {
|
|
119
|
+
return res.status(404).json({ message: "User not found" });
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
savedUser.password = encryptedPassword;
|
|
123
|
+
return savedUser.save();
|
|
124
|
+
})
|
|
125
|
+
.then(function (user) {
|
|
126
|
+
if (!user) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
res.status(200).json({ message: "Password recovered successfully" });
|
|
131
|
+
})
|
|
132
|
+
.catch(function (error) {
|
|
133
|
+
res.status(500).json({ message: "Password recovery failed", error: error.message });
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function logoutUser(req, res) {
|
|
138
|
+
req.session.destroy(function (error) {
|
|
139
|
+
if (error) {
|
|
140
|
+
return res.status(500).json({ message: "Logout failed" });
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
res.clearCookie("connect.sid");
|
|
144
|
+
res.status(200).json({ message: "Logout successful" });
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function getSessionUser(req, res) {
|
|
149
|
+
res.status(200).json({ user: req.session.user || null });
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
module.exports = {
|
|
153
|
+
createUser: createUser,
|
|
154
|
+
loginUser: loginUser,
|
|
155
|
+
recoverPassword: recoverPassword,
|
|
156
|
+
logoutUser: logoutUser,
|
|
157
|
+
getSessionUser: getSessionUser,
|
|
158
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
var deliverySchema = new mongoose.Schema(
|
|
4
|
+
{
|
|
5
|
+
shipment: {
|
|
6
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
7
|
+
ref: "Shipment",
|
|
8
|
+
required: [true, "Shipment is required"],
|
|
9
|
+
},
|
|
10
|
+
deliveryCode: {
|
|
11
|
+
type: String,
|
|
12
|
+
required: [true, "Delivery code is required"],
|
|
13
|
+
unique: true,
|
|
14
|
+
trim: true,
|
|
15
|
+
},
|
|
16
|
+
deliveryDate: {
|
|
17
|
+
type: Date,
|
|
18
|
+
required: [true, "Delivery date is required"],
|
|
19
|
+
},
|
|
20
|
+
quantityDelivered: {
|
|
21
|
+
type: Number,
|
|
22
|
+
required: [true, "Quantity delivered is required"],
|
|
23
|
+
min: [1, "Quantity must be greater than zero"],
|
|
24
|
+
},
|
|
25
|
+
deliveryStatus: {
|
|
26
|
+
type: String,
|
|
27
|
+
required: [true, "Delivery status is required"],
|
|
28
|
+
enum: ["Pending", "Partial", "Completed", "Returned"],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{ timestamps: true }
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
module.exports = mongoose.model("Delivery", deliverySchema);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
var shipmentSchema = new mongoose.Schema(
|
|
4
|
+
{
|
|
5
|
+
supplier: {
|
|
6
|
+
type: mongoose.Schema.Types.ObjectId,
|
|
7
|
+
ref: "Supplier",
|
|
8
|
+
required: [true, "Supplier is required"],
|
|
9
|
+
},
|
|
10
|
+
shipmentNumber: {
|
|
11
|
+
type: String,
|
|
12
|
+
required: [true, "Shipment number is required"],
|
|
13
|
+
unique: true,
|
|
14
|
+
trim: true,
|
|
15
|
+
},
|
|
16
|
+
shipmentDate: {
|
|
17
|
+
type: Date,
|
|
18
|
+
required: [true, "Shipment date is required"],
|
|
19
|
+
},
|
|
20
|
+
shipmentStatus: {
|
|
21
|
+
type: String,
|
|
22
|
+
required: [true, "Shipment status is required"],
|
|
23
|
+
enum: ["Pending", "In Transit", "Delivered", "Cancelled"],
|
|
24
|
+
},
|
|
25
|
+
destination: {
|
|
26
|
+
type: String,
|
|
27
|
+
required: [true, "Destination is required"],
|
|
28
|
+
trim: true,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{ timestamps: true }
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
module.exports = mongoose.model("Shipment", shipmentSchema);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
var supplierSchema = new mongoose.Schema(
|
|
4
|
+
{
|
|
5
|
+
supplierCode: {
|
|
6
|
+
type: String,
|
|
7
|
+
required: [true, "Supplier code is required"],
|
|
8
|
+
unique: true,
|
|
9
|
+
trim: true,
|
|
10
|
+
},
|
|
11
|
+
supplierName: {
|
|
12
|
+
type: String,
|
|
13
|
+
required: [true, "Supplier name is required"],
|
|
14
|
+
trim: true,
|
|
15
|
+
},
|
|
16
|
+
telephone: {
|
|
17
|
+
type: String,
|
|
18
|
+
required: [true, "Telephone is required"],
|
|
19
|
+
trim: true,
|
|
20
|
+
},
|
|
21
|
+
address: {
|
|
22
|
+
type: String,
|
|
23
|
+
required: [true, "Address is required"],
|
|
24
|
+
trim: true,
|
|
25
|
+
},
|
|
26
|
+
email: {
|
|
27
|
+
type: String,
|
|
28
|
+
required: [true, "Email is required"],
|
|
29
|
+
unique: true,
|
|
30
|
+
lowercase: true,
|
|
31
|
+
trim: true,
|
|
32
|
+
match: [/^\S+@\S+\.\S+$/, "Enter a valid email address"],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{ timestamps: true }
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
module.exports = mongoose.model("Supplier", supplierSchema);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var mongoose = require("mongoose");
|
|
2
|
+
|
|
3
|
+
var userSchema = new mongoose.Schema(
|
|
4
|
+
{
|
|
5
|
+
username: {
|
|
6
|
+
type: String,
|
|
7
|
+
required: [true, "Username is required"],
|
|
8
|
+
unique: true,
|
|
9
|
+
trim: true,
|
|
10
|
+
minlength: [3, "Username must have at least 3 characters"],
|
|
11
|
+
},
|
|
12
|
+
password: {
|
|
13
|
+
type: String,
|
|
14
|
+
required: [true, "Password is required"],
|
|
15
|
+
minlength: [6, "Password must have at least 6 characters"],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{ timestamps: true }
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
module.exports = mongoose.model("User", userSchema);
|