410 lines
16 KiB
JavaScript
410 lines
16 KiB
JavaScript
window.sendBidMessage = function (ptaId, auctionId, bidPrice, productId) {
|
|
|
|
setBidButtonDisabledById("signalRBidButton" + ptaId, true);
|
|
|
|
var bidMessage = {
|
|
ProductAuctionMappingId: ptaId,
|
|
AuctionId: auctionId,
|
|
BidPrice: bidPrice,
|
|
ProductId: productId,
|
|
CustomerId: window.CustomerId
|
|
};
|
|
|
|
var content = JSON.stringify(bidMessage);
|
|
console.log("WTF " + content);
|
|
sendMessageToServer("BidRequestMessage", window.CustomerId, content);
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
window.setBidButtonDisabledById = function (bidButtonElementId, disabled, updateDisabledState = true) {
|
|
if (!updateDisabledState) return;
|
|
|
|
setBidButtonDisabled(document.getElementById(bidButtonElementId), disabled, updateDisabledState);
|
|
}
|
|
|
|
window.sendAuctionStatusChange = function (ptaId, auctionStatus) {
|
|
var customerId = window.CustomerId;
|
|
console.log("Send auctionstatus: " + customerId + ", " + ptaId);
|
|
// Create the message object
|
|
var auctionMessage = {
|
|
ProductToAuctionId: ptaId,
|
|
AuctionStatus: auctionStatus
|
|
};
|
|
|
|
// Convert to JSON and log
|
|
var content = JSON.stringify(auctionMessage);
|
|
console.log(content);
|
|
|
|
// Send the message via SignalR
|
|
sendMessageToServer("AuctionProductStatusRequest", customerId, content);
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
window.refreshPublicBidBox = function (bidNotification, updateBidButtonDisabledState, ptaId, thisPta) {
|
|
|
|
//now we are refreshing any widget that has this ptaId
|
|
|
|
var auctionDto = bidNotification.auctionDto;
|
|
|
|
/*var productAuctionMappingId = ptaId;*/
|
|
var winnerId = thisPta.winnerCustomerId;
|
|
var isMyBid;
|
|
|
|
console.log("productId: " + thisPta.productId);
|
|
var widgetPriceElement = document.getElementById("price-value-" + thisPta.productId);
|
|
//var widgetPriceElement = $("#price-value-" + productToAuction.productId);
|
|
|
|
|
|
var widgetPriceElementInList = $('.product-item[data-productid="' + thisPta.productId + '"]');
|
|
console.log("WidgetPriceElement" + widgetPriceElement);
|
|
var currency = window.WorkingCurrency;
|
|
console.log(currency);
|
|
|
|
var bidButtonElement = document.getElementById("signalRBidButton" + ptaId);
|
|
var bidButtonElementText = document.getElementById("signalRBidButtonText" + ptaId);
|
|
var storedBidPricePlaceholder = document.getElementById("bidPriceContainer" + ptaId);
|
|
var licitStepElement = document.getElementById("licitStepText" + ptaId);
|
|
var bidBox = document.getElementById("publicProductBidBox" + ptaId);
|
|
var bidBoxTitle = document.getElementById("bidBoxTitle" + ptaId);
|
|
console.log("signalRBidButton" + ptaId);
|
|
console.log(bidButtonElement);
|
|
console.log(storedBidPricePlaceholder);
|
|
console.log(licitStepElement);
|
|
console.log(bidBox);
|
|
console.log(bidBoxTitle);
|
|
console.log(bidNotification);
|
|
|
|
if (winnerId == window.CustomerId) {
|
|
isMyBid = true;
|
|
|
|
}
|
|
|
|
console.log("ProductToAuctionId: " + ptaId);
|
|
|
|
//TODO: TESZT STATUS!!! - JTEST.
|
|
var status = thisPta.auctionStatus;
|
|
//var status = AuctionStatus.TEST;
|
|
|
|
|
|
if (updateBidButtonDisabledState) {
|
|
setButtons(status, ptaId);
|
|
}
|
|
|
|
|
|
if (widgetPriceElement || widgetPriceElementInList) {
|
|
|
|
if (widgetPriceElement) {
|
|
console.log("PRICE: " + bidNotification.currentPrice);
|
|
/*if (productAuctionMappingId == ptaId) {*/
|
|
console.log("THIS IS FOR US! SORRY FOR SHOUTING");
|
|
if (currency.CurrencyCode == "EUR") {
|
|
console.log("EUR");
|
|
widgetPriceElement.textContent = EURFormatter.format(bidNotification.currentPrice * window.WorkingCurrency.Rate); // Update the price
|
|
//licitStepElement.textContent = EURFormatter.format(bidNotification.nextStepAmount * window.WorkingCurrency.Rate);
|
|
}
|
|
else {
|
|
|
|
widgetPriceElement.textContent = HUFFormatter.format(bidNotification.currentPrice); // Update the price
|
|
//widgetPriceElement.setAttribute("id", "hugrabug");
|
|
//licitStepElement.textContent = HUFFormatter.format(bidNotification.nextStepAmount);
|
|
}
|
|
/*}*/
|
|
}
|
|
else if (widgetPriceElementInList) {
|
|
console.log("PRICE: " + bidNotification.currentPrice);
|
|
var widgetPriceElements = widgetPriceElementInList.find('.actual-price');
|
|
/*if (productAuctionMappingId == ptaId) {*/
|
|
console.log("THIS IS FOR US! SORRY FOR SHOUTING");
|
|
if (widgetPriceElements && widgetPriceElements.length > 0) {
|
|
if (currency.CurrencyCode == "EUR") {
|
|
console.log("EUR");
|
|
widgetPriceElements[0].textContent = EURFormatter.format(bidNotification.currentPrice * window.WorkingCurrency.Rate); // Update the price
|
|
//licitStepElement.textContent = EURFormatter.format(bidNotification.nextStepAmount * window.WorkingCurrency.Rate);
|
|
}
|
|
else {
|
|
|
|
widgetPriceElements[0].textContent = HUFFormatter.format(bidNotification.currentPrice); // Update the price
|
|
//licitStepElement.textContent = HUFFormatter.format(bidNotification.nextStepAmount);
|
|
}
|
|
}
|
|
/*}*/
|
|
}
|
|
|
|
/*if (productAuctionMappingId == ptaId) {*/
|
|
/*console.log("THIS IS FOR US! SORRY FOR SHOUTING");*/
|
|
if (currency.CurrencyCode == "EUR") {
|
|
console.log("EUR");
|
|
//widgetPriceElement.textContent = EURFormatter.format(bidNotification.currentPrice * window.WorkingCurrency.Rate); // Update the price
|
|
licitStepElement.textContent = EURFormatter.format(bidNotification.nextStepAmount * window.WorkingCurrency.Rate);
|
|
}
|
|
else {
|
|
console.log("HUF");
|
|
//widgetPriceElement.textContent = HUFFormatter.format(bidNotification.currentPrice); // Update the price
|
|
licitStepElement.textContent = HUFFormatter.format(bidNotification.nextStepAmount);
|
|
}
|
|
|
|
storedBidPricePlaceholder.value = Number(bidNotification.nextBidPrice);
|
|
setBidButtonDisabled(bidButtonElement, !thisPta.isActiveItem, updateBidButtonDisabledState);
|
|
|
|
var list;
|
|
if (isMyBid) {
|
|
console.log("This is my bid");
|
|
list = bidBox.classList;
|
|
//list.add("bg-success");
|
|
//list.remove("bg-primary");
|
|
|
|
bidButtonElementText.textContent = window.LocalizationStrings.GoodJob;
|
|
bidBoxTitle.textContent = thisPta.auctionStatus == AuctionStatus.Sold ? window.LocalizationStrings.YouWin : window.LocalizationStrings.YourBidLeading;
|
|
|
|
if (window.IsAdmin) {
|
|
console.log("I AM WEASEL!!! " + window.IsAdmin);
|
|
setBidButtonDisabled(bidButtonElement, !thisPta.isActiveItem, updateBidButtonDisabledState);
|
|
} else {
|
|
console.log("I AM NOT WEASEL!!! " + window.IsAdmin);
|
|
setBidButtonDisabled(bidButtonElement, true, updateBidButtonDisabledState);
|
|
}
|
|
} else {
|
|
list = bidBox.classList;
|
|
//list.add("bg-primary");
|
|
//list.remove("bg-success");
|
|
bidBoxTitle.textContent = thisPta.auctionStatus == AuctionStatus.Sold ? window.LocalizationStrings.Sold : window.LocalizationStrings.PlaceABid;
|
|
|
|
if (currency.CurrencyCode == "EUR") {
|
|
bidButtonElementText.textContent = EURFormatter.format(bidNotification.nextBidPrice * window.WorkingCurrency.Rate);
|
|
//bidButtonElement.textContent = EURFormatter.format(storedBidPricePlaceholder.value);
|
|
} else {
|
|
bidButtonElementText.textContent = HUFFormatter.format(bidNotification.nextBidPrice);
|
|
//bidButtonElement.textContent = HUFFormatter.format(storedBidPricePlaceholder.value);
|
|
}
|
|
bidButtonElement.disabled = false;
|
|
}
|
|
//console.log(widgetPriceElement.textContent);
|
|
console.log(`WidgetPrice updated to: ${bidNotification.currentPrice}`);
|
|
|
|
|
|
//} else {
|
|
// console.log("Not for this product");
|
|
//}
|
|
} else {
|
|
console.warn("Element with ID 'WidgetPrice' not found in the DOM.");
|
|
}
|
|
}
|
|
|
|
function setButtons(auctionStatus, ptaId) {
|
|
console.log("SetButtons called: " + auctionStatus);
|
|
|
|
// Button IDs and their default states for each AuctionStatus
|
|
//true = disabled
|
|
var buttonStates = {
|
|
[AuctionStatus.None]: {
|
|
signalRBidButton: true,
|
|
signalRFirstWarningButton: true,
|
|
signalRSecondWarningButton: true,
|
|
signalROpenItemButton: false,
|
|
signalRCloseItemButton: true,
|
|
signalRPauseItemButton: true,
|
|
signalRRevertBidButton: true,
|
|
signalRResetItemButton: true,
|
|
},
|
|
[AuctionStatus.Active]: {
|
|
signalRBidButton: false,
|
|
signalRFirstWarningButton: false,
|
|
signalRSecondWarningButton: true,
|
|
signalROpenItemButton: true,
|
|
signalRCloseItemButton: true,
|
|
signalRPauseItemButton: false,
|
|
signalRRevertBidButton: true,
|
|
signalRResetItemButton: true,
|
|
},
|
|
[AuctionStatus.FirstWarning]: {
|
|
signalRBidButton: false,
|
|
signalRFirstWarningButton: true,
|
|
signalRSecondWarningButton: false,
|
|
signalROpenItemButton: true,
|
|
signalRCloseItemButton: true,
|
|
signalRPauseItemButton: false,
|
|
signalRRevertBidButton: true,
|
|
signalRResetItemButton: true,
|
|
},
|
|
[AuctionStatus.SecondWarning]: {
|
|
signalRBidButton: false,
|
|
signalRFirstWarningButton: true,
|
|
signalRSecondWarningButton: true,
|
|
signalROpenItemButton: true,
|
|
signalRCloseItemButton: false,
|
|
signalRPauseItemButton: false,
|
|
signalRRevertBidButton: true,
|
|
signalRResetItemButton: true,
|
|
},
|
|
[AuctionStatus.Pause]: {
|
|
signalRBidButton: true,
|
|
signalRFirstWarningButton: true,
|
|
signalRSecondWarningButton: true,
|
|
signalROpenItemButton: false,
|
|
signalRCloseItemButton: true,
|
|
signalRPauseItemButton: true,
|
|
signalRRevertBidButton: false,
|
|
signalRResetItemButton: false,
|
|
},
|
|
[AuctionStatus.Sold]: {
|
|
signalRBidButton: true,
|
|
signalRFirstWarningButton: true,
|
|
signalRSecondWarningButton: true,
|
|
signalROpenItemButton: true,
|
|
signalRCloseItemButton: true,
|
|
signalRPauseItemButton: true,
|
|
signalRRevertBidButton: true,
|
|
signalRResetItemButton: true,
|
|
},
|
|
[AuctionStatus.NotSold]: {
|
|
signalRBidButton: true,
|
|
signalRFirstWarningButton: true,
|
|
signalRSecondWarningButton: true,
|
|
signalROpenItemButton: true,
|
|
signalRCloseItemButton: true,
|
|
signalRPauseItemButton: true,
|
|
signalRRevertBidButton: true,
|
|
signalRResetItemButton: true,
|
|
},
|
|
[AuctionStatus.TEST]: {
|
|
signalRBidButton: false,
|
|
signalRFirstWarningButton: false,
|
|
signalRSecondWarningButton: false,
|
|
signalROpenItemButton: false,
|
|
signalRCloseItemButton: false,
|
|
signalRPauseItemButton: false,
|
|
signalRRevertBidButton: false,
|
|
signalRResetItemButton: false,
|
|
},
|
|
|
|
};
|
|
|
|
// Get the states for the given auctionStatus
|
|
var states = buttonStates[auctionStatus];
|
|
if (!states) {
|
|
console.error("Unknown AuctionStatus: ", auctionStatus);
|
|
return;
|
|
}
|
|
|
|
// Apply the states to each button
|
|
Object.keys(states).forEach((buttonId) => {
|
|
var button = document.getElementById(buttonId + ptaId);
|
|
if (button) {
|
|
button.disabled = states[buttonId];
|
|
button.hidden = states[buttonId];
|
|
} else {
|
|
console.warn(`Button with ID ${buttonId} not found.`);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function handleAuctionUpdate(auctionStatusNotification, myPtaId) {
|
|
var ids = auctionStatusNotification.auctionDto.productToAuctionDtos.map(pta => pta.id);
|
|
ids.forEach(ptaId => {
|
|
console.log(ptaId);
|
|
var productToAuctionDtos = auctionStatusNotification.auctionDto.productToAuctionDtos;
|
|
|
|
// Find the object with the matching Id
|
|
var matchingDto = productToAuctionDtos.find(pta => pta.id === ptaId);
|
|
|
|
if (matchingDto) {
|
|
console.log('Matching ProductToAuctionDto:', matchingDto);
|
|
UpdateBox(ptaId, matchingDto.productId, auctionStatusNotification.auctionDto, matchingDto);
|
|
} else {
|
|
console.log(`No ProductToAuctionDto found with Id: ${ptaId}`);
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
function UpdateBox(ptaId, productId, auctionDto, ptaDto) {
|
|
var widgetPriceElement = document.getElementById("price-value-" + productId);
|
|
var widgetPriceElementInList = $('.product-item[data-productid="' + productId + '"]');
|
|
var bidButtonElement = document.getElementById("signalRBidButton" + ptaId);
|
|
var licitStepElement = document.getElementById("licitStepText" + ptaId);
|
|
var bidBoxTitle = document.getElementById("bidBoxTitle" + ptaId);
|
|
|
|
var productAuctionMappingId = ptaId;
|
|
let isMyBid = false;
|
|
|
|
//TODO: TESZT STATUS!!! - JTEST.
|
|
let itemStatus = ptaDto.auctionStatus;
|
|
//var itemStatus = AuctionStatus.TEST;
|
|
let winnerId = ptaDto.winnerCustomerId;
|
|
if (winnerId == window.CustomerId) {
|
|
isMyBid = true;
|
|
|
|
}
|
|
console.log("handle auction update called" + productAuctionMappingId);
|
|
console.log("auction status:" + itemStatus);
|
|
if (widgetPriceElement || widgetPriceElementInList) {
|
|
|
|
/*if (productAuctionMappingId == bidBoxPageViewModel.ProductToAuctionId) {*/
|
|
console.log("THIS IS FOR US! SORRY FOR SHOUTING");
|
|
switch (itemStatus) {
|
|
case AuctionStatus.None:
|
|
location.reload();
|
|
break;
|
|
|
|
case AuctionStatus.Active:
|
|
if (isMyBid) {
|
|
bidBoxTitle.textContent = window.LocalizationStrings.YourBidLeading;
|
|
} else {
|
|
bidBoxTitle.textContent = window.LocalizationStrings.PlaceABid;
|
|
}
|
|
break;
|
|
|
|
case AuctionStatus.Pause:
|
|
bidBoxTitle.textContent = window.LocalizationStrings.AuctionPaused;
|
|
break;
|
|
|
|
case AuctionStatus.FirstWarning:
|
|
bidBoxTitle.textContent = window.LocalizationStrings.FirstWarning;
|
|
break;
|
|
|
|
case AuctionStatus.SecondWarning:
|
|
bidBoxTitle.textContent = window.LocalizationStrings.SecondWarning;
|
|
break;
|
|
|
|
case AuctionStatus.Sold:
|
|
if (isMyBid) {
|
|
bidBoxTitle.textContent = window.LocalizationStrings.YouWin;
|
|
} else {
|
|
bidBoxTitle.textContent = window.LocalizationStrings.ItemClosed;
|
|
}
|
|
break;
|
|
|
|
case AuctionStatus.NotSold:
|
|
bidBoxTitle.textContent = window.LocalizationStrings.ItemClosed;
|
|
break;
|
|
|
|
default:
|
|
console.warn("Unknown AuctionStatus: ", itemStatus);
|
|
}
|
|
|
|
|
|
/*console.log(`Status updated to: ${auctionStatusNotification.currentPrice}, next bid is ${bidBoxPageViewModel.NextBidPrice}`);*/
|
|
|
|
//}
|
|
|
|
//else {
|
|
// console.log("Not for this product");
|
|
//}
|
|
|
|
|
|
} else {
|
|
console.warn("Element with ID 'WidgetPrice' not found in the DOM.");
|
|
}
|
|
setButtons(itemStatus, ptaId);
|
|
|
|
}
|
|
|
|
|
|
|