From 8577d69eb19eaef26bb19bb96b21909f435bd3a2 Mon Sep 17 00:00:00 2001 From: John Ahlroos Date: Sun, 2 Nov 2025 19:25:39 +0100 Subject: [PATCH] Add RetailManagementSystem app --- RetailManagementSystem/LICENSE | 201 ++ RetailManagementSystem/README.md | 1 + RetailManagementSystem/back-end/build.gradle | 32 + .../com/project/code/CodeApplication.java | 16 + .../Controller/GlobalExceptionHandler.java | 18 + .../code/Controller/InventoryController.java | 58 + .../code/Controller/ProductController.java | 73 + .../code/Controller/ReviewController.java | 25 + .../code/Controller/StoreController.java | 35 + .../project/code/Model/CombinedRequest.java | 26 + .../java/com/project/code/Model/Customer.java | 49 + .../com/project/code/Model/Inventory.java | 49 + .../com/project/code/Model/OrderDetails.java | 48 + .../com/project/code/Model/OrderItem.java | 42 + .../code/Model/PlaceOrderRequestDTO.java | 72 + .../java/com/project/code/Model/Product.java | 44 + .../code/Model/PurchaseProductDTO.java | 52 + .../java/com/project/code/Model/Review.java | 47 + .../java/com/project/code/Model/Store.java | 35 + .../project/code/Repo/CustomerRepository.java | 39 + .../code/Repo/InventoryRepository.java | 34 + .../code/Repo/OrderDetailsRepository.java | 14 + .../code/Repo/OrderItemRepository.java | 16 + .../project/code/Repo/ProductRepository.java | 53 + .../project/code/Repo/ReviewRepository.java | 18 + .../project/code/Repo/StoreRepository.java | 26 + .../project/code/Service/OrderService.java | 27 + .../project/code/Service/ServiceClass.java | 26 + .../com/project/code/config/WebConfig.java | 18 + .../src/main/resources/application.properties | 2 + .../project/code/CodeApplicationTests.java | 13 + .../front-end/add-parent-product.html | 87 + .../front-end/add-product.html | 97 + RetailManagementSystem/front-end/build.gradle | 1 + .../front-end/edit-parent-product.html | 113 ++ .../front-end/edit-product.html | 122 ++ RetailManagementSystem/front-end/frontend.css | 471 +++++ .../front-end/images/Logo.png | Bin 0 -> 264218 bytes RetailManagementSystem/front-end/index.html | 413 ++++ RetailManagementSystem/front-end/reviews.html | 181 ++ RetailManagementSystem/front-end/script.js | 948 +++++++++ RetailManagementSystem/insert_data.sql | 989 ++++++++++ RetailManagementSystem/reviews.json | 1752 +++++++++++++++++ settings.gradle | 4 +- 44 files changed, 6386 insertions(+), 1 deletion(-) create mode 100644 RetailManagementSystem/LICENSE create mode 100644 RetailManagementSystem/README.md create mode 100644 RetailManagementSystem/back-end/build.gradle create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/CodeApplication.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/GlobalExceptionHandler.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/InventoryController.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/ProductController.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/ReviewController.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/StoreController.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/CombinedRequest.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Customer.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Inventory.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/OrderDetails.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/OrderItem.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/PlaceOrderRequestDTO.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Product.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/PurchaseProductDTO.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Review.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Store.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/CustomerRepository.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/InventoryRepository.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/OrderDetailsRepository.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/OrderItemRepository.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/ProductRepository.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/ReviewRepository.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/StoreRepository.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Service/OrderService.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/Service/ServiceClass.java create mode 100644 RetailManagementSystem/back-end/src/main/java/com/project/code/config/WebConfig.java create mode 100644 RetailManagementSystem/back-end/src/main/resources/application.properties create mode 100644 RetailManagementSystem/back-end/src/test/java/com/project/code/CodeApplicationTests.java create mode 100644 RetailManagementSystem/front-end/add-parent-product.html create mode 100644 RetailManagementSystem/front-end/add-product.html create mode 100644 RetailManagementSystem/front-end/build.gradle create mode 100644 RetailManagementSystem/front-end/edit-parent-product.html create mode 100644 RetailManagementSystem/front-end/edit-product.html create mode 100644 RetailManagementSystem/front-end/frontend.css create mode 100644 RetailManagementSystem/front-end/images/Logo.png create mode 100644 RetailManagementSystem/front-end/index.html create mode 100644 RetailManagementSystem/front-end/reviews.html create mode 100644 RetailManagementSystem/front-end/script.js create mode 100644 RetailManagementSystem/insert_data.sql create mode 100644 RetailManagementSystem/reviews.json diff --git a/RetailManagementSystem/LICENSE b/RetailManagementSystem/LICENSE new file mode 100644 index 0000000..45cd622 --- /dev/null +++ b/RetailManagementSystem/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 IBM Developer Skills Network + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/RetailManagementSystem/README.md b/RetailManagementSystem/README.md new file mode 100644 index 0000000..5884e26 --- /dev/null +++ b/RetailManagementSystem/README.md @@ -0,0 +1 @@ +# coding-project-template \ No newline at end of file diff --git a/RetailManagementSystem/back-end/build.gradle b/RetailManagementSystem/back-end/build.gradle new file mode 100644 index 0000000..7e24356 --- /dev/null +++ b/RetailManagementSystem/back-end/build.gradle @@ -0,0 +1,32 @@ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + +apply plugin: 'java' +apply plugin: 'org.springframework.boot' +apply plugin: 'io.spring.dependency-management' + +description = "Retail management system" + +java { + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} + +repositories { + mavenCentral() +} + +dependencyManagement { + imports { + mavenBom SpringBootPlugin.BOM_COORDINATES + } +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' + implementation 'org.springframework.boot:spring-boot-starter-validation' + implementation 'org.springframework.boot:spring-boot-starter-web' + runtimeOnly 'org.springframework.boot:spring-boot-devtools' + runtimeOnly 'com.mysql:mysql-connector-j' + testImplementation 'org.springframework.boot:spring-boot-starter-test' +} \ No newline at end of file diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/CodeApplication.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/CodeApplication.java new file mode 100644 index 0000000..93464e7 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/CodeApplication.java @@ -0,0 +1,16 @@ +package com.project.code; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +@SpringBootApplication +@ComponentScan("com.project.code") +public class CodeApplication { + + public static void main(String[] args) { + SpringApplication.run(CodeApplication.class, args); + + } + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/GlobalExceptionHandler.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/GlobalExceptionHandler.java new file mode 100644 index 0000000..a66ae73 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/GlobalExceptionHandler.java @@ -0,0 +1,18 @@ +package com.project.code.Controller; + + +public class GlobalExceptionHandler { + +// 1. Set Up the Global Exception Handler Class: +// - Annotate the class with `@RestControllerAdvice` to enable global exception handling for REST controllers. +// - This allows the class to handle exceptions thrown in any of the controllers globally. + + +// 2. Define the `handleJsonParseException` Method: +// - Annotate with `@ExceptionHandler(HttpMessageNotReadableException.class)` to handle cases where the request body is not correctly formatted (e.g., invalid JSON). +// - The `HttpMessageNotReadableException` typically occurs when the input data cannot be deserialized or is improperly formatted. +// - Use `@ResponseStatus(HttpStatus.BAD_REQUEST)` to specify that the response status will be **400 Bad Request** when this exception is thrown. +// - The method should return a `Map` with the following key: +// - **`message`**: The error message should indicate that the input provided is invalid. The value should be `"Invalid input: The data provided is not valid."`. + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/InventoryController.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/InventoryController.java new file mode 100644 index 0000000..8b4689e --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/InventoryController.java @@ -0,0 +1,58 @@ +package com.project.code.Controller; + +public class InventoryController { +// 1. Set Up the Controller Class: +// - Annotate the class with `@RestController` to indicate that this is a REST controller, which handles HTTP requests and responses. +// - Use `@RequestMapping("/inventory")` to set the base URL path for all methods in this controller. All endpoints related to inventory will be prefixed with `/inventory`. + + +// 2. Autowired Dependencies: +// - Autowire necessary repositories and services: +// - `ProductRepository` will be used to interact with product data (i.e., finding, updating products). +// - `InventoryRepository` will handle CRUD operations related to the inventory. +// - `ServiceClass` will help with the validation logic (e.g., validating product IDs and inventory data). + + +// 3. Define the `updateInventory` Method: +// - This method handles HTTP PUT requests to update inventory for a product. +// - It takes a `CombinedRequest` (containing `Product` and `Inventory`) in the request body. +// - The product ID is validated, and if valid, the inventory is updated in the database. +// - If the inventory exists, update it and return a success message. If not, return a message indicating no data available. + + +// 4. Define the `saveInventory` Method: +// - This method handles HTTP POST requests to save a new inventory entry. +// - It accepts an `Inventory` object in the request body. +// - It first validates whether the inventory already exists. If it exists, it returns a message stating so. If it doesn’t exist, it saves the inventory and returns a success message. + + +// 5. Define the `getAllProducts` Method: +// - This method handles HTTP GET requests to retrieve products for a specific store. +// - It uses the `storeId` as a path variable and fetches the list of products from the database for the given store. +// - The products are returned in a `Map` with the key `"products"`. + + +// 6. Define the `getProductName` Method: +// - This method handles HTTP GET requests to filter products by category and name. +// - If either the category or name is `"null"`, adjust the filtering logic accordingly. +// - Return the filtered products in the response with the key `"product"`. + + +// 7. Define the `searchProduct` Method: +// - This method handles HTTP GET requests to search for products by name within a specific store. +// - It uses `name` and `storeId` as parameters and searches for products that match the `name` in the specified store. +// - The search results are returned in the response with the key `"product"`. + + +// 8. Define the `removeProduct` Method: +// - This method handles HTTP DELETE requests to delete a product by its ID. +// - It first validates if the product exists. If it does, it deletes the product from the `ProductRepository` and also removes the related inventory entry from the `InventoryRepository`. +// - Returns a success message with the key `"message"` indicating successful deletion. + + +// 9. Define the `validateQuantity` Method: +// - This method handles HTTP GET requests to validate if a specified quantity of a product is available in stock for a given store. +// - It checks the inventory for the product in the specified store and compares it to the requested quantity. +// - If sufficient stock is available, return `true`; otherwise, return `false`. + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/ProductController.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/ProductController.java new file mode 100644 index 0000000..1e01dee --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/ProductController.java @@ -0,0 +1,73 @@ +package com.project.code.Controller; + +public class ProductController { +// 1. Set Up the Controller Class: +// - Annotate the class with `@RestController` to designate it as a REST controller for handling HTTP requests. +// - Map the class to the `/product` URL using `@RequestMapping("/product")`. + + +// 2. Autowired Dependencies: +// - Inject the following dependencies via `@Autowired`: +// - `ProductRepository` for CRUD operations on products. +// - `ServiceClass` for product validation and business logic. +// - `InventoryRepository` for managing the inventory linked to products. + + +// 3. Define the `addProduct` Method: +// - Annotate with `@PostMapping` to handle POST requests for adding a new product. +// - Accept `Product` object in the request body. +// - Validate product existence using `validateProduct()` in `ServiceClass`. +// - Save the valid product using `save()` method of `ProductRepository`. +// - Catch exceptions (e.g., `DataIntegrityViolationException`) and return appropriate error message. + + +// 4. Define the `getProductbyId` Method: +// - Annotate with `@GetMapping("/product/{id}")` to handle GET requests for retrieving a product by ID. +// - Accept product ID via `@PathVariable`. +// - Use `findById(id)` method from `ProductRepository` to fetch the product. +// - Return the product in a `Map` with key `products`. + + + // 5. Define the `updateProduct` Method: +// - Annotate with `@PutMapping` to handle PUT requests for updating an existing product. +// - Accept updated `Product` object in the request body. +// - Use `save()` method from `ProductRepository` to update the product. +// - Return a success message with key `message` after updating the product. + + +// 6. Define the `filterbyCategoryProduct` Method: +// - Annotate with `@GetMapping("/category/{name}/{category}")` to handle GET requests for filtering products by `name` and `category`. +// - Use conditional filtering logic if `name` or `category` is `"null"`. +// - Fetch products based on category using methods like `findByCategory()` or `findProductBySubNameAndCategory()`. +// - Return filtered products in a `Map` with key `products`. + + + // 7. Define the `listProduct` Method: +// - Annotate with `@GetMapping` to handle GET requests to fetch all products. +// - Fetch all products using `findAll()` method from `ProductRepository`. +// - Return all products in a `Map` with key `products`. + + +// 8. Define the `getProductbyCategoryAndStoreId` Method: +// - Annotate with `@GetMapping("filter/{category}/{storeid}")` to filter products by `category` and `storeId`. +// - Use `findProductByCategory()` method from `ProductRepository` to retrieve products. +// - Return filtered products in a `Map` with key `product`. + + +// 9. Define the `deleteProduct` Method: +// - Annotate with `@DeleteMapping("/{id}")` to handle DELETE requests for removing a product by its ID. +// - Validate product existence using `ValidateProductId()` in `ServiceClass`. +// - Remove product from `Inventory` first using `deleteByProductId(id)` in `InventoryRepository`. +// - Remove product from `Product` using `deleteById(id)` in `ProductRepository`. +// - Return a success message with key `message` indicating product deletion. + + + // 10. Define the `searchProduct` Method: +// - Annotate with `@GetMapping("/searchProduct/{name}")` to search for products by `name`. +// - Use `findProductBySubName()` method from `ProductRepository` to search products by name. +// - Return search results in a `Map` with key `products`. + + + + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/ReviewController.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/ReviewController.java new file mode 100644 index 0000000..6ca5d91 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/ReviewController.java @@ -0,0 +1,25 @@ +package com.project.code.Controller; + +public class ReviewController { +// 1. Set Up the Controller Class: +// - Annotate the class with `@RestController` to designate it as a REST controller for handling HTTP requests. +// - Map the class to the `/reviews` URL using `@RequestMapping("/reviews")`. + + + // 2. Autowired Dependencies: +// - Inject the following dependencies via `@Autowired`: +// - `ReviewRepository` for accessing review data. +// - `CustomerRepository` for retrieving customer details associated with reviews. + + +// 3. Define the `getReviews` Method: +// - Annotate with `@GetMapping("/{storeId}/{productId}")` to fetch reviews for a specific product in a store by `storeId` and `productId`. +// - Accept `storeId` and `productId` via `@PathVariable`. +// - Fetch reviews using `findByStoreIdAndProductId()` method from `ReviewRepository`. +// - Filter reviews to include only `comment`, `rating`, and the `customerName` associated with the review. +// - Use `findById(review.getCustomerId())` from `CustomerRepository` to get customer name. +// - Return filtered reviews in a `Map` with key `reviews`. + + + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/StoreController.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/StoreController.java new file mode 100644 index 0000000..fd82978 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Controller/StoreController.java @@ -0,0 +1,35 @@ +package com.project.code.Controller; + + +public class StoreController { +// 1. Set Up the Controller Class: +// - Annotate the class with `@RestController` to designate it as a REST controller for handling HTTP requests. +// - Map the class to the `/store` URL using `@RequestMapping("/store")`. + + + // 2. Autowired Dependencies: +// - Inject the following dependencies via `@Autowired`: +// - `StoreRepository` for managing store data. +// - `OrderService` for handling order-related functionality. + + + // 3. Define the `addStore` Method: +// - Annotate with `@PostMapping` to create an endpoint for adding a new store. +// - Accept `Store` object in the request body. +// - Return a success message in a `Map` with the key `message` containing store creation confirmation. + + + // 4. Define the `validateStore` Method: +// - Annotate with `@GetMapping("validate/{storeId}")` to check if a store exists by its `storeId`. +// - Return a **boolean** indicating if the store exists. + + + // 5. Define the `placeOrder` Method: +// - Annotate with `@PostMapping("/placeOrder")` to handle order placement. +// - Accept `PlaceOrderRequestDTO` in the request body. +// - Return a success message with key `message` if the order is successfully placed. +// - Return an error message with key `Error` if there is an issue processing the order. + + + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/CombinedRequest.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/CombinedRequest.java new file mode 100644 index 0000000..5d80b48 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/CombinedRequest.java @@ -0,0 +1,26 @@ +package com.project.code.Model; + +public class CombinedRequest { + + private Product product; + private Inventory inventory; + + public Product getProduct() { + return product; + } + + // Setter for product + public void setProduct(Product product) { + this.product = product; + } + + // Getter for store + public Inventory getInventory() { + return inventory; + } + + // Setter for store + public void setInventory(Inventory inventory) { + this.inventory = inventory; + } +} \ No newline at end of file diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Customer.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Customer.java new file mode 100644 index 0000000..e5158fd --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Customer.java @@ -0,0 +1,49 @@ +package com.project.code.Model; + + +public class Customer { + +// 1. Add 'id' field: +// - Type: private long +// - It should be auto-incremented. +// - Use @Id to mark it as the primary key and @GeneratedValue(strategy = GenerationType.IDENTITY) to auto-increment it. + +// 2. Add 'name' field: +// - Type: private String +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + + // Example: @NotNull(message = "Name cannot be null") + +// 3. Add 'email' field: +// - Type: private String +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + + // Example: @NotNull(message = "Email cannot be null") + +// 4. Add 'phone' field: +// - Type: private String +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + + // Example: @NotNull(message = "Phone cannot be null") + +// 5. Add one-to-many relationship with orders: +// - A customer can have multiple orders. +// - Use the @OneToMany annotation to establish this relationship. +// - Specify "mappedBy = 'customer'" to indicate that the 'customer' field in the 'Order' entity owns the relationship. +// - Use @JsonManagedReference to ensure proper JSON serialization of related orders. + + // Example: @OneToMany(mappedBy = "customer", fetch = FetchType.EAGER) + // Example: @JsonManagedReference + +// 6. Getters and Setters: +// - For each field ('id', 'name', 'email', 'phone'), add getter and setter methods. +// - Example: public Long getId(), public void setId(Long id) +// - Example: public String getName(), public void setName(String name) +// - Add getters and setters for 'email' and 'phone' fields as well. + +// 7. Ensure to use proper annotations and validate constraints: +// - Use @NotNull for fields that cannot be empty like 'name', 'email', and 'phone'. +// - Make sure you add the correct annotations for entity mapping and relationship management like @Entity, @Id, @GeneratedValue, @OneToMany, and @JsonManagedReference. + +} + diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Inventory.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Inventory.java new file mode 100644 index 0000000..d49e8ba --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Inventory.java @@ -0,0 +1,49 @@ +package com.project.code.Model; + + +public class Inventory { + // 1. Add 'id' field: +// - Type: private long +// - This field will represent the unique identifier for the inventory entry. +// - Use @Id to mark it as the primary key. +// - Use @GeneratedValue(strategy = GenerationType.IDENTITY) to auto-increment it. + +// 2. Add 'product' field: +// - Type: private Product +// - This field will represent the product associated with the inventory entry. +// - Use @ManyToOne to establish a many-to-one relationship with the Product entity. + +// 3. Add 'store' field: +// - Type: private Store +// - This field will represent the store where the inventory is located. +// - Use @ManyToOne to establish a many-to-one relationship with the Store entity. + +// 4. Add 'stockLevel' field: +// - Type: private Integer +// - This field will represent the current stock level of the product at the store. + +// 5. Add relationships: +// - **Product Relationship**: Use @ManyToOne to link this inventory entry to a product. +// - **Store Relationship**: Use @ManyToOne to link this inventory entry to a store. +// - Use @JsonBackReference("inventory-product") to prevent circular references during JSON serialization for the product field. +// - Use @JsonBackReference("inventory-store") to prevent circular references during JSON serialization for the store field. + +// 6. Use @JoinColumn for foreign key associations: +// - For the 'product' field, use @JoinColumn(name = "product_id") to specify the foreign key column. +// - For the 'store' field, use @JoinColumn(name = "store_id") to specify the foreign key column. + +// 7. Create a constructor: +// - Add a constructor that takes a Product, Store, and Integer stockLevel to initialize the Inventory object. + +// 8. Add @Entity annotation: +// - Use @Entity above the class definition to mark it as a JPA entity that will be mapped to a database table. + +// 9. Add Getters and Setters: +// - Add getters and setters for 'id', 'product', 'store', and 'stockLevel' fields. +// - Example: public Long getId(), public void setId(Long id) +// - Example: public Product getProduct(), public void setProduct(Product product) +// - Example: public Store getStore(), public void setStore(Store store) +// - Example: public Integer getStockLevel(), public void setStockLevel(Integer stockLevel) + +} + diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/OrderDetails.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/OrderDetails.java new file mode 100644 index 0000000..71ebc48 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/OrderDetails.java @@ -0,0 +1,48 @@ +package com.project.code.Model; + + +public class OrderDetails { + +// 1. Add 'id' field: +// - Type: private Long +// - This field will be auto-incremented. +// - Use @Id to mark it as the primary key. +// - Use @GeneratedValue(strategy = GenerationType.IDENTITY) to auto-increment it. + +// 2. Add 'customer' field: +// - Type: private Customer +// - This field refers to the customer who placed the order. +// - Use @ManyToOne with @JoinColumn(name = "customer_id") to define the foreign key relationship. +// - Apply @JsonManagedReference to handle bidirectional relationships and JSON serialization. + +// 3. Add 'store' field: +// - Type: private Store +// - This field refers to the store from where the order was placed. +// - Use @ManyToOne with @JoinColumn(name = "store_id") to define the foreign key relationship. +// - Apply @JsonManagedReference to handle bidirectional relationships and JSON serialization. + +// 4. Add 'totalPrice' field: +// - Type: private Double +// - This field represents the total price of the order. + +// 5. Add 'date' field: +// - Type: private LocalDateTime +// - This field represents the date and time when the order was placed. + +// 6. Add 'orderItems' field: +// - Type: private List +// - This field represents the list of items in the order. +// - Use @OneToMany(mappedBy = "order", fetch = FetchType.EAGER) to establish the one-to-many relationship with OrderItem. +// - Apply @JsonManagedReference to prevent circular references during JSON serialization. + +// 7. Add constructors: +// - A no-argument constructor. +// - A parameterized constructor that accepts Customer, Store, totalPrice, and date as parameters. + +// 8. Add @Entity annotation: +// - Use @Entity above the class name to mark it as a JPA entity. + +// 9. Add Getters and Setters: +// - Add getter and setter methods for all fields (id, customer, store, totalPrice, date, orderItems). + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/OrderItem.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/OrderItem.java new file mode 100644 index 0000000..083a863 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/OrderItem.java @@ -0,0 +1,42 @@ +package com.project.code.Model; + +public class OrderItem { + +// 1. Add 'id' field: +// - Type: private Long +// - This field will be auto-incremented. +// - Use @Id to mark it as the primary key. +// - Use @GeneratedValue(strategy = GenerationType.IDENTITY) to auto-increment it. + +// 2. Add 'order' field: +// - Type: private OrderDetails +// - This field refers to the order this item belongs to. +// - Use @ManyToOne with @JoinColumn(name = "order_id") to define the foreign key relationship. +// - Apply @JsonManagedReference to manage bidirectional relationships and JSON serialization. + +// 3. Add 'product' field: +// - Type: private Product +// - This field refers to the product in the order. +// - Use @ManyToOne with @JoinColumn(name = "product_id") to define the foreign key relationship. +// - Apply @JsonManagedReference to prevent circular references during JSON serialization. + +// 4. Add 'quantity' field: +// - Type: private Integer +// - This field represents the quantity of the product in the order. + +// 5. Add 'price' field: +// - Type: private Double +// - This field represents the price of the product at the time of the order. + +// 6. Add constructors: +// - A no-argument constructor. +// - A parameterized constructor that accepts OrderDetails, Product, quantity, and price as parameters. + +// 7. Add @Entity annotation: +// - Use @Entity above the class name to mark it as a JPA entity. + +// 8. Add Getters and Setters: +// - Add getter and setter methods for all fields (id, order, product, quantity, price). + +} + diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/PlaceOrderRequestDTO.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/PlaceOrderRequestDTO.java new file mode 100644 index 0000000..449c334 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/PlaceOrderRequestDTO.java @@ -0,0 +1,72 @@ +package com.project.code.Model; + + +import java.util.List; + +public class PlaceOrderRequestDTO { + private Long storeId; + private String customerName; + private String customerEmail; + private String customerPhone; + private String datetime; + private List purchaseProduct; + private Double totalPrice; + + // Getters and Setters + + public Long getStoreId() { + return storeId; + } + + public void setStoreId(Long storeId) { + this.storeId = storeId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerEmail() { + return customerEmail; + } + + public void setCustomerEmail(String customerEmail) { + this.customerEmail = customerEmail; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public String getDatetime() { + return datetime; + } + + public void setDatetime(String datetime) { + this.datetime = datetime; + } + + public List getPurchaseProduct() { + return purchaseProduct; + } + + public void setPurchaseProduct(List purchaseProduct) { + this.purchaseProduct = purchaseProduct; + } + + public Double getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(Double totalPrice) { + this.totalPrice = totalPrice; + } +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Product.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Product.java new file mode 100644 index 0000000..b478b7f --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Product.java @@ -0,0 +1,44 @@ +package com.project.code.Model; + + +public class Product { + +// 1. Add 'id' field: +// - Type: private long +// - This field will be auto-incremented. +// - Use @Id to mark it as the primary key. +// - Use @GeneratedValue(strategy = GenerationType.IDENTITY) to auto-increment it. + +// 2. Add 'name' field: +// - Type: private String +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + +// 3. Add 'category' field: +// - Type: private String +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + +// 4. Add 'price' field: +// - Type: private Double +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + +// 5. Add 'sku' field: +// - Type: private String +// - This field cannot be empty, must be unique, use the @NotNull annotation to enforce this rule. +// - Use the @Table annotation with uniqueConstraints to ensure the 'sku' column is unique. + +// Example: @Table(name = "product", uniqueConstraints = @UniqueConstraint(columnNames = "sku")) + +// 6. Add relationships: +// - **Inventory**: A product can have multiple inventory entries. +// - Use @OneToMany(mappedBy = "product") to reflect the one-to-many relationship with Inventory. +// - Use @JsonManagedReference("inventory-product") to manage bidirectional relationships and avoid circular references. + +// 7. Add @Entity annotation: +// - Use @Entity above the class name to mark it as a JPA entity. + +// 8. Add Getters and Setters: +// - Add getter and setter methods for all fields (id, name, category, price, sku). + +} + + diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/PurchaseProductDTO.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/PurchaseProductDTO.java new file mode 100644 index 0000000..591e04e --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/PurchaseProductDTO.java @@ -0,0 +1,52 @@ +package com.project.code.Model; + + +public class PurchaseProductDTO { + private Long id; + private String name; + private Double price; + private Integer quantity; + private Double total; + + // Getters and Setters + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Double getPrice() { + return price; + } + + public void setPrice(Double price) { + this.price = price; + } + + public Integer getQuantity() { + return quantity; + } + + public void setQuantity(Integer quantity) { + this.quantity = quantity; + } + + public Double getTotal() { + return total; + } + + public void setTotal(Double total) { + this.total = total; + } +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Review.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Review.java new file mode 100644 index 0000000..b90d5a7 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Review.java @@ -0,0 +1,47 @@ +package com.project.code.Model; + +public class Review { + +// 1. Add 'customerId' field: +// - Type: private Long +// - This field represents the customer who created the review. +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + +// 2. Add 'productId' field: +// - Type: private Long +// - This field represents the product being reviewed. +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + +// 3. Add 'storeId' field: +// - Type: private Long +// - This field represents the store associated with the product. +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + +// 4. Add 'rating' field: +// - Type: private Integer +// - This field represents the rating given to the product (out of 5). +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + +// 5. Add 'comment' field: +// - Type: private String +// - This field represents an optional comment on the product. + +// 6. Add validation: +// - Apply @NotNull to the customerId, productId, storeId, and rating fields to ensure they are not null. +// - Example: @NotNull(message = "Customer cannot be null") + +// 7. Add @Document annotation: +// - Use @Document(collection = "reviews") to indicate that this class represents a MongoDB document. + +// 8. Add constructor: +// - The constructor should accept values for customerId, productId, storeId, rating, and an optional comment. + +// 9. Add @Id annotation: +// - Use @Id to mark the field 'id' as the primary key for MongoDB. +// - The 'id' field is of type String and will be automatically generated by MongoDB. + +// 10. Add Getters and Setters: +// - Add getter and setter methods for all fields (customerId, productId, storeId, rating, comment). + + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Store.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Store.java new file mode 100644 index 0000000..286d2e8 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Model/Store.java @@ -0,0 +1,35 @@ +package com.project.code.Model; + + +public class Store { + +// 1. Add 'id' field: +// - Type: private long +// - This field will be auto-incremented. +// - Use @Id to mark it as the primary key. +// - Use @GeneratedValue(strategy = GenerationType.IDENTITY) to auto-increment it. + +// 2. Add 'name' field: +// - Type: private String +// - This field cannot be empty, use the @NotNull annotation to enforce this rule. + +// 3. Add 'address' field: +// - Type: private String +// - This field cannot be empty, use the @NotNull and @NotBlank annotations to enforce this rule. + +// 4. Add relationships: +// - **Inventory**: A store can have multiple inventory entries. +// - Use @OneToMany(mappedBy = "store") to reflect the one-to-many relationship with Inventory. +// - Use @JsonManagedReference("inventory-store") to manage bidirectional relationships and avoid circular references. + +// 5. Add constructor: +// - Create a constructor that accepts name and address as parameters to initialize the Store object. + +// 6. Add @Entity annotation: +// - Use @Entity above the class name to mark it as a JPA entity. + +// 7. Add Getters and Setters: +// - Add getter and setter methods for all fields (id, name, address). + +} + diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/CustomerRepository.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/CustomerRepository.java new file mode 100644 index 0000000..448dd02 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/CustomerRepository.java @@ -0,0 +1,39 @@ +package com.project.code.Repo; + + +public interface CustomerRepository { +// 1. Add the repository interface: +// - Extend JpaRepository to inherit basic CRUD functionality. +// - This allows the repository to perform operations like save, delete, update, and find without having to implement these methods manually. + +// Example: public interface CustomerRepository extends JpaRepository {} + +// 2. Add custom query methods: +// - **findByEmail**: +// - This method will allow you to find a customer by their email address. +// - Return type: Customer +// - Parameter: String email + +// Example: public Customer findByEmail(String email); + +// - **findById**: +// - This method will allow you to find a customer by their ID. +// - Return type: Customer +// - Parameter: Long id + +// Example: public Customer findById(Long id); + +// 3. Add any additional methods you may need for custom queries: +// - You can create other query methods as needed, like finding customers by name or phone number, etc. + +// Example: public List findByName(String name); + +// 4. Add @Repository annotation: +// - Mark the interface with @Repository to indicate that it's a Spring Data JPA repository. +// - This annotation is optional if you extend JpaRepository, as Spring Data automatically registers the repository, but it's good practice to add it for clarity. + + + +} + + diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/InventoryRepository.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/InventoryRepository.java new file mode 100644 index 0000000..e4cb6c9 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/InventoryRepository.java @@ -0,0 +1,34 @@ +package com.project.code.Repo; + + +public interface InventoryRepository { +// 1. Add the repository interface: +// - Extend JpaRepository to inherit basic CRUD functionality. +// - This allows the repository to perform operations like save, delete, update, and find without having to implement these methods manually. + +// Example: public interface InventoryRepository extends JpaRepository {} + +// 2. Add custom query methods: +// - **findByProductIdandStoreId**: +// - This method will allow you to find an inventory record by its product ID and store ID. +// - Return type: Inventory +// - Parameters: Long productId, Long storeId + +// Example: public Inventory findByProductIdandStoreId(Long productId, Long storeId); + +// - **findByStore_Id**: +// - This method will allow you to find a list of inventory records for a specific store. +// - Return type: List +// - Parameter: Long storeId + +// Example: public List findByStore_Id(Long storeId); + +// - **deleteByProductId**: +// - This method will allow you to delete all inventory records related to a specific product ID. +// - Return type: void +// - Parameter: Long productId +// - Use @Modifying and @Transactional annotations to ensure the database is modified correctly. + + + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/OrderDetailsRepository.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/OrderDetailsRepository.java new file mode 100644 index 0000000..800bca5 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/OrderDetailsRepository.java @@ -0,0 +1,14 @@ +package com.project.code.Repo; + + +public interface OrderDetailsRepository { +// 1. Add the repository interface: +// - Extend JpaRepository to inherit basic CRUD functionality. +// - This allows the repository to perform operations like save, delete, update, and find without having to implement these methods manually. + +// Example: public interface OrderDetailsRepository extends JpaRepository {} + +// 2. Since no custom methods are required for this repository, the default CRUD operations (save, delete, update, findById, etc.) are available out of the box. + +} + diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/OrderItemRepository.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/OrderItemRepository.java new file mode 100644 index 0000000..0e9cb86 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/OrderItemRepository.java @@ -0,0 +1,16 @@ +package com.project.code.Repo; + + + +public interface OrderItemRepository { +// 1. Add the repository interface: +// - Extend JpaRepository to inherit basic CRUD functionality. +// - This allows the repository to perform operations like save, delete, update, and find without having to implement these methods manually. + +// Example: public interface OrderItemRepository extends JpaRepository {} + +// 2. Since no custom methods are required for this repository, the default CRUD operations (save, delete, update, findById, etc.) are available out of the box. + +} + + diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/ProductRepository.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/ProductRepository.java new file mode 100644 index 0000000..7f2de5b --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/ProductRepository.java @@ -0,0 +1,53 @@ +package com.project.code.Repo; + + +public interface ProductRepository { +// 1. Add the repository interface: +// - Extend JpaRepository to inherit basic CRUD functionality. +// - This allows the repository to perform operations like save, delete, update, and find without having to implement these methods manually. + +// Example: public interface ProductRepository extends JpaRepository {} + +// 2. Add custom query methods: +// - **findAll**: +// - This method will retrieve all products. +// - Return type: List + +// Example: public List findAll(); + +// - **findByCategory**: +// - This method will retrieve products by their category. +// - Return type: List +// - Parameter: String category + +// Example: public List findByCategory(String category); + +// - **findByPriceBetween**: +// - This method will retrieve products within a price range. +// - Return type: List +// - Parameters: Double minPrice, Double maxPrice + +// Example: public List findByPriceBetween(Double minPrice, Double maxPrice); + +// - **findBySku**: +// - This method will retrieve a product by its SKU. +// - Return type: Product +// - Parameter: String sku + +// Example: public Product findBySku(String sku); + +// - **findByName**: +// - This method will retrieve a product by its name. +// - Return type: Product +// - Parameter: String name + +// Example: public Product findByName(String name); + +// - **findByNameLike**: +// - This method will retrieve products by a name pattern for a specific store. +// - Return type: List +// - Parameters: Long storeId, String pname +// - Use @Query annotation to write a custom query. + + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/ReviewRepository.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/ReviewRepository.java new file mode 100644 index 0000000..1e2a460 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/ReviewRepository.java @@ -0,0 +1,18 @@ +package com.project.code.Repo; + +public interface ReviewRepository { +// 1. Add the repository interface: +// - Extend MongoRepository to inherit basic CRUD functionality for MongoDB operations. +// - This allows the repository to perform operations like save, delete, update, and find without having to implement these methods manually. + +// Example: public interface ReviewRepository extends MongoRepository {} + +// 2. Add custom query methods: +// - **findByStoreIdAndProductId**: +// - This method will retrieve reviews for a specific product and store. +// - Return type: List +// - Parameters: Long storeId, Long productId + +// Example: public List findByStoreIdAndProductId(Long storeId, Long productId); + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/StoreRepository.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/StoreRepository.java new file mode 100644 index 0000000..895456f --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Repo/StoreRepository.java @@ -0,0 +1,26 @@ +package com.project.code.Repo; + +public interface StoreRepository { +// 1. Add the repository interface: +// - Extend JpaRepository to inherit basic CRUD functionality. +// - This allows the repository to perform operations like save, delete, update, and find without having to implement these methods manually. + +// Example: public interface StoreRepository extends JpaRepository {} + +// 2. Add custom query methods: +// - **findById**: +// - This method will retrieve a store by its ID. +// - Return type: Store +// - Parameter: Long id + +// Example: public Store findById(Long id); + +// - **findBySubName**: +// - This method will retrieve stores whose name contains a given substring. +// - Return type: List +// - Parameter: String pname +// - Use @Query annotation to write a custom query. + + + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Service/OrderService.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Service/OrderService.java new file mode 100644 index 0000000..a2993be --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Service/OrderService.java @@ -0,0 +1,27 @@ +package com.project.code.Service; + + +public class OrderService { +// 1. **saveOrder Method**: +// - Processes a customer's order, including saving the order details and associated items. +// - Parameters: `PlaceOrderRequestDTO placeOrderRequest` (Request data for placing an order) +// - Return Type: `void` (This method doesn't return anything, it just processes the order) + +// 2. **Retrieve or Create the Customer**: +// - Check if the customer exists by their email using `findByEmail`. +// - If the customer exists, use the existing customer; otherwise, create and save a new customer using `customerRepository.save()`. + +// 3. **Retrieve the Store**: +// - Fetch the store by ID from `storeRepository`. +// - If the store doesn't exist, throw an exception. Use `storeRepository.findById()`. + +// 4. **Create OrderDetails**: +// - Create a new `OrderDetails` object and set customer, store, total price, and the current timestamp. +// - Set the order date using `java.time.LocalDateTime.now()` and save the order with `orderDetailsRepository.save()`. + +// 5. **Create and Save OrderItems**: +// - For each product purchased, find the corresponding inventory, update stock levels, and save the changes using `inventoryRepository.save()`. +// - Create and save `OrderItem` for each product and associate it with the `OrderDetails` using `orderItemRepository.save()`. + + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/Service/ServiceClass.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/Service/ServiceClass.java new file mode 100644 index 0000000..fd334cc --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/Service/ServiceClass.java @@ -0,0 +1,26 @@ +package com.project.code.Service; + + +public class ServiceClass { + +// 1. **validateInventory Method**: +// - Checks if an inventory record exists for a given product and store combination. +// - Parameters: `Inventory inventory` +// - Return Type: `boolean` (Returns `false` if inventory exists, otherwise `true`) + +// 2. **validateProduct Method**: +// - Checks if a product exists by its name. +// - Parameters: `Product product` +// - Return Type: `boolean` (Returns `false` if a product with the same name exists, otherwise `true`) + +// 3. **ValidateProductId Method**: +// - Checks if a product exists by its ID. +// - Parameters: `long id` +// - Return Type: `boolean` (Returns `false` if the product does not exist with the given ID, otherwise `true`) + +// 4. **getInventoryId Method**: +// - Fetches the inventory record for a given product and store combination. +// - Parameters: `Inventory inventory` +// - Return Type: `Inventory` (Returns the inventory record for the product-store combination) + +} diff --git a/RetailManagementSystem/back-end/src/main/java/com/project/code/config/WebConfig.java b/RetailManagementSystem/back-end/src/main/java/com/project/code/config/WebConfig.java new file mode 100644 index 0000000..f72de70 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/java/com/project/code/config/WebConfig.java @@ -0,0 +1,18 @@ +package com.project.code.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry registry) { + // Allow CORS for all endpoints + registry.addMapping("/**") + .allowedOrigins("*") // Add your frontend URL here + .allowedMethods("GET", "POST", "PUT", "DELETE") // Specify allowed methods + .allowedHeaders("*"); // You can restrict headers if needed + } +} diff --git a/RetailManagementSystem/back-end/src/main/resources/application.properties b/RetailManagementSystem/back-end/src/main/resources/application.properties new file mode 100644 index 0000000..d143fe5 --- /dev/null +++ b/RetailManagementSystem/back-end/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.application.name=code + diff --git a/RetailManagementSystem/back-end/src/test/java/com/project/code/CodeApplicationTests.java b/RetailManagementSystem/back-end/src/test/java/com/project/code/CodeApplicationTests.java new file mode 100644 index 0000000..550e5ff --- /dev/null +++ b/RetailManagementSystem/back-end/src/test/java/com/project/code/CodeApplicationTests.java @@ -0,0 +1,13 @@ +package com.project.code; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class CodeApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/RetailManagementSystem/front-end/add-parent-product.html b/RetailManagementSystem/front-end/add-parent-product.html new file mode 100644 index 0000000..474e296 --- /dev/null +++ b/RetailManagementSystem/front-end/add-parent-product.html @@ -0,0 +1,87 @@ + + + + + + + IMS: Manage Inventory + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ + + + + + + + + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/RetailManagementSystem/front-end/add-product.html b/RetailManagementSystem/front-end/add-product.html new file mode 100644 index 0000000..9507744 --- /dev/null +++ b/RetailManagementSystem/front-end/add-product.html @@ -0,0 +1,97 @@ + + + + + + + IMS: Manage Inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + + + + + + + + + + + + +
+ + + + +
+ + + + + + + \ No newline at end of file diff --git a/RetailManagementSystem/front-end/build.gradle b/RetailManagementSystem/front-end/build.gradle new file mode 100644 index 0000000..9e49f9c --- /dev/null +++ b/RetailManagementSystem/front-end/build.gradle @@ -0,0 +1 @@ +apply plugin: 'base' \ No newline at end of file diff --git a/RetailManagementSystem/front-end/edit-parent-product.html b/RetailManagementSystem/front-end/edit-parent-product.html new file mode 100644 index 0000000..e3717cd --- /dev/null +++ b/RetailManagementSystem/front-end/edit-parent-product.html @@ -0,0 +1,113 @@ + + + + + + + IMS: Manage Inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/RetailManagementSystem/front-end/edit-product.html b/RetailManagementSystem/front-end/edit-product.html new file mode 100644 index 0000000..e9c57e4 --- /dev/null +++ b/RetailManagementSystem/front-end/edit-product.html @@ -0,0 +1,122 @@ + + + + + + + IMS: Manage Inventory + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ +
+
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/RetailManagementSystem/front-end/frontend.css b/RetailManagementSystem/front-end/frontend.css new file mode 100644 index 0000000..5eb3c25 --- /dev/null +++ b/RetailManagementSystem/front-end/frontend.css @@ -0,0 +1,471 @@ +* { + margin: 0%; + pad: 0%; + box-sizing: border-box; +} + +html, +body { + width: 100%; + height: 100%; +} + +.navbar { + background-color: #343a40 !important; + padding: 10px; +} + +.navbar h1 { + color: white; + margin-left: 10px; +} + + +#form input, +#form select { + display: block; + margin: 10px 30px 0 10px; + padding: 7px; + border-radius: 10px; + width: 220px; +} + +input[type="submit"], +input[type="button"] { + background-color: black; + color: white; +} + + + + +#all-product-list .col { + display: flex; + align-items: center; + justify-content: center; +} + + +.navbar { + height: 100px; +} + +.rounded-pill { + width: 80px; + height: 80px; +} + + +#navitem { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; +} + +#head { + flex-grow: 1; + display: flex; + justify-content: center; + margin-right: 50px; +} + +#navbelow { + margin-top: 10px; + display: flex; + justify-content: center; +} + +#form { + margin-top: 20px; + display: block; + justify-content: center; + align-items: center; + +} + +.nav-pills .nav-link.active { + color: white !important; +} + +input:focus, +select:focus, +textarea:focus { + outline: none; +} + +#success, +#failed { + margin-top: 10px; + justify-self: center; +} + +#alert { + position: relative; + height: 40px; + +} + +.alert { + margin-bottom: 0px !important; +} + + +td input, +td label { + margin-right: 5px; +} + + +#submit { + display: flex; + justify-content: center; + margin-top: 40px; + +} + +#submit button { + color: white; + background-color: black; + border-radius: 10px; +} + +#suggestion, +#StoreSuggestion, +#usuggestion, +#uStoreSuggestion { + margin-top: -15px; + display: grid; +} + +#suggestion button, +#StoreSuggestion button, +#usuggestion button, +#uStoreSuggestion button { + justify-content: center; + align-items: center; + border: 2px solid black; + background-color: white; + margin-left: 10px; + width: 250px; + +} + + + +.addStoreForm { + align-items: center; + justify-content: center; + display: grid; +} + +#CustomerForm, +#OrderForm, +.OrderQuantity { + display: ruby; + width: 100%; + justify-content: center; +} + +#submitButton { + align-items: center; + justify-content: center; +} + + + +#productTable { + width: 100%; + border-collapse: collapse; + /* Ensures no space between cells */ + margin: 20px 0; + font-family: Arial, sans-serif; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + /* Table shadow */ +} + +#productTable th, +#productTable td { + padding: 12px 15px; + /* Padding inside cells */ + text-align: left; + /* Align text to the left */ +} + +#productTable th { + background-color: #f2f2f2; + /* Light gray background for headers */ + font-weight: bold; +} + +#productTable td { + background-color: #fff; + /* White background for table data */ + border: 1px solid #ddd; + /* Border around table cells */ +} + +#productTable .input-cell { + width: 107%; + /* Make input fill the cell */ + border: none; + /* Remove default input border */ + padding: 8px; + /* Padding inside the input */ + font-size: 14px; + /* Font size for input */ + background-color: #f9f9f9; + /* Light background for inputs */ + border-radius: 10px; +} + +#productTable .input-cell:disabled { + background-color: #e0e0e0; + /* Gray background for disabled inputs */ + color: #a0a0a0; + /* Light gray text for disabled inputs */ + cursor: not-allowed; + /* Change cursor to indicate the input is disabled */ +} + + +#productTable .remove-btn { + padding: 6px 12px; + background-color: #ff4d4d; + /* Red button */ + color: white; + border: none; + border-radius: 5px; + cursor: pointer; +} + +#productTable .remove-btn:hover { + background-color: #e60000; + /* Darker red on hover */ +} + +#productTable td:last-child { + text-align: center; + /* Center-align the "Remove" button */ +} + + +[id^="OrderSuggestion"] { + box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3); + z-index: 1000; +} + +.suggestionCard { + background-color: white; + height: auto; + display: flex; + align-items: center; + width: 107%; + justify-content: center; +} + +.suggestionCard h6 { + height: 30px; + border-radius: 10px; + width: 107%; + display: flex; + align-items: center; + justify-content: center; + + +} + +.suggestionCard h6:hover { + background-color: #e9e8e8; +} + +#AddBtn { + display: flex; + justify-content: right; + border-radius: 10px; +} + +#AddBtn button { + border-radius: 2px; + color: black; + border-radius: 10px; + background-color: rgb(125, 231, 125); +} + +#submitButton input { + border-radius: 10px; + width: 250px; + font: inherit; + height: 42px; + + margin-bottom: 100px; + +} + + + +#myform { + margin: 50px; +} + +#myform input, +#totalOrderValuediv input { + text-align: center; +} + +#totalOrderValuediv { + justify-content: right; + align-items: center; + display: flex; + margin-top: 50px; + margin-bottom: 50px; +} + +#CustomerDetails input, +#myform input, +#totalOrderValuediv input { + border-radius: 5px; + font-size: inherit; + height: 42px; + margin: 10px; + width: 250px; +} + +#CustomerForm label { + margin: 10px; +} + +#CustomerForm { + display: block; +} + +#CustomerDetails .row { + margin: 20px; +} + +#CustomerDetails .col { + display: grid; + align-items: center; + justify-content: center; +} + + + +table { + table-layout: fixed; + width: 100%; +} + +td, +th { + overflow: hidden; + background-color: black; + text-overflow: ellipsis; + max-width: 200px; +} + +/* Default state: Truncate text and show ellipsis */ +.expandable { + max-width: 300px; + /* Adjust this width as needed */ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; + /* Indicate that it's clickable */ +} + + + +.styled-table { + border-collapse: collapse; + margin: 25px 0; + font-size: 0.9em; + font-family: sans-serif; + min-width: 400px; + +} + + + +.tablediv { + overflow-x: auto; +} + + +#aStoreSuggestion { + display: grid; + margin-top: -12px; + justify-content: center; + border-bottom: 2px solid black; + width: 250px; + margin-left: 10px +} + +#aStoreSuggestion button { + width: 250px; + background-color: white; + border-bottom: none; +} + +#product-details { + display: flex; + margin: 100px; + justify-content: center; +} + +#product-details input { + margin-right: 100px; + padding: 7px; + border-radius: 10px; + width: 220px; +} + +#product-details label { + display: flex; + margin-right: 30px; + align-items: center; +} + + +#reviews { + margin-top: 50px; +} + +.customer-name +{ + font-weight: bold; + display: flex; + justify-content: center; +} +.customer-review +{ + display: flex; + justify-content: center; + margin-top: 10px; +} + +.review-card { + padding: 20px; + background-color: white; + box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px; + width: 100%; + height: auto; + margin-bottom: 24px; +} + +.rating +{ + display: flex; + justify-content: center; +} + +.review{ + margin-top: 20px; +} + +.golden +{ + color: #ffc100 +} + diff --git a/RetailManagementSystem/front-end/images/Logo.png b/RetailManagementSystem/front-end/images/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a33ee621919ebcadc9de33c700d702eae384dc GIT binary patch literal 264218 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

-hkuSKdk*QHCCKSj!**(mEz3~*O3^F6< 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 (v66jRKZxld4e-z7)`3sCyFFuMJ{+?N?Xe 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%0DbPghJBy8*3H^&nh{HL zjr5aRDNi0Z%aH~V+GGz9YuWUIsb@~(%9b#0%jog*U;GAM`3HZ1Z+-VVw0esS%Eh9_ z6g-X4cw|N;Ow7Rh7B^obWaR8o?EK7Cdu7ngxCM$-K?6fWJSn8T-pd2*s7wfEu{7|U z`rCz!w-`~WaEGc_DxXH3l&?H5sjo3j&2)4ogKe#O1zK@S+Vcd0vGt1Yb6;b&?Fr20 zQ zK6TCm*6v;U*J@T)NfplkC0$A6q9~T=f1o8Q--!%+D-Q6aCp-?n{%gOAhn#zcOMyda z`N?RArKKeukB&sfw0lIt8Gsgp*T?zSsQMiBY&DZyTP>9H@B3$}xwD4Wj@tWNZO-Iw zsS-Dza-RdiHRpMA|Ni{=-e%|5e5UOjjHOWPMGZJTxh|bMvxfQSqFF=tAkZd1JG&;U z3hye4;*UE?^7(CJe)6NeZO~7C%r^bT`uh65C`n$FB=K*CVYtsn>RTFgZ@EtK4hU5& z_uq8CJ;??`CxVOk>@sP}e|+%y(=PR`_3)WUFjG2#HT-vKYjII;J~57SXmz+YPY3L&faJ`0W^>jNpZ`mqB0t% zh*2LYT?;XpS!C<4a5{Z>+t~ljsGdw`WR(lc5FJ>X8;!b{=hVj@BVlCiB53toGjet5 zQy!M-b;_cWYn(M_(y`Kpk|MR3khP6k-3ju{5a=|tVN|)yuk~P2^P3#_YMm2LI#uGP z+Tp6vGYe203QA5N8`7C<2UfAhn|mi1Z1Ov)d?AY5!(=ZK(#a){!R}= zRxxDA0*o5LvVR`@V>oZ#d^Eh(W7?e0e(u+ftvk*%V?-T*08IA#dCPo(|J>%u?DC?N zv_t*#Bkvq?T*;Wg`~+u~rrulL7n_3a$q+f$#{2nzBU8G)#Ky1?sZLN zIjqX+eMMEhvYRAd3Ie&^+pm)xfm1XmCwa8{_~u8B9NE$7^DtAUzHe@r4|AabWr?6^90P+#&TWB5QKQWr0fW6eEC5Br%RtjQ5LmaEGd9_JG?XPAsD3NfaeoH0*hRr7BfFI~nLmSktat z%bVrK73HhtO3qxa)GB$$`8N%@z+=w&;2B6kEly;tsRS2`m8FnV!S5uYrRFVLVFN*6 z-XsdeRyPbwV|B|Xs*@i|OYyM#R=6xL71{F`bbeT2=Qxmj$H0T+;?69q!IA|{jc=2b zXW2+7mnNG#8uZa^x5Z7r*z4fsFa0IF=(5Y?LhedKqk{ zserHCcnhvQa2RL`7GK*XN`JQOV@h!Im2_T{8FIr;_>4wv$k-i0ylhn< z2?Fd}Uc~wPPQy9r0+s>vJeRba_e$;aIr6TtN?g{zF$#cwN#(gpKk1~9NsmNI)QMN5 z?nH$I7}P^R(x4bSV(JYf*nt44rakNUyife=?t2{-l{c~va`u>ALNzRk{B324|F3J2 z`J7vG_nqH;ZO_{V{Vu+v>+9=#!&dA0aTNbn6b26>n6TBm4Jgor5 zZ0y((uEkv7*#<>Iju;pMI0)d%o3F)ph64;LMnDOo(p0*Nm}yl4lLA8nOO?#>3$3!k zj;`bo^*L#eN!f4h&xjx3^y%O}s6oCF|Udza|1!*E78L10TTa-|!}U@46e%>2;~U zBGMWtoo#G&1ltkcY~mpW+G#2TI1NNW#63!-#DxxLO_-{v4j?Ay&lO+Q=gvr~sMPk> zAy0geVi!^@5uH8>kZ{q~7&tngan|X3R2t!wU{`liu@WbpVoqkRbfb!zLgg2K3JwhU^Y5fPCwlXy2$5n zbI`jUhLf=4>t2xeU08rnr5}VrN@})yX?=DhH;cLRgG5KfSlYPgWvo|oA$L8}X;7k@6v@k`9 zBxf&sh#lmLFHM)7V@-F8SqL$|IaN3VKUwlvnFD2-O@_y#wd>M_bl@#Iw{4ka2vE>q zM*&twLkyw{8=>iuuSd||6J{YoDBAN;r4i7$vWrt2W7>ahqb~s*688u?AYdD@3mPax z>Stq-zLcX8*>AAi>)^8rYQebQCHFrSz^eVGQiW z^g7)X_L;8-z`sm@-@5#A+`e}gRu+~qsA3TfL2Y+dx{x6k%d8taNy@s&oKA?){+71q zPq{Cyi-FFWN($<(FiKtiq#itL`D^2Kj0Z=ss}?l?}pwmk6fdt z|K$i}*!fY6^}z(|oi;vm;0Qi*=m2i%wSk2NMC{-|fqpAOMbQ|}Bqbdp>&8n$w6YPF zj`Z=!#brEc=PvB8fEL>ymFquMP~3?bbWb27hscoZyt;8-R`007@=rU6|7kliKXtQs zg68AY4|IRq!-1+=?2IOtw$k*s!vGKFGT9sh4`jQu-f>-TQ$H3k5!#!2+?GlsI(rf_ zf(r4qYy)q<_8Yjp6`^P^Agdxor1hkDhEQE4;v%%*rhb)Z6(!pJ4eXx)Pd)d1oYzg2 zvgX>wUT0pAPuQ`ym?ojcNU#jC8pOEiU(e}xuX;DWG#FsCu#7Bdp&T+QNHC;?CdE3O zgENgBXFd9PvX5rUQ%iQ0$q;H;AtK!kD8JVVDs;;dOL>mYkriC9doTXu6Q7Jd02U~k zQdA;_@sg=5C0LZ|5}vO0Z7`ak-RWXXL6OlI-EJF)Rt9Qw`}5bn2BVxURi#8hqJ%1F zOmkb5AI8>l#eY=#V)~iJtCO}=W6o$5X@^|YN9V@U=eFcY*PN8Ad5MJ4dKsvXoqFs{ z!S4-Iv>4^Hf1DyQOc?O?JKgp98s-$W?L7rG%oeCATz%8Y@#$fThADk z=TRih@|*@eC@sU{)5I)6`1#`;3Pz_?lcSL&z>RZLLOUjdiLr=iLbTIZgfPT5j5pS? z+-u`m7hQyx{o;#p)|sbER3#%Toj`x&SeV>1e;-zQUG(YHl0C3sByL8qCd+ZDb(NxAN?rFvxCQ%Z-3~O0Rxe=7pk+#2`NpAA z(mYVNK_1X?7$YqPIBjE$|M1A4#6@TA*IZ;K$@b>(CpFH6`{dQcDx0k%#6KN6h|eFm z9XBTtf?ijS49gm$!~mB`$qYvzx?Vn@#5}OX)IG9>M=UPm$@|X0ULJ=TkTemd;?!Oz zX3*;r+7!Us&ntYS$n#frlH`j)5O}QYsh!UK{M*|G{cfB9q=_9D#nZwHzZr$Wn!4N`}Sd%B5)cDOI366wrXn$#+&@f1->W)Yy>F|gdyH}{daKn zx4(mH53eE*62x=?q7WOTN>SU9t;BT-SigIa9i0;{xRy$;YpsnxqJYtrr_eNW;wx|o zYsdK*%Tb62v^u!{k1`wp03ZNKL_t*a36IB*?b@%DJDrsUg2?n;tBoq{%G!3*pu65! z1N2!flS?d7(~M*fulMohxBNZc@(=%rI}RK~ySpG+QwEF#W6{t{NiAR*fay?^WTinO z5H4YFyfYA1?r^A!f^x5=G|3fl@t;b!GO+C(MwrrK+ef84VDjz(r4cni$?5{GfAXtl6F>l!CAu zmIV;7F5vt&N0d&Cc}7qQ+A2S!inZ+3p#XT@$3B6N-+U8pFLDey-&-AI%qXek!`4Io zYH&55DWWm1vllZmpC07rx!D<$Tk4)K*0xy^+q1X_gY`ZFc0e){lJ(88e8Q9H^x+VzbZYPoN39p}{L0YCCql z%Z3&XB`KPvF|I2oIFyeu7?)_ZI#MZs(b}F^I4`NO1-Om{Eb0 z_4$+_F192QkmbZPP$(5|RGtB{DnLI@aC;Eq%eUQ%+t)S_L@o7A^W1Zyt4W*M5Jd6D zMyz8rph^XpLH9LH8Ec1v7BiW)V`Lajd&GUzUu8;L_L2x^>{!MFy9)v#5!}~dqH;78 zd5lrD8tR$`-MS9Rg67k$CZVaCv^$60{J&(tk0D&Y(@vuB=3nMnbrGiOBL*kmi#9Gt>M*(+*LteKED(X7pFc!J=qNKgzHXmKZ6mPFw=#78m2l z+T|RleJx+wVCAzp>WEU5iVjfl`pOdBE=v#rhJyjxX-jHm{f!m0^fcrG=soF)KZRd@ z`OEM_4?16U^qxL6oEzKnOsvJ&-Y9L#b0HTyO;TNX<$QJqop&*!162YW5pZLk=$H|Wz+Pjk(xjd_IwRaw5X zDDpo})AZZhX!bj8S~mUSwn4vZ$8*!YQF?WlWsgq6;5PyU7Y0GFNQ>Sy+()HGX9O3H z-mTwWk%}HGCKyQ@Dm0Yqbul_pMpY}^j_F@|?_2}iF8u`X^#C6s`1}{sfvocp5EqRn zN^8q<62+u;YdQ`tT5-{u+J?B0h9TC&1RFAkCdA5rP2!j4a$u0ES%SOGCa8bU8&lQ& zo2_k+WG*U?h@`ecmxZJ%V>2Lv9?ObCPpi13oIpo93wZ@{`phw zhc41%`j()vAOu_JJ&M|s>8R#DF-lnh=c-VwbEK5*1+n_q+i`jnJ*fyvm`MpLtW8Fe zWEFZH1%`2fQ4FQkY4GW8SQ*07&-q6TW`+qmAnDBjyT_$404mzgHI16E3eRpD^_P>eG71yQ*Tx-eG?oM&&$p$j zJ=3aa+CvcmW7f4q@9uWgC4a49?VHoZSgQ;}Vynw>-2x)2uz!_5|ioNcMRv|+- zhmnDyM(P13tC-1U`y1~$R;DnsLU1=ntf>XIjYufsP-t88%4t-pAe|w_kW(O@c9-^N zhJZ&>ZF}1PZpqLJlOjVaGL*a}y^l8Nek`||sP%Fp!VKpuxYVWpjO!NF$T}iZDTO@F zvk^K;Tb;QUXc$+zM$Qq#(4ep`u1Gzx?HF0J6q)H}_FNJLyo!DnA|silF+_)`@cW;&!*Zl#-y)T-oLSBpkm zqu*6GED>QnIaCp;F9 zz2Kp`cWl{i@L4J}6kATQ=ZS>S2rz&ozoi|_<)D3~nc{q()|yk;7E>JM=KP_w=pw(e}z z&mNnGIFcWq`L(R7D&E?!qrhwON%)pt54Udv;O-v7vu)7to^kDc^K&L$v~@JGZQHgv z@x-=mdtzha!|F_W(1Ax@ee#&_pZqj|)!noW@XJWrJsvUt}Od1<^;LOPOt*@Ld>$R06FEK%2s&mUVkk z{#n}lYA$=~i#g!ph<8ybkwn@%n?_(p%Q1LHJ<5vXPj5@oTEFDk=G}8F3D}89SZ^?; zOx-ikw#Kt_sW^+8rSId;Eh`m}S7s>L?%s9py6yb{t$Eqgn9_9>3=Hg zI*-k}zW*T1lJl?e&=($wKwNH{20Hk>8R>h7tK3w;_J{*# z8fRso$HlTGaqW26z-otkPo6b{4fxB_0^O1mf4THVGZQ0w1|MXP7|U~2*{y7JZ6|bC zl@V;7?Ph<>o_T;+*L%T}<3D^9sud>(tV#T__|uoF$$W$kKc!*xmV;3AcK)R*(yZ*r z7>C42Kdy6bp|t&kiOO)Mv4OhxzIKW-U_-Ic;{xvYXZ=&#$4Pli-}i=k%53MK?Te?k zw_tWZ|IEQ&LK5!WF~{mi{lR{m%wZS5NwTqL?ix3S;TTih!Cfp&2_MYXWg5*TfLVlJ z+phmypw>cJV*{ZXl>4nrY`bi2h5yNu5tQXjXoq)QqePS|{#^>Eo8OjgVx`iTi^llS zgd42Z!5+$@0;uh|&k=zVT)oJH=qh>n&8ZDx)qX5`IhR02%1sMq5qOc?tEhbo zK;vKlaFdmtnQn6p8NjL6aGD%7VF!V?Kr4kputEpqWw0@jdr#_=- zHPIHITr2za5mU41Z3?+q;FPhNfs)|Aj2-*b`OS*Jx*`V*mK0Q$oXH z1@V}iSVxmqulYwhbihmEJSB<{Wt9({??03e_S;F%QKzPMslfD}6HnZGUG8B4kNn{# zb4P^AWj=FNGC|gwN6PSkM%)ta)!$ZG*^*!+;i4XK-&Pue*}*$GC;@*m5lcXB?R(bS zSB1JS-c?-=@tGIR&ivH-I8NnN5WF2Ht=t7Kn{t?2Z@Gda4UwH&S^+$6dM8Aa@7H;ij2!tiOUD6abgExBBm_ZQm<4nus|di zBU!MS;jzbD(Byoxqok>jYZ{WZrgmLsU8Qi3EO83b;P^TWG3KNUh|4a-xCIivmDd>~ zih@ZEGjpfZ5j|Orm5YPWQs|^-RwQU=)i~-;h-SJB{6=gmy91m*vB|8lPIq=5I~?DF z{wvRA4Cr~zr3O@^H57>|sRkeL8b5AawMFyp{b5{pbRE?*a>cWlxM<~nfo(n_{g|~l zHTrH)U2KJRa?TayJ`;my>|h-GMo$Y(u!GgW?Odew9uw=Vk$UDIe|%%OS*`Wzp1wac zT#g^iC-CdJlG_B>ki3}=pt*}2{xi$Uw1M{{+PqZKcq#8W(in%Dhm{`YI28|C&eB&3 zmds}aLSA45pGW|q`^|qkvuWS$$z_r+VTxy2mwNNwm00E|igv^v2~CIB?=LMm5A`GCc0zEMSU+A0IilQ;V@U(`&7W1mck<=v~PSx=P$f3dJyEpwetI6uVv3_Y+;Bnfa z(*BI$sFMgyvfn{cL?t*D8t^8EuI+W7u)W@dc$71G z0@KM`WMDbOI{rv5*k_x#e+gaZ(s0-!wSRdiY8JbqyW+RG3C%ib8cisxxg)^x1-B}Y)sjMlF?9v>k?q;NePT+7c< zMTD=z&oF1=*EBrSe!L{r-o<6?Y}Sc2J0ennP7QoBsObd_c+{vJ8mW0Kf z9^i{qEBB`lkKDs zLB!|Ief+urxvP9h58n1OW0`E)QzE_?p6BI9l6p*YGe*(3efG2<+SkdlKZ4N5^9XhG zG&&fSJJ7 z2fYQ*GneLYpLe&T;u;9x*$kC0aK+p3 zW(0aHvjfUI2Du!b0nfko1#estG0eQo^wDciGmY0;SiS^TGwgyt{cw+~5mnUG_(vPy z3Yg#jQNtQwldQ1#O`4ydm2_S!eCx_{48)MS5+mm(TE3-5r6hx2wHQ+AyYe77*rAYH!|h92Me;z!Cn`%L%NpK$`?zBKt8 zb&HTwmBk`Wc`s>SQ)b-p)?KqR9MhgX3e<00PY(VuT|j114w|!5UMwBeF(=@3kQzwt z>*>?=QGg#$kNZ?wU1evWGk2oxDQf$K6d7``p}<&ZbA0=24_ebN*{r9;Q|sR@obXaC z-KY+u@?z^-OxRAHRllL8R|yeTMsb^1p%|S_h6|Sd#IO9tHsK~DK5bc0^tZJ8QJU+8 z>wki!|2vKU3H2f}!np;`d4md52yY$_S|%He{UhCubM`}R5-Q_PZ{ZH4r9^2N-D#D6 zAMg4vbL^2^elr~#$8@YgWn}ohT!#PO$-AZJtmO(POv1lYicin8b&4Tb)JAo4R<1f8 zfeU;kXu7avrvP6;VArJ#VoRaBa`@o=sa{;=<&`BbCsoJ66rO8*XE{Qzi#e_**r&JD zH&=#jI;vOCwz;QqGu6GI&~Mqc^?Ma(I`J2GtEyojh7ZgKlfMpeE9j#WKkqum-Rzd( zaX5?tMD8!l$vuri`v3i5A`)33Z`!Kq%+U*O)2iYXP-pw?(aX2Efa|uoBT^e=$2cS{ zCPJ#JW7+1baEB!MWeG;iGGC%^pQ40H7Moz6a1$N0qRMw4))`cll7tT`<*Z&3wzP-g z^YUZlD?4C&_tqk&=}T}u@SSxPLexuaft^`!YRxx(V8F%H^in~o_pTds0`7bq?7F|Q zH?Xz)rMhjuBn#Ps;N(H(~IS!a>Fvxl_jtVS!)+@5nq;mBS@8 z3bS~Ar}FSz*h#xjueWoTk{hNv?qZ6O0RBg-Q_&sqi(G~{_ng7N+^0a>y@f$wbdDQ} zyF02LRkuo9afsiB{`0&At*>$$Pj8lrkGH7>{-!`me|Dv(Bax^x7pbNol5g%h?A5OS z)5yR2E|U?xx6x%jEYub!4*%%43o{|vCS5sta2;6)w#I&5E{q*x)6rsuksAxy{7WnX zEq_9C=O~w+!WSFG-!fuzQ%3#*NhZ@&1Jj9+n-aT4&v#5g%C>ke2k$sQvpw8>PBDX3 z&7sUZt*_2pi!7Xb5E1?SS8XNrTHxPn2du#0^`DO_tZ*Ku6W{-21%&m@yW*6T6u^n- z(TQ~OI}yrnINYiPsgd5SkO^Jz5NnAbOd$_L4Z*$oLTrkt3?iC;KbtC5GfSMZarAmY zkaaDh&e$KOhL)K;m$o?ZW^ds=3EwC2Bzu|fd_MX7gPtH4@%XWb#*aA)Pn^_@O}G=L zTeWL{L*NC&4>*Oz&i-OBsoGag_}x6)Rm5kM$Cdk=GEc^DC638&g(#|C{`C;TOX(%% zNH1ZUW5kfZVt(U2>*@_x=xl*4OvSa@oZ0S%?HU)-&R_Ybyq^+zN{99+@N`O$GakTcu5Ah_BjNryoHmk9q^9`q(a4 z*-c2x`MS(4R*c-Aty8kZh2SPeE~v5@FSmWHydl;>8H4wWWp#XwW)9Hl_=qF`{RR|( zlMwC4W%`S1xL`1n^ADiOta$@F@q@`)pbS#xu1t?4Ze-PkaA+Q~67c)@tF)129qZI@_i6@j7f^mjLZ6 z8^S9>3&*#=)vE1}x>D%KkI1gzhUCNXq z@gg*=bU#~6%w0xxxyf(6n%uclgq8Rv>=4tlC5Ei4=9fei8vPMn*Hg)5YDew8VwF24sn==ds9Z6acvxEV(5j704;daDDlI^0efi~|^CVHS2jRHF8I zL!N=l@5XX_lXfqyk5b7V!O{xL4DCAZBB7+28O&^b$*z^L#`WPtP(l!$Kp~Uelk>h&&0(hvSU+b6ESW6QU5XwJ>9zdvHOG;p3Yi z(MQ3XnLp*NpQUecKdfsx#Q&_oFHlK`TC=Lyty0k#3fHL&tgtMu(uy@<7IHL(wJ0EG|Gy{MS+*$BrFCp{;l(T(_7}s?nFPC|!>fG`wH{sC5hn4dblPfH@TyM5` zVZnsU5*vKmZm#)b6?;T#t#DRdWAJ+h4ch!cy@XB8qxfu>+RCa6{fA1rcuxwr3D1H` zP6lF|u-z#atI6P`R0Xlo6RgK>SprVX|ljk6kB>1C+$l8a`#W;m{mAH z*iVnEKAa;!xWJJBGTz0HduiprWdLhe@)4yLGRbIb%U~2tK0P@|vJ}^(qELD~ya0jb zHNExx+)a+US(b${1~tDCXO8j7=etF0K4+XXz%Rem=4Yppw>Pl?Yt{yp``*KZLeeD$ zS2Nm8DZb3+DV*7$<{vVcZfi@W?Rh3y77}t`LJlf}2@QkNMXqn@?1N^-Rd5pqu7nXO z$I327tPMbued|2XtE9@@J7O89wJm{_R*U$EL`|9X*^9kwzfzO0oSbnu_IF7O+g>&T zpm%^KJqXs63r$>?CB1l>$!TR4}=28_zmIMO#L@6;ODC4-f*m z()Ym9SeoB|Q|n<*rLY^ujr16;(0?eH*yK@C+R&64``wrurZX7&xiqGYV0*sE8=O7% zCjojTWC$nCm1qlX(F$QQP6^}c*sSvTn||x`KFZ(sdXRZ*(M-F`X)5QznMb!O_cF>) zzuK`?=3RnszaGA}4gNi3BXka|idA}|j#46r8FmWf&^K%iU0Ss;yb_xp*jp`?7IgDV zDlEee*Otw_49ZGR#bSmp*5c1hLNuu1} z6o2o$vE#LOM$}u+-YP9TWW%h1-_K=HeB59B=UcG_^pali&L?m_YBUk?I}c54XKn_v z_xNyT$S0Htu!)0Bv*295fOUaXo{Z4>D3Z9#yv1?J#3&RZTwED=2^i=1I29pm{z zqZ_xC$_`&f`?ysHTM2}elsOiTgUH^=0Y{`sIU!N`R*v_rZ2DWYU62OeSh7 zE+&R7WoM(fUvLQ_Zj7tqTna@Zxi3P1a^sNmJF$S9O7ueQut3w*cGgklp^}o(DP((3 z#siKjSWgxRlnjg-)h(*Xy~Jl&yh?Z&hipTyiPzuodNKd)O~hDnH$N4xRQ?DaeSOB> zE>?P1K~0ybq#}@q=?Aw+Amuo*+!H#mycJ@}EuI~VjDeodBEc$oSQL~3mZ?1A8YP;x z$7Ld~gvhuOQ>4=!XZ>cqT|nr$p)P5r3Tnd3+Uah1)NWyN6$}*X@JPF#(SS8K!#+{o zq|4!yaEe<{u4tl|*RoQ&P#v0#501(EHqNZS>E+^qd4I1)D8v83Wq+9?7uz`zf_%5* zet2Z=XUo#BrLBw7(z(6$?H>mpPEX5YjMdz##jxEQ5x+A5jD96lW{9T`&ABe`AvUo- z0v8RBO=_(u?@apce=E6(53)y*-I3iP{nM4*EK#lkAI`Pls*Qk8on zcJzBY0%|kH1Tb#+3qa5^K0z8%8zGu~Bx`fWRX07@X*tQn%$8`hxnvrx*$ZZmd-(i^ zs|RQM9H}m|#cW2yDnzH=x^(Z&UDHiVZJdpD?i!_`vfGs#o!W`43+}L79ZNeR{7@l`Mgm#`nqiGtbORG2QIY2BI z8#`uw`|pQ*=KAYUhvYl3nEXLNx>VsxxqGJ*KA2Hrf9G|zJpA(QPA@Hx7(${(^-Ve1 zIEd!@0hH1MfAC`2_s5B0ge|iO3n7iOtdVoYfr|#a<^i=9>R7pyy%wzGew7i@h)HvH z{$h;SoYMd20{rc8opCW7Ax#DP5T^pYK<4x&sI~15oZx?>vi+Fos*Q|UH)Y0L$L}|b zdAAO>_bAJmbKh*dEIyL|6)tLW-V(KPk)t>P{+@+HHqGMj3?E`S!g3y(!t>r`W8O3v ztN)|L&*-UQ`o7JFQsA}SOG`)vl$n0T%Mi~K)<|)#F9s2yXeOUc($a36*Bl|4c{i{N zsY?1s%odUAh(^SleNw#BN3SSpXS7Q=+GTIXD4S5i^JiLW*Dq%4dD|xT zL-mRw{MVIzaq3F^e6WRSL!kcI&*_=%8)P+`_A9XSaxfKL0%Cfn)?rF9&C+4gnSnKr z7WO>9ukd+evN)HVE`rvbJ_uS1WJniD)p8HPWCX30gS;iEx)ryuE6uWu(7l*-z0@NRWO*d}xxn3%&ERmDD!4ZIQ#k{WNdSU+oGx5}~ti^mML$txO+^a|@D zq()LiOqz&BXJFKrHH4nZtcggX9;TkW+dpo7(OLt7w{V zx)2wJUC^WS^x!B&m5U%T8hq(zw5cMM6e#<~c?r`Q!K9Yzy^opW@VUQp9;shdwcx?^ zPU+FKOC7i?{zF-!VkXg^#IqSuW!L`*F^TGk_`a)7C!d?x&1kmF1@;u9k=>5sqFsU# z>kz4Y6x{iz-FF9oVsBpHQJil3V2YmeO{EU)7Ap;aci1kL`^F z17AbN>8;MYH}TFgSAjWv`(Jl~Kkw)^A>^J8aYTw?7diYlCC;ATa9M%h^UKO}FvDW6 zYYXfVRFgE9FJ%>)TXm1BT-Kfqvb(0dle1MaRosM)qNV&d@k$x3uW^!D00$1D(08sK zNA{FtcIWSr`JL|SyH8YB$Utg6UX#mwiec|ri0-&%WKueK?Ppe1x>+-S7@KA#myOr2 zC4}jwXv4_>tA7SfteNuv^>bSoA)uq$FhHE?>%3e8$$Z&U;86pPlipj$Tei+iN6)d^*$^s$x3QNfV+ioC7IJ_S`5cG&~% z1$r8fSf`r-_b!mPWZY_@eEUKkyFY3&4w+fP@7qyMMK@$QagYQv3A0X6L>n6kyK;3bO zx0}FjpSlC?BdiwK|u$B7vWE))nUEo@MvY2lqLz#l+<^#zAfc4^oAUOjV8z&7BEBPE|J``fz zozK_wNUP%6$g3$bzWN1F9n4BdxtuLlZ_=wlo5Zk$-S7&BoVTqYMv5q2N z1dutSwM_*|Z$t!Alk@}nIpgflWVud$Eu$zVbPD^MV|Rl-$~dI}={?0}gh)wgQfmDhIDIa*g;T`^$ZF&+2{V-kLb5C4&OR*1@6?6j;1qsZkzz zos_(rD(Squdi#~RU@#aYbUMk)^j<+_Mkf$1d`nk!B(o{J9^7y^hY1Iq`OkYE^z@{W z#?4o5>vs3N1g_e4ZXo1Jp`p~n(?f*r7aNiPxPQsw$}@kl#Q*bIjMP68TG}iu5Raxn zvj%jsP%4VV=sv@cT$R^R%0&tci1yl=&rJDbm|xMeTC{iNrY&+{jQ5royayAw+Qa;o zS0;G+`*7FeJN_RY_Yn20r3)|}Zn1A@HEsFK)X3*+YE z{}c#|#@>z>;1%QeCI2J4%0#h=N&`^maJ~G>o!VDaOy7kuFX8YXNj=O4@vrfJtm+%K ztSSp&C$XALPm))@GdAFT7=3U_GEqHjbNUxC58>ga%nM%ifcj%HG@IrSH^$3zi8WSLu-CSv)2ZDv*(@H0uhZ2+a zg_8})1C$HLkLE@-inA0|aR*l&mEPFi~Ny6B|O(8my3GW~&F^7-v`c zV_wkOuB1+aU=rP7E=i=+B|(wZCOVola^RO*Y%!docp-Z0k$dA;1|FecCF zF@*IKXJ=dQsfURiTfwZO8z{i+{nSpCR_Z)}arUy%c+QKrf><_}^2cxY)7AEJQYia! zz1jW6)z%XV$<*tnq@ZGJMLvn?hlruC+Ip?e`+wytpLYh{N0_7tbAH0ytR`(H*uWz! zvl}wAG0(U&!@Og|Z)s~{k)nW(UIuzveh90mTmy{u!flRe#Sl$(mD*_jhFLeiBBjwD zJEg72KBxJN>VW!ot2~SSG#N+x%4&re&JyKA#q`j}ot)D+DHrxh6VVYpv*=Az#kYV$ z(baH+qHvEsH z@X2LTk&)DJY&x_<6Xz zp(9{bv*UfX52_a9nbT>qc#+-#vY7!6jk5J0 zYaW?tCtr_oAqIh2ZCkK0;fNLOOkZN@_~4?4bd&!1F3)wUl{x*{|; z{APM|TYme)#C9sb)l4Z`S+Vwb5rTQlc5#-xSb6$%+XHwtBnKo8-LL3&L6ZG*+Dkc^ ztaIyG&a&=S@RS@(?G9Hft%NOHDCcPe9CWj`xt49l=MLl7*@vfiX5TlZ1|Ph*X|x5x zU51-qxV@xC4D8v`a{~NJQMlMFKYt_eTLQbuIy1a(tG72z^=%&;zIjg&8_M}z-q~pZ zoALVrTdkXMOX+S;IR>o=uiZ!b1W$4d+9Nzlzp=vlWRZ9JYwiz!jkKWX)k-y$tMze?; zt-OFd<=>z6d4F30*|x8x>3WXPiWPQ8^L)s?lB5~V{Te4#{WclmK|RTmt{;ije{&US zzwEbdbkofKmK4f`I2}IsagPHN|M7Tq4xGi~_-f@+-g@Ggl%?7bqJ zJ{0_D*Lq!wjOM-!Fk!TX{geYxp~)FtEEC&rMOx#E3mH$@Sm!w0`K`OtGMk2Nc^GlY zNPT`f*MyX)FQt1wG?H#~UH!h^MClkjQHt&}Rc0@V9h-F}HDAO1*x@=%?;ypkJt5;E zXr0PV;ticVJ1BL7e?HTKlHuCrH<@w~f>r*uvz}r=0yGLN2&BOiiadH`T(*3F0r?RJ_rgqxr zlPh6ds>GyZD{#ibx})Umyp&W53+|PS^}aPDp|X*%`P^Pb(V|qA}rKYk_z_nM7(L!aZzd`3Rw8 zPuN=)xXc)e5R5Qw>rcajyUUSlj;pEfZten6NddlL^X8U6izZU`=|Ygm@RGy|D_!A<=yLwx(+-pKL$Tia1wka zV@>`ghFg_!Z;9hf{gUh;!jZR%qL#JqaHcCLL@v9Hp7pWsoAZ^Pv0S=tSK}9`V|xLsU2}?TH>ztCfEQ1sZgbF|IIH@a#q5ssl!QCPpWkgYy$PB z0$9SutXCcqDRTCy-ZGUtLE$-%&2n-^N;78*qnZqWmzSEdB32TWSCmcA8U@^58@Z6} z{@MlEc`dTOo|9L}{UKzmC|r)!y8g>=j9`amAJrC-6*{zVDDn4yn&2!d*KP=Huh}@R*0ewqvE>J z_Li);Dbt-2H$^0O8pGH7VJAP4#lv~0sWXQ?-Ow0p2js;a4#>Gi1Vk!+i8_@VNHH7> zURzOnNtn5l_w8=|`!o1ly*z@4RMbuG-+sPuG|HDyeG096aeNy@%8gl!`V|3zBmVO! z8k6(QdBfAUhU}Gv38FTeX3zOny8=4@2ZZ;cT{7{<+sc(luM93u?Z)*W8Vq&wK+#x4nBTpgj0;g4xELu9(%ub# zmRlxO?c*LuB*YwQR667=BZS(WHQ|=v+p`(QsSv%NTXZHLFAXk=BnW%sblLZ>VOEV_ zt&mc8B^wvRH)l}k7+fFR1L(P|Dyq2r03qseW}}(3LSU>cx-1qkVbph;mVf&ip8Cu) zpJs9R9sB+Kw`_dW?f>|CrK+u`Yc8R_e)_AyB!*|A`1 zolCvh>{odS9nX1ooZud#cJmy-o9~pgqUf5O$&UsfXg341YAgE_v61;09Wgdo!S;<; z!66PiT@V~C1YwgvJSkQX<8t3`Kyw6r;6ps2etatDcXR*sGMzRZHn)`vXJTU-de z;Y)78yGG0vRQY9z8@Sg>e6N+=toNuTup58xZNN_X#%D5#Hs~r-XkOqfkmOFUs`QfH z9|eP_WPKz%#vQ3g^e2aG7Ln7qHy?p(VpiT!^%DNg?AcL{+c|dxf%U*Zp6fd3Vo``J zObBV=-URRvYQ7Opos}oR!GWH(~rtxt0?#HZD9Nx>>#K7~;y z>$%I~k)oB_{4{^^fHYF`$-ZAaGt8gI@5Mk|^7Kel>$+em2Y)o<^Z6clz{vX_Kgll= z=imb>imJ`Ub@@K`KR7Zg-edfF87Pkow#&gZbUL@)S3^y;_24$DnQ|)tDdrt;^0rzIY<|;dPwij1)p)$0>OWnV zgnF+G3=h}!23UWo*r&rim@2}%pG8Pccen*)*^!hynjNo_;u=4X()9nwK0pa0Y2i+<`-m;qew{c3iag zD}m)@es~6r-nDY6XJ+AO&As3hn+}=|8v2|tNIFFSRj*jWYU7F}8JW?y9W141yVbZ? zjCA|ld^K8I6-&XPGdESsF7m=t-Qp7WUT0uKJyM}5@^eP>RaWetnr*X+rc2~_8N_h| z6?%c#)wudg603SNUX_-q#(ew2HT%iiS^;V}92yk)l_c}rDjXNKXM@t~vy5ex3x56z zHwiCY6Hen|DziPTW#4Kf@+?qz9_6RW$DbZ;1_v2(p){_vy zzAfA7aO}Qdepk2bb@JCPnqxZKsM3sQP%+(9C4sOkmZ~KBw@BL)!&go_|)@6JInSjV~hNK zM(>W_L-X-_VH|ST%G%DFL2e~bb{61_J7!2vuP0GiY2B+$aHwxiS$$K$BwG|`cT`n;RD}-IpK2f?AnAZ79U0Gr1hp-l z&kM0>5f>K6`k^tif3C0%I=k8^+=VCtg`M$F?0_j?BElX*v6dFY!um9GnI zPQTnt9t0$z*r;)-4eW1U2faos5aakc0{9K-)?k&qAnST;yjQ!xeDY{3EEp zC6XWk%6^^F0ThnVimUnR#JYVi*ow z+6HU{vezK;A3=EI?i9|Y6!#F=b`3P7xyUz_f8YO7&OUKQZ1Id`F2gVp*ZDxyWnB{T zHElqGqGae87zp)yeLC7dvv97O3||w-b)jd93XafPvxBKMuSor6Exqbql0S(W<*|uQ z8=Zs8BK>M!u+N=MU@u!Lg+kR(kOT>dTdZe-_9dP>aqY|nrsqz&+%3k$^3DKE^Ya1S z1ypKd){n&lp3ulY<;2tskJn<%j9NityXTk^M>G75dKpxG1K4tXempwS*V+VqgPwL? zl#e=T9*F}HYB}H|j(&f8BKCzAMaVM5o}}PqN0_UDQr`9JM~UzbFYzym{1N-2F+&+W z6{(gUir0wH&(?%JFPoDg`<&jEJ%J^q@q6CMe@33<&>zf`&fp_u-^vUPjd(_SrVWQt ze)_+PsAJuv&c8>cFUX7>%B%gvt(l;1hwD@K)(ge9nidUO8)Jt@cAysehMNB{%4;GA zhcFc%$Nb#OhHxMsteJaG`8(bzVHBYG^CmZRv{LHuaGDJGszCW;`4SWKT&hz7@!}Bz z)Gd#!AhcQkYMOIaj1rh@T=JIw%#Jbz(|#qbGNLXm8zu(g(9VVNkLrP#S#kk`qh!;l zU@r}Y>*ikR8T4X|b!9m#hPxvLQ#||0Q@(;^4p{9=dQut83K~i8O>7RJG&+YSvMwIm z@w!TR=NhITQ8Qk)f@duJVUZp|#Kj|h>enx}v`z1Yr&kLH-y@7%vPv>I`nU8$e-F1K zEgXn6>(@ZErp&7>Kqp7yD|@>vZMfgH>M6qAM6OgEs`j$jvPa%zMr5}x^+>DtEYn3T zU-&*9(KR)|ro6gC@4tPBgM{?tTJCE#Bma`>m=LGC+q|U7GDBjX71J{BF^#x1-!rjx zSr%w}N0vGlVXvjV=uj&iPZAvMT0+0{+UE_ad33h92%H?)h)QVmsb!gMx37ItA$e0F zy+eI?JHo=m6#OMk;I!}aZ34VYNDLyn4UX&-{UIeh_MuXsP`NIUVsTF#?e){{a`KQJ zt+Ld20!BYGo-uK{aF7t|vrnBjl%_jrvedGbf;apFOA|`yF)m3bBp!i-orG<7Mc0ym zLvW_L7b-3&`TN)hkhtxI#)r>36L($biINc)z?uNcKU@*uD9K_I@lH+cNqQ-~E7 zCOBn8W^j#2wd)Od(#_dcNF_8EdqSJF!%396x?|C1h}D+8n;8y(LaU5=y>#n#Sxi-% zTqoqVo*oxJ`m5Y#&`#u|=4+wM_z)DV<4lS>U4CTPEeTk2o&MWJ6KUf$7jG-l%Q)!Y zTlZmrF5XMOcHttWIyJpf4TF;j9&{G=jW8V|@laP#V3_~~z$qsuXPi@|8&uYN|Hh17 z*s;H?>l!jatN2}58Q_sBNsLBlN;9psaaVzKqa#G4^`mK}RR8nex3RNP=U>W1*ZDUE zAK}O+Mp38P{QbQh`)RsOZ7que#gJn?6tCEjtxJ`gihJ)~EnVIB^a$_C*#Tp1RYwA3 zOG+@}d-G{HZ#M*F=mWtgn%NEIS`Qy!x{k}Ve-`{EQ1pp;UjDmByR=v(p?mOlM3V0d zR3l!bA8tV>B+<6grSBxBG_$`)6I^y2Z+&|K|z6j^~jq?7uxso&}Mn4UJ% zNqhs|h|in=0gB90(yta+Cyp-Cu*~3A0$CrI$7dF*BcuL0f1p)%8DlIOe>e`87 z5xjir2sfEr`RGm+Xh$`4d7%I1bm3ol@4-gN5lBY^Hy?%^U>?d?cEDf?)SO-0dknB` zbt{?ArzG2CHOL4Hp2S(WEIJ7!YPG6EV7$_sX z#vDVMTZCVQF!OvM4E<^ceC5#Y?W?HWH_;wj4Yw|G=wu+e+i<2II@X1bXuZpPRUB03 zn`(p{kU2pxT7XBA|IifN+lt3>(!W z*Ur|_(XnmT9+7BZ!X9Xao-d!Au`_*Ue4KWtldGb!Zg$Q-EUJ!)RD|iQIG%KOf6+rM zY{-~!Fh~UU$TT8H`YC@^^whF4$(2!E+HNV_QqC@v+laf)MhQrfI>2N!k~*hG?Oo{C zJ{gtHJ1rCQt?So7ZrCh+S8#x@@C9FQal+Kpg(p@zvf>jPXMWSnL=@&9KH&-3(<|?( z2?ACt8^q#L;-)OBiP7R$&dc6J=VP@tb`G_q_q2a=4u%MQdN!XJ;Wv6!*OtE64tM04}UL^ZPF z12NOvh1t1!J9wAvTjOO?0jMo9_gt(u@^Xjlc!E~nbiA|-{MkzJTCK|_+w;I{73m)S zTh^csYgg-??Gpp%au3MX<;P6h(o?|{RL_QBc-CsKNQ2^w9HT-7OFTipif(#wqR8UL zNoRG~mo}zb7M8Ef*AEvBEX*4GJK8&W?rM&J>ca3TF_4h0E*_D1L}V}$tZvwST%v7l za_w<0Est|lZy45YrGQ0%Qiz7oELIxo^ zdu86Lj2$qYlZKzpS2 zqFrz(Cy`E0>lL3pr0O*Z`4i$zwCapeGb8FzPowEiD{G3diOm~pbeos&|57lPC5v6D zs)PHGW(r1r)!=12Yp# zBI;X|rWR&NO14~h2A`;VVuaeBQ*Li=%>zvErJ3;iNDUzitM>jn8fq$L!@YeWry{}0uw BN9X_m literal 0 HcmV?d00001 diff --git a/RetailManagementSystem/front-end/index.html b/RetailManagementSystem/front-end/index.html new file mode 100644 index 0000000..86463c6 --- /dev/null +++ b/RetailManagementSystem/front-end/index.html @@ -0,0 +1,413 @@ + + + + + + + IMS: Manage Inventory + + + + + + + + + + + + + + + + + + + +

+ + + + +
+
+
+
+
+
+ + + +
+
+ +
+
+ +
+ +
+ + +
+
+ + +
+ +
+ + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + + + +
ProductIdProduct NameCategoryPriceSKUStock LevelReviewsEditDelete
+
+
+ + +
+ + +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + + +
+ +
+ + + + + + + + + + + + + + + + +
ProductIdProduct NameCategoryPriceSKUEditDelete
+
+ +

+
+
+ + +
+
+
+
+ + + + + + + + + + +
+
+
+
+ +
+ +
+
+ + + + + +
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RetailManagementSystem/front-end/reviews.html b/RetailManagementSystem/front-end/reviews.html new file mode 100644 index 0000000..2eff2e8 --- /dev/null +++ b/RetailManagementSystem/front-end/reviews.html @@ -0,0 +1,181 @@ + + + + + + + Reviews + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ + + + + + + + diff --git a/RetailManagementSystem/front-end/script.js b/RetailManagementSystem/front-end/script.js new file mode 100644 index 0000000..6ad5c7c --- /dev/null +++ b/RetailManagementSystem/front-end/script.js @@ -0,0 +1,948 @@ +const apiURL = ''; +let students = []; +let Ordercount = 1; +let deleteRow = []; + +function resetForm() { + const inputs = document.querySelectorAll("#myform input:not([type='submit']), #myform select"); + inputs.forEach(input => { + input.value = ""; + }) +} + +document.addEventListener('DOMContentLoaded', function () { + const navLinks = document.querySelectorAll('.nav-item .nav-link'); + + const activeLink = document.querySelector('.nav-item .nav-link.active'); + + if (activeLink) { + + let html = `

${activeLink.textContent}

` + head.innerHTML = html; + + } + + navLinks.forEach(link => { + link.addEventListener('click', function (event) { + let html = `

${event.target.textContent}

` + head.innerHTML = html; + }); + }); +}); + + +function createMoreOrderField() { + Ordercount++; + OrderList = document.getElementById('OrderListBody'); + + tr = document.createElement('tr'); + tr.setAttribute('id', `${Ordercount}`) + + + + tr.innerHTML = + ` + + + +
+ +
+ + + + + + + + ` + + + OrderList.appendChild(tr); + setSerialNo(); + +} + +function deleteDiv(count) { + + let divToDelete = document.getElementById(`${count}`); + + // Check if the div exists + if (divToDelete && Ordercount != 1) { + divToDelete.remove(); + deleteRow.push(count); + } + else { + alert(`Atleast One row is required`); + } + + + setSerialNo() + calculateTotal() + +} + +function calculateTotal() { + let total = 0; + for (let i = 1; i <= Ordercount; i++) { + totalField = document.getElementById(`orderTotal${i}`); + if (totalField) { + if (totalField.value) + total = total + parseInt(totalField.value) + } + + } + + document.getElementById('totalOrderValue').value = total; +} + + +function setSerialNo() { + const serialNos = document.querySelectorAll('.SerialNo'); + let count = 1; + serialNos.forEach(serialNo => { + serialNo.value = count++; + + }); + +} + + +function fillProductId(count) { + let storeId = document.getElementById('orderStoreId').value; + suggestion = document.getElementById(`OrderSuggestion${count}`); + productId = document.getElementById(`orderProductName${count}`).value + if (productId.trim() !== '') { + let url = `${apiURL}/inventory/search/${productId}/${storeId}`; + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + + showOrderSuggestion(data.product, count); + }) + .catch(error => { + alert(error); + }) + } + else { + suggestion.innerHTML = ""; + } + + +} + + + + + +function showOrderSuggestion(products, count) { + + + suggestion = document.getElementById(`OrderSuggestion${count}`); + productName = document.getElementById(`orderProductName${count}`); + productId = document.getElementById(`orderProductId${count}`); + productPrice = document.getElementById(`orderProductPrice${count}`); + quantity = document.getElementById(`orderProductQuantity${count}`); + suggestion.innerHTML = ""; + for (product of products) { + div = document.createElement('div'); + div.classList.add('suggestionCard'); + h6 = document.createElement('h6'); + h6.textContent = product.name + div.appendChild(h6); + div.addEventListener('click', (function (product) { + return function () { + quantity.value = '1'; + productName.value = product.name; + productId.value = product.id; + productPrice.value = product.price; + suggestion.innerHTML = ""; + calculatePrice(count); + + }; + })(product)); + suggestion.appendChild(div); + } +} + + + +function calculatePrice(count) { + + price = document.getElementById(`orderProductPrice${count}`).value; + quantity = document.getElementById(`orderProductQuantity${count}`).value; + total = document.getElementById(`orderTotal${count}`); + total.value = (price * quantity); + calculateTotal(); +} + +function validateStoreId(event) { + event.preventDefault(); + + let now = new Date(); + let year = now.getFullYear(); + let month = String(now.getMonth() + 1).padStart(2, '0'); + let day = String(now.getDate()).padStart(2, '0'); + let hours = String(now.getHours()).padStart(2, '0'); + let minutes = String(now.getMinutes()).padStart(2, '0'); + let formattedDateTime = `${year}-${month}-${day}T${hours}:${minutes}`; + let dateTimeInput = document.getElementById("datetime"); + dateTimeInput.value = formattedDateTime; + + + let submitButton = document.getElementById('submitButton'); + let storeId = document.getElementById('orderStoreId'); + let url = `${apiURL}/store/validate/${storeId.value}` + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + if (data === true) { + storeId.disabled = true; + document.getElementById('displayForm').style = 'display:block'; + submitButton.style = 'display:flex'; + + } + else { + alert("Enter correct Store id") + } + }) +} + + +function addStore(event) { + event.preventDefault(); + let storeName = document.getElementById('storeName').value; + let storeAddress1 = document.getElementById('storeAddress1').value; + let storeAddress2 = document.getElementById('storeAddress2').value; + let storeAddress3 = document.getElementById('storeAddress3').value; + let storeAddress = storeAddress1 + " " + storeAddress2 + " " + storeAddress3; + + let data = { name: storeName, address: storeAddress }; + + let url = `${apiURL}/store` + fetch(url, { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify(data) + }) + .then(response => { + return response.json(); + }) + .then(data => { + alert(data.message); + resetForm(); + }) +} + + +function viewProduct(event) { + if (event) { + event.preventDefault(); + } + + let inputstoreId = document.getElementById('vstoreId'); + document.getElementById('searchBar').disabled = false + document.getElementById('SearchButton').disabled = false; + document.getElementById('vstoreId').disabled = false + document.getElementById('category').disabled = false; + storeId = inputstoreId.value; + inputstoreId.disabled = true; + + let url = `${apiURL}/inventory/${storeId}`; + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + createData(data.products, storeId); + }) +} + + + +function filter() { + + productName = document.getElementById('searchBar').value + + category = document.getElementById('category').value; + + + if (category.trim() == 'Allcategory' && productName.trim().length == 0) { + viewProduct(event); + return; + } + + else if (productName.trim().length == 0) { + productName = null; + } + else if (category.trim() == 'Allcategory') { + category = null; + } + + let storeId = document.getElementById('vstoreId').value; + + + let url = `${apiURL}/inventory/filter/${category}/${productName}/${storeId}`; + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + createData(data.product, storeId); + }) + .catch(error => { + alert(error); + }) +} + + + + + +async function createData(products, storeId) { + const tableBody = document.getElementById('tableBody'); + tableBody.innerHTML = ''; + products.forEach(product => { + + const row = document.createElement('tr'); + + const prodId = document.createElement('td'); + prodId.classList.add('expandable'); + prodId.textContent = product.id; + + const name = document.createElement('td'); + name.classList.add('expandable'); + name.textContent = product.name; + + const category = document.createElement('td'); + category.classList.add('expandable'); + category.textContent = product.category; + + const price = document.createElement('td'); + price.classList.add('expandable'); + price.textContent = product.price; + + const sku = document.createElement('td'); + sku.classList.add('expandable'); + sku.textContent = product.sku; + + const stockLevel = document.createElement('td'); + stockLevel.classList.add('expandable'); + stockLevel.textContent = product.inventory[0].stockLevel; + + const reviewCol = document.createElement('td'); + const reviewBtn = document.createElement('button'); + reviewBtn.classList.add('btn', 'btn-info'); + reviewBtn.textContent = 'Reviews'; + reviewBtn.addEventListener('click', () => { + window.location = `reviews.html?productId=${product.id}&storeId=${storeId}&productName=${product.name}`; + }) + reviewCol.appendChild(reviewBtn); + + + + const buttoncolumn = document.createElement('td'); + const button = document.createElement('button') + button.classList.add('btn', 'btn-warning'); + button.textContent = 'Edit'; + button.addEventListener('click', () => { + window.location = `edit-product.html?productId=${product.id}&storeId=${storeId}&stockLevel=${product.inventory[0].stockLevel}`; + + }); + buttoncolumn.appendChild(button); + + + const buttonTable2 = document.createElement('td'); + const delbutton = document.createElement('button') + delbutton.classList.add('btn', 'btn-danger'); + delbutton.textContent = 'Delete'; + delbutton.value = product.id; + delbutton.addEventListener('click', function () { + showModal(this.value, product.name, 2); + }); + buttonTable2.appendChild(delbutton); + + + row.appendChild(prodId); + row.appendChild(name); + row.appendChild(category); + row.appendChild(price); + row.appendChild(sku); + row.appendChild(stockLevel); + row.appendChild(reviewCol); + row.appendChild(buttoncolumn); + row.appendChild(buttonTable2); + + tableBody.appendChild(row); + }); +} + + + + + +function viewProductByid(productId) { + + let url = `${apiURL}/product/product/${productId}`; + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + console.log(data); + if (data.products) { + fillDetails(data.products, productId); + } + else { + alert("No data with product id: " + productId); + resetForm(); + return; + } + }) + .catch(error => { + alert(error); + }) +} + + +function fillDetails(products, productId) { + let productIdDiv = document.getElementById('uproductId'); + let productName = document.getElementById('uproductName'); + let category = document.getElementById('ucategory'); + let productPrice = document.getElementById('uproductPrice'); + let SKU = document.getElementById('uSKU'); + + productIdDiv.value = productId; + productName.value = products.name; + category.value = products.category; + productPrice.value = products.price; + SKU.value = products.sku; + +} + + + +function updateProduct(event) { + event.preventDefault(); + let productId = document.getElementById('uproductId').value; + let productName = document.getElementById('uproductName').value; + let category = document.getElementById('ucategory').value; + let productPrice = document.getElementById('uproductPrice').value; + let SKU = document.getElementById('uSKU').value; + let stockLevel = document.getElementById('ustockLevel').value; + let storeId = document.getElementById('ustoreId').value; + + let ProductModel = { id: productId, name: productName, category: category, price: productPrice, sku: SKU }; + let InventoryModel = { product: { id: productId }, store: { id: storeId }, stockLevel: stockLevel }; + let data = { product: ProductModel, inventory: InventoryModel }; + + console.log(data); + let url = `${apiURL}/inventory`; + fetch(url, { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify(data) + }) + .then(response => { + return response.json(); + }) + .then(data => { + alert(data.message); + location.href = `index.html?id=navBar3&storeid=${storeId}`; + }) +} + + + +function fillProductName() { + let productName = document.getElementById('productName').value; + if (productName.trim() != "") { + let url = `${apiURL}/product/searchProduct/${productName}`; + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + showproductSuggestion(data.products); + }) + .catch(error => { + alert(error); + }) + } + else { + suggestion = document.getElementById('aStoreSuggestion'); + suggestion.innerHTML = ""; + + } +} + + +function showproductSuggestion(products) { + + suggestion = document.getElementById('aStoreSuggestion'); + productName = document.getElementById('productName') + productId = document.getElementById('productId') + category = document.getElementById('category'); + productPrice = document.getElementById('productPrice'); + SKU = document.getElementById('SKU'); + + suggestion.innerHTML = ""; + for (product of products) { + button = document.createElement('button'); + button.type = 'button' + button.value = product.id; + button.innerHTML = product.name; + button.addEventListener('click', (function (product) { + return function () { + productName.value = product.name; + suggestion.innerHTML = ""; + productId.value = product.id; + category.value = product.category; + productPrice.value = product.price; + SKU.value = product.sku; + }; + })(product)); + + + + suggestion.appendChild(button); + } +} + + + +function addProductToInventory(event) { + event.preventDefault(); + + productId = document.getElementById('productId').value; + storeId = document.getElementById('astoreId').value; + stockLevel = document.getElementById('astockLevel').value; + + let data = { product: { id: productId }, store: { id: storeId }, stockLevel: stockLevel }; + let url = `${apiURL}/inventory` + fetch(url, { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify(data) + }) + .then(response => { + return response.json(); + }) + .then(data => { + alert(data.message); + location.href = `index.html?id=navBar3&storeid=${storeId}`; + }) +} + + + +function viewProductList() { + let url = `${apiURL}/product`; + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + if (data.products) { + showProductsInTable(data.products); + } + else { + alert("No data with product id: " + productId); + resetForm(); + return; + } + }) + .catch(error => { + alert(error); + }) +} + +function showProductsInTable(products) { + allProducts = document.getElementById('allProducts') + allProducts.innerHTML = ""; + products.forEach(product => { + + const row = document.createElement('tr'); + + const prodId = document.createElement('td'); + prodId.classList.add('expandable'); + prodId.textContent = product.id; + + const name = document.createElement('td'); + name.classList.add('expandable'); + name.textContent = product.name; + + const category = document.createElement('td'); + category.classList.add('expandable'); + category.textContent = product.category; + + const price = document.createElement('td'); + price.classList.add('expandable'); + price.textContent = product.price; + + const sku = document.createElement('td'); + sku.classList.add('expandable'); + sku.textContent = product.sku; + + + const buttonTable = document.createElement('td'); + const button = document.createElement('button') + button.classList.add('btn', 'btn-warning'); + button.value = product.id; + button.textContent = 'Edit'; + button.addEventListener('click', function () { + window.location = `edit-parent-product.html?productId=${this.value}` + + }); + buttonTable.appendChild(button); + + const buttonTable2 = document.createElement('td'); + const delbutton = document.createElement('button') + delbutton.classList.add('btn', 'btn-danger'); + delbutton.textContent = 'Delete'; + delbutton.value = product.id; + delbutton.addEventListener('click', function () { + showModal(this.value, product.name, 1); + }); + buttonTable2.appendChild(delbutton); + + row.appendChild(prodId); + row.appendChild(name); + row.appendChild(category); + row.appendChild(price); + row.appendChild(sku); + row.appendChild(buttonTable); + row.appendChild(buttonTable2); + + allProducts.appendChild(row); + }); +} + + + +function showModal(id, name, action) { + console.log(action); + const myModal = new bootstrap.Modal(document.getElementById('myModal')); + const modalFooter = document.getElementById('modal-footer'); + text = document.getElementById('deleteProuctName'); + text.innerHTML = name; + modalFooter.innerHTML = ""; + button = document.createElement('button'); + button.classList.add('btn', 'btn-danger') + button.textContent = 'Yes'; + if (action == 1) { + button.addEventListener('click', function () { + deleteItembyId(id); + myModal.hide(); + }) + } + else { + button.addEventListener('click', function () { + removeFromInventory(id) + myModal.hide(); + }) + } + modalFooter.appendChild(button); + myModal.show(); +} + + +function deleteItembyId(id) { + + + + let url = `${apiURL}/product/${id}`; + fetch(url, { + method: "DELETE", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + alert(data.message); + location.href = "index.html?id=navBar2"; + }) + .catch(error => { + alert(error); + }) + + +} + +function removeFromInventory(id) { + let url = `${apiURL}/inventory/${id}` + fetch(url, { + method: "DELETE", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + alert(data.message); + viewProduct(event); + location.href = `index.html?id=navBar3&storeid=${storeId}`; + + }) + .catch(error => { + alert(error); + }) +} + + + +async function filterParentProduct() { + category = document.getElementById('pcategory').value; + productName = document.getElementById('ProductsearchBar').value; + + if (category.trim() == 'Allcategory' && productName.trim().length == 0) { + viewProductList(); + return; + } + else if(category.trim() == 'Allcategory') + { + category=null; + } + else if(productName.trim().length == 0) + { + productName=null; + } + + let url = `${apiURL}/product/category/${productName}/${category}`; + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + + showProductsInTable(data.products); + }) + .catch(error => { + alert(error); + }) +} + + + +function getProductByid(productId) { + + let url = `${apiURL}/product/product/${productId}`; + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" }, + }) + .then(response => { + return response.json(); + }) + .then(data => { + if (data.products) { + setParentProduct(data.products); + } + else { + alert("No data with product id: " + productId); + resetForm(); + return; + } + }) + .catch(error => { + alert(error); + }) +} + +function setParentProduct(product) { + document.getElementById('pproductName').value = product.name; + document.getElementById('pcategory').value = product.category; + document.getElementById('pproductPrice').value = product.price; + document.getElementById('pSKU').value = product.sku; +} + + + +function updateParentProduct(event) { + event.preventDefault(); + + productId = document.getElementById('pproductId').value; + productName = document.getElementById('pproductName').value; + category = document.getElementById('pcategory').value; + price = document.getElementById('pproductPrice').value; + sku = document.getElementById('pSKU').value; + let url = `${apiURL}/product` + data = { id: productId, name: productName, category: category, price: price, sku: sku }; + fetch(url, { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify(data) + }) + .then(response => { + return response.json(); + }) + .then(data => { + alert(data.message); + location.href = "index.html?id=navBar2"; + }) +} + + + +function addParentProduct(event) { + event.preventDefault(); + let productName = document.getElementById('parentproductName').value; + let category = document.getElementById('parentcategory').value; + let productPrice = document.getElementById('parentproductPrice').value; + let SKU = document.getElementById('parentSKU').value; + + let data = { name: productName, category: category, price: productPrice, sku: SKU }; + + let url = `${apiURL}/product` + fetch(url, { + method: "POST", + headers: { "content-type": "application/json" }, + body: JSON.stringify(data) + }) + .then(response => { + return response.json(); + }) + .then(data => { + alert(data.message); + location.href = "index.html?id=navBar2"; + }) +} + + + + +function validateQuantity(OrderNo) { + quantity = document.getElementById(`orderProductQuantity${OrderNo}`).value; + storeId = document.getElementById('orderStoreId').value; + productId = document.getElementById(`orderProductId${OrderNo}`).value; + if (!quantity || !productId || !storeId) { + return; + } + let url = `${apiURL}/inventory/validate/${quantity}/${storeId}/${productId}` + fetch(url, { + method: "GET", + headers: { "content-type": "application/json" } + }) + .then(response => { + return response.json(); + }) + .then(data => { + if (!data) { + alert("Limited Quantity Available, Reduce quantity") + } + }) + .catch(error => { + alert(error); + }) +} + +async function placeOrder(event) { + event.preventDefault(); + + + let storeId = document.getElementById("orderStoreId").value; + let customerName = document.getElementById("customerName").value; + let customerEmail = document.getElementById("customerEmail").value; + let customerPhone = document.getElementById("customerPhone").value; + let datetime = document.getElementById("datetime").value; + let totalOrderValue = document.getElementById('totalOrderValue').value; + if (!totalOrderValue) { + alert("Enter atleast one product"); + return + } + + let purchaseProduct = []; + for (let i = 1; i <= Ordercount; i++) { + + if (deleteRow.includes(i)) { + continue; + } + console.log(`orderProductName${i}`); + + let orderProductName = document.getElementById(`orderProductName${i}`).value; + let orderProductId = document.getElementById(`orderProductId${i}`).value; + let orderProductPrice = document.getElementById(`orderProductPrice${i}`).value; + let orderProductQuantity = document.getElementById(`orderProductQuantity${i}`).value; + let orderProductTotal = document.getElementById(`orderTotal${i}`).value; + + let data = { + name: orderProductName, + id: orderProductId, + price: orderProductPrice, + quantity: orderProductQuantity, + total: orderProductTotal + }; + purchaseProduct.push(data); + } + + + let orderData = { + storeId: storeId, + customerName: customerName, + customerEmail: customerEmail, + customerPhone: customerPhone, + datetime: datetime, + purchaseProduct: purchaseProduct, + totalPrice: totalOrderValue + }; + + + try { + const response = await fetch(`${apiURL}/store/placeOrder`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(orderData) + }).then(response => { + return response.json(); + }).then(data => { + if (data.message) { + alert(data.message); + location.href = "index.html?id=navBar4"; + } + else { + alert(data.error); + } + }) + + } catch (error) { + alert('Error placing order:', error); + } +} diff --git a/RetailManagementSystem/insert_data.sql b/RetailManagementSystem/insert_data.sql new file mode 100644 index 0000000..09dbd4d --- /dev/null +++ b/RetailManagementSystem/insert_data.sql @@ -0,0 +1,989 @@ +use inventory; + +INSERT INTO product (name, category, price, sku) +VALUES +('Galaxy S21', 'Mobile', 799.99, 'SKU001'), +('iPhone 13', 'Mobile', 999.99, 'SKU002'), +('Samsung QLED TV', 'TV and AV', 1499.99, 'SKU003'), +('LG OLED TV', 'TV and AV', 1999.99, 'SKU004'), +('Dyson Vacuum Cleaner', 'Home Appliances', 499.99, 'SKU005'), +('Philips Air Purifier', 'Home Appliances', 199.99, 'SKU006'), +('Dell XPS 13', 'Laptops and Monitors', 1299.99, 'SKU007'), +('MacBook Pro 16"', 'Laptops and Monitors', 2399.99, 'SKU008'), +('Apple Watch Series 7', 'Accessories', 399.99, 'SKU009'), +('Sony WH-1000XM4', 'Accessories', 349.99, 'SKU010'), +('OnePlus 9 Pro', 'Mobile', 1069.99, 'SKU011'), +('Google Pixel 6', 'Mobile', 699.99, 'SKU012'), +('Sony Bravia 4K TV', 'TV and AV', 1200.00, 'SKU013'), +('Bose SoundLink Revolve', 'TV and AV', 229.99, 'SKU014'), +('Samsung Washing Machine', 'Home Appliances', 799.99, 'SKU015'), +('Nespresso Coffee Maker', 'Home Appliances', 149.99, 'SKU016'), +('HP Envy Laptop', 'Laptops and Monitors', 999.99, 'SKU017'), +('Acer Predator Helios 300', 'Laptops and Monitors', 1499.99, 'SKU018'), +('Logitech MX Master 3', 'Accessories', 99.99, 'SKU019'), +('Bose QuietComfort 35 II', 'Accessories', 299.99, 'SKU020'), +('Samsung Galaxy Note 20', 'Mobile', 949.99, 'SKU021'), +('iPad Air', 'Mobile', 599.99, 'SKU022'), +('Sharp 8K TV', 'TV and AV', 3999.99, 'SKU023'), +('Sony 65" 4K TV', 'TV and AV', 1799.99, 'SKU024'), +('iRobot Roomba i7', 'Home Appliances', 649.99, 'SKU025'), +('Breville Espresso Machine', 'Home Appliances', 599.99, 'SKU026'), +('Razer Blade 15', 'Laptops and Monitors', 1999.99, 'SKU027'), +('MSI GE66 Raider', 'Laptops and Monitors', 2299.99, 'SKU028'), +('Beats Studio3 Wireless', 'Accessories', 349.99, 'SKU029'), +('Samsung Galaxy Buds Pro', 'Accessories', 199.99, 'SKU030'), +('Google Pixel 5', 'Mobile', 699.99, 'SKU031'), +('Huawei P40 Pro', 'Mobile', 899.99, 'SKU032'), +('LG NanoCell TV', 'TV and AV', 1299.99, 'SKU033'), +('Vizio 4K Smart TV', 'TV and AV', 899.99, 'SKU034'), +('Whirlpool Refrigerator', 'Home Appliances', 1199.99, 'SKU035'), +('Instant Pot Pressure Cooker', 'Home Appliances', 89.99, 'SKU036'), +('Microsoft Surface Laptop 4', 'Laptops and Monitors', 1399.99, 'SKU037'), +('Lenovo ThinkPad X1 Carbon', 'Laptops and Monitors', 1799.99, 'SKU038'), +('JBL Flip 5', 'Accessories', 119.99, 'SKU039'), +('Sony Xperia 1 II', 'Mobile', 1199.99, 'SKU040'), +('Apple AirPods Pro', 'Accessories', 249.99, 'SKU041'), +('Samsung Galaxy Z Fold 3', 'Mobile', 1799.99, 'SKU042'), +('LG UltraWide Monitor', 'Laptops and Monitors', 399.99, 'SKU043'), +('Dell UltraSharp U2720Q', 'Laptops and Monitors', 599.99, 'SKU044'), +('Anker PowerCore 20000', 'Accessories', 49.99, 'SKU045'), +('Canon EOS R5 Camera', 'Accessories', 3899.99, 'SKU046'), +('Apple MacBook Air', 'Laptops and Monitors', 999.99, 'SKU047'), +('HP Spectre x360', 'Laptops and Monitors', 1399.99, 'SKU048'), +('Samsung T7 Portable SSD', 'Accessories', 129.99, 'SKU049'), +('Sony A7 III Camera', 'Accessories', 1999.99, 'SKU050'); + + +INSERT INTO store (name, address) +VALUES +('Tech Store A', '123 Tech Street, Silicon Valley, CA'), +('Gadget Hub', '456 Gadget Road, San Francisco, CA'), +('ElectroMart', '789 Electro Avenue, Los Angeles, CA'), +('Mobile World', '101 Mobile Blvd, New York, NY'), +('Home Appliances HQ', '202 Appliance Parkway, Chicago, IL'), +('Laptop Zone', '303 Laptop Lane, Austin, TX'), +('The Accessory Spot', '404 Accessory Street, Seattle, WA'), +('TV & AV Store', '505 AV Drive, Miami, FL'), +('Smart Store', '606 Smart Road, Boston, MA'), +('Gadget Central', '707 Gadget Street, Dallas, TX'); + + +INSERT INTO inventory (product_id, store_id, stock_Level) +VALUES +(1, 1, 50), (2, 2, 30), (3, 3, 40), (4, 4, 20), (5, 5, 70), +(6, 6, 60), (7, 7, 50), (8, 8, 40), (9, 9, 80), (10, 10, 90), +(11, 1, 60), (12, 2, 50), (13, 3, 30), (14, 4, 40), (15, 5, 20), +(16, 6, 70), (17, 7, 80), (18, 8, 60), (19, 9, 50), (20, 10, 30), +(21, 1, 40), (22, 2, 60), (23, 3, 50), (24, 4, 30), (25, 5, 80), +(26, 6, 90), (27, 7, 40), (28, 8, 50), (29, 9, 30), (30, 10, 70), +(31, 1, 50), (32, 2, 80), (33, 3, 60), (34, 4, 90), (35, 5, 20), +(36, 6, 30), (37, 7, 40), (38, 8, 60), (39, 9, 80), (40, 10, 90), +(41, 1, 70), (42, 2, 50), (43, 3, 40), (44, 4, 80), (45, 5, 60), +(46, 6, 90), (47, 7, 30), (48, 8, 70), (49, 9, 50), (50, 10, 60); + +INSERT INTO customer (name, email, phone) VALUES +('John Doe', 'john.doe@example.com', '1234567890'), +('Jane Smith', 'jane.smith@example.com', '0987654321'), +('Tom Hanks', 'tom.hanks@example.com', '1122334455'), +('Alice Johnson', 'alice.johnson@example.com', '2233445566'), +('Bob Brown', 'bob.brown@example.com', '3344556677'), +('Mary Davis', 'mary.davis@example.com', '4455667788'), +('James Wilson', 'james.wilson@example.com', '5566778899'), +('Emily Clark', 'emily.clark@example.com', '6677889900'), +('David Lewis', 'david.lewis@example.com', '7788990011'), +('Sarah Walker', 'sarah.walker@example.com', '8899001122'), +('Daniel Young', 'daniel.young@example.com', '9900112233'), +('Jessica Hall', 'jessica.hall@example.com', '1011122334'), +('Matthew Allen', 'matthew.allen@example.com', '1122334455'), +('Olivia Scott', 'olivia.scott@example.com', '2233445566'), +('William Harris', 'william.harris@example.com', '3344556677'), +('Sophia King', 'sophia.king@example.com', '4455667788'), +('Jackson Wright', 'jackson.wright@example.com', '5566778899'), +('Lily Lopez', 'lily.lopez@example.com', '6677889900'), +('Ethan Perez', 'ethan.perez@example.com', '7788990011'), +('Mia Turner', 'mia.turner@example.com', '8899001122'), +('Aiden Nelson', 'aiden.nelson@example.com', '9900112233'), +('Charlotte Carter', 'charlotte.carter@example.com', '1011122334'), +('Liam Mitchell', 'liam.mitchell@example.com', '1122334455'), +('Amelia Roberts', 'amelia.roberts@example.com', '2233445566'), +('Harper Evans', 'harper.evans@example.com', '3344556677'), +('Jacob Morgan', 'jacob.morgan@example.com', '4455667788'), +('Ella Garcia', 'ella.garcia@example.com', '5566778899'), +('Michael Rodriguez', 'michael.rodriguez@example.com', '6677889900'), +('Madison Perez', 'madison.perez@example.com', '7788990011'), +('Benjamin Thompson', 'benjamin.thompson@example.com', '8899001122'), +('Evelyn King', 'evelyn.king@example.com', '9900112233'), +('Alexander Lee', 'alexander.lee@example.com', '1011122334'), +('Isabella Harris', 'isabella.harris@example.com', '1122334455'), +('Sebastian Walker', 'sebastian.walker@example.com', '2233445566'), +('Chloe Adams', 'chloe.adams@example.com', '3344556677'), +('Mason Baker', 'mason.baker@example.com', '4455667788'), +('Grace Gonzalez', 'grace.gonzalez@example.com', '5566778899'), +('Lucas Carter', 'lucas.carter@example.com', '6677889900'), +('Zoe Cooper', 'zoe.cooper@example.com', '7788990011'), +('Owen Mitchell', 'owen.mitchell@example.com', '8899001122'), +('Nora Jenkins', 'nora.jenkins@example.com', '9900112233'), +('Henry Price', 'henry.price@example.com', '1011122334'), +('Luna Long', 'luna.long@example.com', '1122334455'), +('Samuel Torres', 'samuel.torres@example.com', '2233445566'), +('Leo Clark', 'leo.clark@example.com', '3344556677'), +('Violet Green', 'violet.green@example.com', '4455667788'), +('Matthew Ramirez', 'matthew.ramirez@example.com', '5566778899'), +('Scarlett Evans', 'scarlett.evans@example.com', '6677889900'), +('Jack Wright', 'jack.wright@example.com', '7788990011'), +('Chloe Harris', 'chloe.harris@example.com', '8899001122'), +('Sophie Mitchell', 'sophie.mitchell@example.com', '9900112233'), +('Daniel Lopez', 'daniel.lopez@example.com', '1011122334'), +('Luke Walker', 'luke.walker@example.com', '1122334455'), +('Zara Foster', 'zara.foster@example.com', '2233445566'), +('Gabriel Edwards', 'gabriel.edwards@example.com', '3344556677'), +('Ella Parker', 'ella.parker@example.com', '4455667788'), +('Ryan King', 'ryan.king@example.com', '5566778899'), +('Caroline Miller', 'caroline.miller@example.com', '6677889900'), +('Oscar Murphy', 'oscar.murphy@example.com', '7788990011'), +('Harper Evans', 'harper.evans@example.com', '8899001122'), +('Elliot Simmons', 'elliot.simmons@example.com', '9900112233'), +('Amelia Campbell', 'amelia.campbell@example.com', '1011122334'), +('Isaac Ramirez', 'isaac.ramirez@example.com', '1122334455'), +('Ruby Lee', 'ruby.lee@example.com', '2233445566'), +('Sebastian Nelson', 'sebastian.nelson@example.com', '3344556677'), +('Hannah Peterson', 'hannah.peterson@example.com', '4455667788'), +('Jackie Adams', 'jackie.adams@example.com', '5566778899'), +('Nina Foster', 'nina.foster@example.com', '6677889900'), +('Landon Brooks', 'landon.brooks@example.com', '7788990011'), +('Ethan Scott', 'ethan.scott@example.com', '8899001122'), +('Autumn Hill', 'autumn.hill@example.com', '9900112233'), +('Caleb Collins', 'caleb.collins@example.com', '1011122334'), +('Victoria Morris', 'victoria.morris@example.com', '1122334455'), +('Grace Lopez', 'grace.lopez@example.com', '2233445566'), +('Jaden Turner', 'jaden.turner@example.com', '3344556677'), +('Addison Brooks', 'addison.brooks@example.com', '4455667788'), +('Sophia Lee', 'sophia.lee@example.com', '5566778899'), +('Samuel Thompson', 'samuel.thompson@example.com', '6677889900'), +('Ivy Bailey', 'ivy.bailey@example.com', '7788990011'), +('Owen Scott', 'owen.scott@example.com', '8899001122'), +('David Wright', 'david.wright@example.com', '9900112233'), +('Maya White', 'maya.white@example.com', '1011122334'), +('Maddox Price', 'maddox.price@example.com', '1122334455'), +('Madison James', 'madison.james@example.com', '2233445566'), +('Benjamin Lee', 'benjamin.lee@example.com', '3344556677'), +('Mila Green', 'mila.green@example.com', '4455667788'), +('Connor Gonzalez', 'connor.gonzalez@example.com', '5566778899'), +('Jaxon Mitchell', 'jaxon.mitchell@example.com', '6677889900'), +('Chloe Harris', 'chloe.harris@example.com', '7788990011'), +('Elijah Murphy', 'elijah.murphy@example.com', '8899001122'), +('Hazel Simmons', 'hazel.simmons@example.com', '9900112233'), +('Matthew Cooper', 'matthew.cooper@example.com', '1011122334'), +('Nina Torres', 'nina.torres@example.com', '1122334455'), +('Jacob Lopez', 'jacob.lopez@example.com', '2233445566'), +('Willow Wright', 'willow.wright@example.com', '3344556677'), +('Evan Green', 'evan.green@example.com', '4455667788'), +('Chase Morgan', 'chase.morgan@example.com', '5566778899'), +('Zoe Davis', 'zoe.davis@example.com', '6677889900'), +('Joshua Young', 'joshua.young@example.com', '7788990011'), +('Luke Davis', 'luke.davis@example.com', '8899001122'); + +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (1, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 2 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (2, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 3 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (3, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 4 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (4, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 5 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (5, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 6 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (6, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 7 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (7, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 8 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (8, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 9 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (9, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 10 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (10, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 11 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (11, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 12 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (12, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 13 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (13, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 14 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (14, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 15 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (15, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 16 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (16, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 17 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (17, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 18 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (18, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 19 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (19, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 20 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (20, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 21 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (21, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 22 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (22, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 23 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (23, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 24 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (24, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 25 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (25, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 26 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (26, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 27 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (27, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 28 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (28, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 29 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (29, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 30 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (30, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 31 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (31, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 32 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (32, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 33 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (33, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 34 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (34, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 35 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (35, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 36 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (36, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 37 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (37, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 38 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (38, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 39 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (39, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 40 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (40, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 41 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (41, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 42 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (42, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 43 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (43, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 44 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (44, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 45 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (45, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 46 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (46, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 47 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (47, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 48 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (48, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 49 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (49, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 50 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (50, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + + +-- Order 51 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (51, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 52 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (52, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 53 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (53, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 54 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (54, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 55 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (55, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 56 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (56, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 57 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (57, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 58 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (58, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 59 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (59, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 60 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (60, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 61 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (61, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 62 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (62, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 63 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (63, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 64 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (64, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 65 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (65, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 66 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (66, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 67 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (67, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 68 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (68, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 69 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (69, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 70 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (70, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 71 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (71, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 72 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (72, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 73 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (73, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 74 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (74, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 75 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (75, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 76 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (76, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 77 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (77, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 78 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (78, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 79 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (79, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 80 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (80, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 81 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (81, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 82 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (82, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 83 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (83, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 84 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (84, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 85 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (85, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 86 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (86, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 87 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (87, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 88 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (88, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 89 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (89, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 90 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (90, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 91 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (91, 1, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 92 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (92, 2, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 93 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (93, 3, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 94 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (94, 4, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 95 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (95, 5, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 96 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (96, 6, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 97 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (97, 7, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 98 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (98, 8, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 99 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (99, 9, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order 100 +INSERT INTO order_details (customer_id, store_id, total_price, date) +VALUES (100, 10, ROUND(RAND() * 300 + 100, 2), DATE_ADD('2024-03-31', INTERVAL FLOOR(RAND() * 365) DAY)); + +-- Order Item for Order 1 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (1, 1, 2, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (1, 11, 1, 59.99); + +-- Order Item for Order 2 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (2, 2, 3, 19.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (2, 12, 1, 79.99); + +-- Order Item for Order 3 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (3, 3, 1, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (3, 13, 2, 39.99); + +-- Order Item for Order 4 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (4, 4, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (4, 14, 3, 79.99); + +-- Order Item for Order 5 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (5, 5, 2, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (5, 15, 1, 99.99); + +-- Order Item for Order 6 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (6, 6, 3, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (6, 16, 2, 49.99); + +-- Order Item for Order 7 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (7, 7, 1, 19.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (7, 17, 2, 39.99); + +-- Order Item for Order 8 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (8, 8, 2, 99.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (8, 18, 1, 79.99); + +-- Order Item for Order 9 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (9, 9, 1, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (9, 19, 3, 49.99); + +-- Order Item for Order 10 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (10, 10, 2, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (10, 20, 1, 59.99); + +-- Order Item for Order 11 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (11, 1, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (11, 11, 2, 79.99); + +-- Order Item for Order 12 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (12, 2, 3, 19.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (12, 12, 1, 89.99); + +-- Order Item for Order 13 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (13, 3, 2, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (13, 13, 1, 59.99); + +-- Order Item for Order 14 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (14, 4, 1, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (14, 14, 2, 99.99); + +-- Order Item for Order 15 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (15, 5, 1, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (15, 15, 3, 79.99); + +-- Order Item for Order 16 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (16, 6, 2, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (16, 16, 1, 69.99); + +-- Order Item for Order 17 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (17, 7, 1, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (17, 17, 3, 79.99); + +-- Order Item for Order 18 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (18, 8, 2, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (18, 18, 1, 99.99); + +-- Order Item for Order 19 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (19, 9, 3, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (19, 19, 1, 39.99); + +-- Order Item for Order 20 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (20, 10, 2, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (20, 20, 1, 49.99); + +-- Order Item for Order 21 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (21, 1, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (21, 11, 2, 89.99); + +-- Order Item for Order 22 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (22, 2, 3, 19.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (22, 12, 1, 79.99); + +-- Order Item for Order 23 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (23, 3, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (23, 13, 2, 49.99); + +-- Order Item for Order 24 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (24, 4, 1, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (24, 14, 2, 79.99); + +-- Order Item for Order 25 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (25, 5, 2, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (25, 15, 1, 99.99); + +-- Order Item for Order 26 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (26, 6, 3, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (26, 16, 2, 59.99); + +-- Order Item for Order 27 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (27, 7, 1, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (27, 17, 2, 39.99); + +-- Order Item for Order 28 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (28, 8, 2, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (28, 18, 1, 69.99); + +-- Order Item for Order 29 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (29, 9, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (29, 19, 3, 49.99); + +-- Order Item for Order 30 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (30, 10, 2, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (30, 20, 1, 79.99); + +-- Order Item for Order 31 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (31, 1, 3, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (31, 11, 1, 89.99); + +-- Order Item for Order 32 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (32, 2, 2, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (32, 12, 1, 59.99); + +-- Order Item for Order 33 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (33, 3, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (33, 13, 2, 69.99); + +-- Order Item for Order 34 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (34, 4, 1, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (34, 14, 2, 99.99); + +-- Order Item for Order 35 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (35, 5, 2, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (35, 15, 1, 49.99); + +-- Order Item for Order 36 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (36, 6, 2, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (36, 16, 1, 69.99); + +-- Order Item for Order 37 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (37, 7, 1, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (37, 17, 2, 49.99); + +-- Order Item for Order 38 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (38, 8, 3, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (38, 18, 1, 79.99); + +-- Order Item for Order 39 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (39, 9, 1, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (39, 19, 2, 49.99); + +-- Order Item for Order 40 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (40, 10, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (40, 20, 3, 89.99); + +-- Order Item for Order 41 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (41, 1, 2, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (41, 11, 1, 69.99); + +-- Order Item for Order 42 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (42, 2, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (42, 12, 3, 99.99); + +-- Order Item for Order 43 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (43, 3, 2, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (43, 13, 1, 79.99); + +-- Order Item for Order 44 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (44, 4, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (44, 14, 2, 69.99); + +-- Order Item for Order 45 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (45, 5, 3, 29.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (45, 15, 2, 49.99); + +-- Order Item for Order 46 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (46, 6, 1, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (46, 16, 2, 69.99); + +-- Order Item for Order 47 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (47, 7, 3, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (47, 17, 1, 39.99); + +-- Order Item for Order 48 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (48, 8, 1, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (48, 18, 2, 49.99); + +-- Order Item for Order 49 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (49, 9, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (49, 19, 3, 79.99); + +-- Order Item for Order 50 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (50, 10, 2, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (50, 20, 1, 69.99); + + +-- Order Item 51 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (51, 1, 2, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (51, 5, 1, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (51, 13, 3, 29.99); + +-- Order Item 52 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (52, 2, 1, 19.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (52, 6, 2, 79.99); + +-- Order Item 53 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (53, 3, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (53, 12, 2, 89.99); + +-- Order Item 54 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (54, 4, 3, 19.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (54, 14, 1, 59.99); + +-- Order Item 55 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (55, 5, 2, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (55, 11, 1, 99.99); + +-- Order Item 56 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (56, 6, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (56, 8, 3, 69.99); + +-- Order Item 57 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (57, 7, 2, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (57, 9, 1, 89.99); + +-- Order Item 58 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (58, 8, 1, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (58, 10, 3, 39.99); + +-- Order Item 59 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (59, 9, 2, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (59, 11, 1, 79.99); + +-- Order Item 60 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (60, 10, 3, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (60, 12, 2, 89.99); + +-- Order Item 61 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (61, 11, 1, 99.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (61, 13, 2, 29.99); + +-- Order Item 62 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (62, 12, 3, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (62, 14, 1, 39.99); + +-- Order Item 63 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (63, 13, 2, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (63, 15, 1, 59.99); + +-- Order Item 64 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (64, 14, 1, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (64, 16, 2, 89.99); + +-- Order Item 65 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (65, 15, 3, 19.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (65, 17, 2, 69.99); + +-- Order Item 66 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (66, 16, 2, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (66, 18, 1, 79.99); + +-- Order Item 67 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (67, 17, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (67, 19, 3, 59.99); + +-- Order Item 68 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (68, 18, 2, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (68, 20, 1, 99.99); + +-- Order Item 69 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (69, 19, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (69, 21, 3, 39.99); + +-- Order Item 70 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (70, 20, 2, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (70, 22, 1, 79.99); + +-- Order Item 71 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (71, 21, 3, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (71, 23, 1, 59.99); + +-- Order Item 72 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (72, 22, 2, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (72, 24, 1, 89.99); + +-- Order Item 73 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (73, 23, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (73, 25, 2, 49.99); + +-- Order Item 74 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (74, 24, 2, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (74, 26, 1, 69.99); + +-- Order Item 75 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (75, 25, 3, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (75, 27, 1, 79.99); + +-- Order Item 76 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (76, 26, 1, 89.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (76, 28, 2, 39.99); + +-- Order Item 77 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (77, 27, 1, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (77, 29, 3, 59.99); + +-- Order Item 78 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (78, 28, 2, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (78, 30, 1, 99.99); + +-- Order Item 79 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (79, 29, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (79, 31, 2, 49.99); + +-- Order Item 80 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (80, 30, 2, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (80, 32, 1, 69.99); + +-- Order Item 81 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (81, 31, 3, 49.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (81, 33, 2, 59.99); + +-- Order Item 82 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (82, 32, 1, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (82, 34, 3, 79.99); + +-- Order Item 83 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (83, 33, 2, 89.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (83, 35, 1, 99.99); + +-- Order Item 84 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (84, 34, 2, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (84, 36, 1, 49.99); + +-- Order Item 85 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (85, 35, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (85, 37, 2, 69.99); + +-- Order Item 86 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (86, 36, 3, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (86, 38, 2, 89.99); + +-- Order Item 87 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (87, 37, 1, 99.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (87, 39, 3, 49.99); + +-- Order Item 88 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (88, 38, 1, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (88, 40, 2, 69.99); + +-- Order Item 89 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (89, 39, 2, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (89, 41, 1, 89.99); + +-- Order Item 90 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (90, 40, 3, 99.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (90, 42, 2, 59.99); + +-- Order Item 91 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (91, 41, 1, 69.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (91, 43, 3, 49.99); + +-- Order Item 92 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (92, 42, 2, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (92, 44, 1, 79.99); + +-- Order Item 93 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (93, 43, 3, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (93, 45, 2, 69.99); + +-- Order Item 94 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (94, 44, 1, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (94, 46, 3, 49.99); + +-- Order Item 95 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (95, 45, 2, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (95, 47, 1, 99.99); + +-- Order Item 96 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (96, 46, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (96, 48, 2, 69.99); + +-- Order Item 97 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (97, 47, 3, 79.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (97, 49, 2, 89.99); + +-- Order Item 98 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (98, 48, 2, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (98, 50, 1, 69.99); + +-- Order Item 99 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (99, 49, 1, 39.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (99, 50, 3, 49.99); + +-- Order Item 100 +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (100, 50, 2, 59.99); +INSERT INTO order_item (order_id, product_id, quantity, price) VALUES (100, 1, 1, 79.99); + + + diff --git a/RetailManagementSystem/reviews.json b/RetailManagementSystem/reviews.json new file mode 100644 index 0000000..4709990 --- /dev/null +++ b/RetailManagementSystem/reviews.json @@ -0,0 +1,1752 @@ +[ + { + "productId": 1, + "customerId": 45, + "storeId": 1, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 1, + "customerId": 15, + "storeId": 1, + "rating": 4, + "comment": "Great product! Worth every penny." + }, + { + "productId": 1, + "customerId": 78, + "storeId": 1, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 1, + "customerId": 25, + "storeId": 1, + "rating": 2, + "comment": "Would definitely recommend to others." + }, + { + "productId": 1, + "customerId": 12, + "storeId": 1, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 11, + "customerId": 38, + "storeId": 1, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 11, + "customerId": 99, + "storeId": 1, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 11, + "customerId": 10, + "storeId": 1, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 11, + "customerId": 66, + "storeId": 1, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 11, + "customerId": 53, + "storeId": 1, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 21, + "customerId": 7, + "storeId": 1, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 21, + "customerId": 88, + "storeId": 1, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 21, + "customerId": 54, + "storeId": 1, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 21, + "customerId": 13, + "storeId": 1, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 21, + "customerId": 60, + "storeId": 1, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 31, + "customerId": 9, + "storeId": 1, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 31, + "customerId": 85, + "storeId": 1, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 31, + "customerId": 35, + "storeId": 1, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 31, + "customerId": 72, + "storeId": 1, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 31, + "customerId": 22, + "storeId": 1, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 41, + "customerId": 16, + "storeId": 1, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 41, + "customerId": 34, + "storeId": 1, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 41, + "customerId": 49, + "storeId": 1, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 41, + "customerId": 28, + "storeId": 1, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 41, + "customerId": 42, + "storeId": 1, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 2, + "customerId": 38, + "storeId": 2, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 2, + "customerId": 99, + "storeId": 2, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 2, + "customerId": 10, + "storeId": 2, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 2, + "customerId": 66, + "storeId": 2, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 2, + "customerId": 53, + "storeId": 2, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 12, + "customerId": 7, + "storeId": 2, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 12, + "customerId": 88, + "storeId": 2, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 12, + "customerId": 54, + "storeId": 2, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 12, + "customerId": 13, + "storeId": 2, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 12, + "customerId": 60, + "storeId": 2, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 22, + "customerId": 9, + "storeId": 2, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 22, + "customerId": 85, + "storeId": 2, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 22, + "customerId": 35, + "storeId": 2, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 22, + "customerId": 72, + "storeId": 2, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 22, + "customerId": 22, + "storeId": 2, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 32, + "customerId": 16, + "storeId": 2, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 32, + "customerId": 34, + "storeId": 2, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 32, + "customerId": 49, + "storeId": 2, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 32, + "customerId": 28, + "storeId": 2, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 32, + "customerId": 42, + "storeId": 2, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 42, + "customerId": 63, + "storeId": 2, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 42, + "customerId": 39, + "storeId": 2, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 42, + "customerId": 51, + "storeId": 2, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 42, + "customerId": 8, + "storeId": 2, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 42, + "customerId": 21, + "storeId": 2, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 3, + "customerId": 7, + "storeId": 3, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 3, + "customerId": 88, + "storeId": 3, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 3, + "customerId": 54, + "storeId": 3, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 3, + "customerId": 13, + "storeId": 3, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 3, + "customerId": 60, + "storeId": 3, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 13, + "customerId": 38, + "storeId": 3, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 13, + "customerId": 99, + "storeId": 3, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 13, + "customerId": 10, + "storeId": 3, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 13, + "customerId": 66, + "storeId": 3, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 13, + "customerId": 53, + "storeId": 3, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 23, + "customerId": 7, + "storeId": 3, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 23, + "customerId": 88, + "storeId": 3, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 23, + "customerId": 54, + "storeId": 3, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 23, + "customerId": 13, + "storeId": 3, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 23, + "customerId": 60, + "storeId": 3, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 33, + "customerId": 9, + "storeId": 3, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 33, + "customerId": 85, + "storeId": 3, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 33, + "customerId": 35, + "storeId": 3, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 33, + "customerId": 72, + "storeId": 3, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 33, + "customerId": 22, + "storeId": 3, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 43, + "customerId": 16, + "storeId": 3, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 43, + "customerId": 34, + "storeId": 3, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 43, + "customerId": 49, + "storeId": 3, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 43, + "customerId": 28, + "storeId": 3, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 43, + "customerId": 42, + "storeId": 3, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 4, + "customerId": 7, + "storeId": 4, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 4, + "customerId": 88, + "storeId": 4, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 4, + "customerId": 54, + "storeId": 4, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 4, + "customerId": 13, + "storeId": 4, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 4, + "customerId": 60, + "storeId": 4, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 14, + "customerId": 38, + "storeId": 4, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 14, + "customerId": 99, + "storeId": 4, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 14, + "customerId": 10, + "storeId": 4, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 14, + "customerId": 66, + "storeId": 4, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 14, + "customerId": 53, + "storeId": 4, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 24, + "customerId": 7, + "storeId": 4, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 24, + "customerId": 88, + "storeId": 4, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 24, + "customerId": 54, + "storeId": 4, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 24, + "customerId": 13, + "storeId": 4, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 24, + "customerId": 60, + "storeId": 4, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 34, + "customerId": 9, + "storeId": 4, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 34, + "customerId": 85, + "storeId": 4, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 34, + "customerId": 35, + "storeId": 4, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 34, + "customerId": 72, + "storeId": 4, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 34, + "customerId": 22, + "storeId": 4, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 44, + "customerId": 16, + "storeId": 4, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 44, + "customerId": 34, + "storeId": 4, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 44, + "customerId": 49, + "storeId": 4, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 44, + "customerId": 28, + "storeId": 4, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 44, + "customerId": 42, + "storeId": 4, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 5, + "customerId": 7, + "storeId": 5, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 5, + "customerId": 88, + "storeId": 5, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 5, + "customerId": 54, + "storeId": 5, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 5, + "customerId": 13, + "storeId": 5, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 5, + "customerId": 60, + "storeId": 5, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 15, + "customerId": 38, + "storeId": 5, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 15, + "customerId": 99, + "storeId": 5, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 15, + "customerId": 10, + "storeId": 5, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 15, + "customerId": 66, + "storeId": 5, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 15, + "customerId": 53, + "storeId": 5, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 25, + "customerId": 7, + "storeId": 5, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 25, + "customerId": 88, + "storeId": 5, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 25, + "customerId": 54, + "storeId": 5, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 25, + "customerId": 13, + "storeId": 5, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 25, + "customerId": 60, + "storeId": 5, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 35, + "customerId": 9, + "storeId": 5, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 35, + "customerId": 85, + "storeId": 5, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 35, + "customerId": 35, + "storeId": 5, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 35, + "customerId": 72, + "storeId": 5, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 35, + "customerId": 22, + "storeId": 5, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 45, + "customerId": 16, + "storeId": 5, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 45, + "customerId": 34, + "storeId": 5, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 45, + "customerId": 49, + "storeId": 5, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 45, + "customerId": 28, + "storeId": 5, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 45, + "customerId": 42, + "storeId": 5, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 6, + "customerId": 7, + "storeId": 6, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 6, + "customerId": 88, + "storeId": 6, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 6, + "customerId": 54, + "storeId": 6, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 6, + "customerId": 13, + "storeId": 6, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 6, + "customerId": 60, + "storeId": 6, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 16, + "customerId": 38, + "storeId": 6, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 16, + "customerId": 99, + "storeId": 6, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 16, + "customerId": 10, + "storeId": 6, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 16, + "customerId": 66, + "storeId": 6, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 16, + "customerId": 53, + "storeId": 6, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 26, + "customerId": 7, + "storeId": 6, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 26, + "customerId": 88, + "storeId": 6, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 26, + "customerId": 54, + "storeId": 6, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 26, + "customerId": 13, + "storeId": 6, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 26, + "customerId": 60, + "storeId": 6, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 36, + "customerId": 9, + "storeId": 6, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 36, + "customerId": 85, + "storeId": 6, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 36, + "customerId": 35, + "storeId": 6, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 36, + "customerId": 72, + "storeId": 6, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 36, + "customerId": 22, + "storeId": 6, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 46, + "customerId": 16, + "storeId": 6, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 46, + "customerId": 34, + "storeId": 6, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 46, + "customerId": 49, + "storeId": 6, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 46, + "customerId": 28, + "storeId": 6, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 46, + "customerId": 42, + "storeId": 6, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 7, + "customerId": 7, + "storeId": 7, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 7, + "customerId": 88, + "storeId": 7, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 7, + "customerId": 54, + "storeId": 7, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 7, + "customerId": 13, + "storeId": 7, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 7, + "customerId": 60, + "storeId": 7, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 17, + "customerId": 38, + "storeId": 7, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 17, + "customerId": 99, + "storeId": 7, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 17, + "customerId": 10, + "storeId": 7, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 17, + "customerId": 66, + "storeId": 7, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 17, + "customerId": 53, + "storeId": 7, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 27, + "customerId": 7, + "storeId": 7, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 27, + "customerId": 88, + "storeId": 7, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 27, + "customerId": 54, + "storeId": 7, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 27, + "customerId": 13, + "storeId": 7, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 27, + "customerId": 60, + "storeId": 7, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 37, + "customerId": 9, + "storeId": 7, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 37, + "customerId": 85, + "storeId": 7, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 37, + "customerId": 35, + "storeId": 7, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 37, + "customerId": 72, + "storeId": 7, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 37, + "customerId": 22, + "storeId": 7, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 47, + "customerId": 16, + "storeId": 7, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 47, + "customerId": 34, + "storeId": 7, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 47, + "customerId": 49, + "storeId": 7, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 47, + "customerId": 28, + "storeId": 7, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 47, + "customerId": 42, + "storeId": 7, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 8, + "customerId": 7, + "storeId": 8, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 8, + "customerId": 88, + "storeId": 8, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 8, + "customerId": 54, + "storeId": 8, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 8, + "customerId": 13, + "storeId": 8, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 8, + "customerId": 60, + "storeId": 8, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 18, + "customerId": 38, + "storeId": 8, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 18, + "customerId": 99, + "storeId": 8, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 18, + "customerId": 10, + "storeId": 8, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 18, + "customerId": 66, + "storeId": 8, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 18, + "customerId": 53, + "storeId": 8, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 28, + "customerId": 7, + "storeId": 8, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 28, + "customerId": 88, + "storeId": 8, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 28, + "customerId": 54, + "storeId": 8, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 28, + "customerId": 13, + "storeId": 8, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 28, + "customerId": 60, + "storeId": 8, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 38, + "customerId": 9, + "storeId": 8, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 38, + "customerId": 85, + "storeId": 8, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 38, + "customerId": 35, + "storeId": 8, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 38, + "customerId": 72, + "storeId": 8, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 38, + "customerId": 22, + "storeId": 8, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 48, + "customerId": 16, + "storeId": 8, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 48, + "customerId": 34, + "storeId": 8, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 48, + "customerId": 49, + "storeId": 8, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 48, + "customerId": 28, + "storeId": 8, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 48, + "customerId": 42, + "storeId": 8, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 9, + "customerId": 7, + "storeId": 9, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 9, + "customerId": 88, + "storeId": 9, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 9, + "customerId": 54, + "storeId": 9, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 9, + "customerId": 13, + "storeId": 9, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 9, + "customerId": 60, + "storeId": 9, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 19, + "customerId": 38, + "storeId": 9, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 19, + "customerId": 99, + "storeId": 9, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 19, + "customerId": 10, + "storeId": 9, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 19, + "customerId": 66, + "storeId": 9, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 19, + "customerId": 53, + "storeId": 9, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 29, + "customerId": 7, + "storeId": 9, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 29, + "customerId": 88, + "storeId": 9, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 29, + "customerId": 54, + "storeId": 9, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 29, + "customerId": 13, + "storeId": 9, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 29, + "customerId": 60, + "storeId": 9, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 39, + "customerId": 9, + "storeId": 9, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 39, + "customerId": 85, + "storeId": 9, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 39, + "customerId": 35, + "storeId": 9, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 39, + "customerId": 72, + "storeId": 9, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 39, + "customerId": 22, + "storeId": 9, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 49, + "customerId": 16, + "storeId": 9, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 49, + "customerId": 34, + "storeId": 9, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 49, + "customerId": 49, + "storeId": 9, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 49, + "customerId": 28, + "storeId": 9, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 49, + "customerId": 42, + "storeId": 9, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 10, + "customerId": 7, + "storeId": 10, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 10, + "customerId": 88, + "storeId": 10, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 10, + "customerId": 54, + "storeId": 10, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 10, + "customerId": 13, + "storeId": 10, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 10, + "customerId": 60, + "storeId": 10, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 20, + "customerId": 38, + "storeId": 10, + "rating": 5, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 20, + "customerId": 99, + "storeId": 10, + "rating": 4, + "comment": "Great value for money!" + }, + { + "productId": 20, + "customerId": 10, + "storeId": 10, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 20, + "customerId": 66, + "storeId": 10, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 20, + "customerId": 53, + "storeId": 10, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 30, + "customerId": 7, + "storeId": 10, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 30, + "customerId": 88, + "storeId": 10, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 30, + "customerId": 54, + "storeId": 10, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 30, + "customerId": 13, + "storeId": 10, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 30, + "customerId": 60, + "storeId": 10, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + }, + { + "productId": 40, + "customerId": 9, + "storeId": 10, + "rating": 4, + "comment": "Satisfactory, but I was hoping for better features." + }, + { + "productId": 40, + "customerId": 85, + "storeId": 10, + "rating": 5, + "comment": "Great value for money!" + }, + { + "productId": 40, + "customerId": 35, + "storeId": 10, + "rating": 5, + "comment": "Highly recommend it. Best purchase ever!" + }, + { + "productId": 40, + "customerId": 72, + "storeId": 10, + "rating": 3, + "comment": "The laptop is great for gaming." + }, + { + "productId": 40, + "customerId": 22, + "storeId": 10, + "rating": 4, + "comment": "It\u2019s okay, but there are better options out there." + }, + { + "productId": 50, + "customerId": 16, + "storeId": 10, + "rating": 5, + "comment": "Amazing laptop! Very fast and lightweight." + }, + { + "productId": 50, + "customerId": 34, + "storeId": 10, + "rating": 2, + "comment": "Great product! Worth every penny." + }, + { + "productId": 50, + "customerId": 49, + "storeId": 10, + "rating": 3, + "comment": "The quality exceeded my expectations." + }, + { + "productId": 50, + "customerId": 28, + "storeId": 10, + "rating": 4, + "comment": "Would definitely recommend to others." + }, + { + "productId": 50, + "customerId": 42, + "storeId": 10, + "rating": 1, + "comment": "Not as expected. The performance is subpar." + } +] diff --git a/settings.gradle b/settings.gradle index 6b10282..312b3de 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,6 @@ rootProject.name = 'java-developer-course' include 'PetCareScheduler' include 'Portfolio' -include 'OnlineQuiz' \ No newline at end of file +include 'OnlineQuiz' +include 'RetailManagementSystem:back-end' +include 'RetailManagementSystem:front-end' \ No newline at end of file