Add RetailManagementSystem app
This commit is contained in:
948
RetailManagementSystem/front-end/script.js
Normal file
948
RetailManagementSystem/front-end/script.js
Normal file
@@ -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 = `<h1 style='color: white;'>${activeLink.textContent}</h1>`
|
||||
head.innerHTML = html;
|
||||
|
||||
}
|
||||
|
||||
navLinks.forEach(link => {
|
||||
link.addEventListener('click', function (event) {
|
||||
let html = `<h1 style='color: white;'>${event.target.textContent}</h1>`
|
||||
head.innerHTML = html;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function createMoreOrderField() {
|
||||
Ordercount++;
|
||||
OrderList = document.getElementById('OrderListBody');
|
||||
|
||||
tr = document.createElement('tr');
|
||||
tr.setAttribute('id', `${Ordercount}`)
|
||||
|
||||
|
||||
|
||||
tr.innerHTML =
|
||||
`
|
||||
<td><input type="text" class="input-cell SerialNo" disabled>
|
||||
</td>
|
||||
<td><input type="text" class="input-cell" id="orderProductName${Ordercount}"
|
||||
placeholder="Enter Product Name" onkeyup="fillProductId(${Ordercount})"
|
||||
required>
|
||||
<div id="OrderSuggestion${Ordercount}">
|
||||
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td><input type="text" class="input-cell" id="orderProductId${Ordercount}"
|
||||
placeholder="Enter ProductId" disabled required></td>
|
||||
<td><input type="text" class="input-cell" id="orderProductPrice${Ordercount}"
|
||||
placeholder=" Enter Product price" disabled required></td>
|
||||
<td><input type="text" class="input-cell" id="orderProductQuantity${Ordercount}"
|
||||
placeholder="Enter Quantity" required
|
||||
onkeyup="calculatePrice(${Ordercount}),validateQuantity(${Ordercount})"></td>
|
||||
<td><input type="text" class="input-cell" id="orderTotal${Ordercount}"
|
||||
placeholder="Enter Total Here" disabled required></td>
|
||||
<td><button type="button" class="remove-btn" onclick="deleteDiv(${Ordercount})">Remove</button></td>
|
||||
`
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user