This commit is contained in:
Loretta 2024-11-26 16:28:09 +01:00
commit 849c04c10b
2 changed files with 140 additions and 92 deletions

View File

@ -9,7 +9,7 @@
if (!liveScreen) {
toastr.info(`<div class="item announcemantToast">${myObject.message}</div>`, myObject.title, {
"closeButton": true,
"positionClass": "toast-bottom-right",
"positionClass": "toast-top-right",
"newestOnTop": true,
"progressBar": true,
"preventDuplicates": false,
@ -47,7 +47,7 @@
if (!liveScreen) {
toastr.success(`<div class="item bidToast"><p>${myObject.currentPrice}</p><p>${myObject.productName}</p></div>`, "New bid arrived", {
"closeButton": true,
"positionClass": "toast-bottom-right",
"positionClass": "toast-top-right",
"newestOnTop": true,
"progressBar": true,
"preventDuplicates": false,
@ -74,7 +74,7 @@
if (!liveScreen) {
toastr.success(`<div class="item bidToast"><p>${productToAuctionDto.auctionStatus}</p><p>${productToAuctionDto.id}</p></div>`, "Status changed", {
"closeButton": true,
"positionClass": "toast-bottom-right",
"positionClass": "toast-top-right",
"newestOnTop": true,
"progressBar": true,
"preventDuplicates": false,
@ -107,7 +107,7 @@
var myObject = JSON.parse(data);
toastr.success(`<div class="item bidToast"><p>${myObject.nextBidPrice}</p><p>${myObject.productName}</p></div>`, "Item auction is OPENED!", {
"closeButton": true,
"positionClass": "toast-bottom-right",
"positionClass": "toast-top-right",
"newestOnTop": true,
"progressBar": true,
"preventDuplicates": false,

View File

@ -9,93 +9,97 @@
@{
if (!Model.IsGuest)
{
<div id="publicProductBidBox" class="p-3 bg-primary text-white">
<h4>This item is under auction!</h4>
<div class="d-flex justify-content-between">
<div>
<strong>Base Price:</strong>
<span class="value">
@($"{Model.BasePrice:c}")
@* @(decimal?.Round(Model.BasePrice, 2, MidpointRounding.AwayFromZero)) *@
</span>
</div>
<div>
<strong>Bid Step:</strong>
<span id="licitStepText" class="value">@($"{Model.LicitStep:c}")</span>
</div>
<div>
<button id="signalRBidButton" class="btn btn-success" style="text-transform: uppercase;" type="button" disabled="@(!Model.IsItemActive)">
Bid @($"{Model.NextBidPrice:c}")
</button>
@* <button id="bidButton" class="btn btn-success">
var bgClass = Model.AuctionDto.ProductToAuctionDtos.FirstOrDefault().WinnerCustomerId == Model.CustomerId ? "bg-success" : "bg-primary";
bool bidButtonActive = Model.IsItemActive && (Model.AuctionDto.ProductToAuctionDtos.FirstOrDefault().WinnerCustomerId == Model.CustomerId && !Model.IsAdmin) ? true : false;
string title = Model.AuctionDto.ProductToAuctionDtos.FirstOrDefault().WinnerCustomerId == Model.CustomerId ? "Your bid is leading" : "Place a bid!";
<div id="publicProductBidBox" class="p-3 @bgClass text-white">
<h4 id="bidBoxTitle">@title</h4>
<div class="d-flex justify-content-between">
<div>
<strong>Base Price:</strong>
<span class="value">
@($"{Model.BasePrice:c}")
@* @(decimal?.Round(Model.BasePrice, 2, MidpointRounding.AwayFromZero)) *@
</span>
</div>
<div>
<strong>Bid Step:</strong>
<span id="licitStepText" class="value">@($"{Model.LicitStep:c}")</span>
</div>
<div>
<button id="signalRBidButton" class="btn btn-success" style="text-transform: uppercase;" type="button" disabled="@(bidButtonActive)">
Bid @($"{Model.NextBidPrice:c}")
</button>
@* <button id="bidButton" class="btn btn-success">
Bid @String.Format("{0:c}", Model.NextBidPrice)
</button> *@
</div>
</div>
</div>
</div>
@* <button id="testButton" class="btn btn-success">
@* <button id="testButton" class="btn btn-success">
TestButton
</button> *@
<div id="bidFeedback" class="mt-3"></div>
</div>
<div id="bidFeedback" class="mt-3"></div>
</div>
if (Model.IsAdmin)
{
<div id="publicProductBidBoxAdmin" class="p-3 bg-secondary text-white">
<h4>Manage auction!</h4>
<div id="bidBoxAdminButtons" class="d-flex justify-content-between mb-3">
<div id="publicProductBidBoxAdmin" class="p-3 bg-secondary text-white">
<h4>Manage auction!</h4>
<div id="bidBoxAdminButtons" class="d-flex justify-content-between mb-3">
<div>
<button id="signalROpenItemButton" class="btn btn-primary" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus == AuctionStatus.None || Model.AuctionStatus == AuctionStatus.Pause ? string.Empty : "disabled")>
Open item
</button>
<button id="signalRPauseItemButton" class="btn btn-warning" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus == AuctionStatus.Active || Model.AuctionStatus == AuctionStatus.FirstWarning || Model.AuctionStatus == AuctionStatus.SecondWarning ? string.Empty : "disabled")>
Pause auction
</button>
<button id="signalRRevertBidButton" class="btn btn-warning" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.Pause ? "disabled" : string.Empty)>
Revert bid
</button>
<button id="signalRResetItemButton" class="btn btn-danger" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.Pause ? "disabled" : string.Empty)>
Reset auction
</button>
</div>
<div>
<button id="signalRFirstWarningButton" class="btn btn-warning" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.Active ? "disabled" : string.Empty)>
First warning
</button>
<button id="signalRSecondWarningButton" class="btn btn-danger" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.FirstWarning ? "disabled" : string.Empty)>
Second warning
</button>
<button id="signalRCloseItemButton" class="btn btn-success" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.SecondWarning ? "disabled" : string.Empty)>
Finished
</button>
</div>
<div>
<button id="signalROpenItemButton" class="btn btn-primary" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus == AuctionStatus.None || Model.AuctionStatus == AuctionStatus.Pause ? string.Empty : "disabled hidden")>
Open item
</button>
<button id="signalRPauseItemButton" class="btn btn-warning" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus == AuctionStatus.Active || Model.AuctionStatus == AuctionStatus.FirstWarning || Model.AuctionStatus == AuctionStatus.SecondWarning ? string.Empty : "disabled hidden")>
Pause auction
</button>
<button id="signalRRevertBidButton" class="btn btn-warning" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.Pause ? "disabled hidden" : string.Empty)>
Revert bid
</button>
<button id="signalRResetItemButton" class="btn btn-danger" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.Pause ? "disabled hidden" : string.Empty)>
Reset auction
</button>
</div>
<div>
<button id="signalRFirstWarningButton" class="btn btn-warning" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.Active ? "disabled hidden" : string.Empty)>
First warning
</button>
<button id="signalRSecondWarningButton" class="btn btn-danger" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.FirstWarning ? "disabled hidden" : string.Empty)>
Second warning
</button>
<button id="signalRCloseItemButton" class="btn btn-success" style="text-transform: uppercase;" type="button" @(Model.AuctionStatus != AuctionStatus.SecondWarning ? "disabled hidden" : string.Empty)>
Finished
</button>
</div>
</div>
</div>
</div>
</div>
}
else
{
<p>No access to admin level buttons</p>
<p>No access to admin level buttons</p>
}
}
else
{
<div id="publicProductBidBoxGuest" class="p-3 bg-primary text-white">
<h4>This item is under auction!</h4>
<div id="bidBoxGuestMessage" class="d-flex justify-content-between mb-3">
<div id="publicProductBidBoxGuest" class="p-3 bg-primary text-white">
<h4>This item is under auction!</h4>
<div id="bidBoxGuestMessage" class="d-flex justify-content-between mb-3">
<p>Please log in or register to participate!</p>
</div>
</div>
<p>Please log in or register to participate!</p>
</div>
</div>
}
}
@ -118,12 +122,12 @@
document.getElementById("signalRBidButton").disabled = true;
event.preventDefault();
if (!bidBoxPageViewModel) {
console.log("we need viewmodel data");
bidBoxPageViewModel = @Html.Raw(Json.Serialize(Model));
}
var bidMessage = {
ProductAuctionMappingId: bidBoxPageViewModel.ProductToAuctionId,
AuctionId: bidBoxPageViewModel.AuctionId,
@ -190,12 +194,12 @@
event.preventDefault();
if (!bidBoxPageViewModel) {
console.log("we need viewmodel data");
bidBoxPageViewModel = @Html.Raw(Json.Serialize(Model));
console.log("we need viewmodel data");
bidBoxPageViewModel = @Html.Raw(Json.Serialize(Model));
}
var revertMessage = {
ProductToAuctionId: bidBoxPageViewModel.ProductToAuctionId,
ProductToAuctionId: bidBoxPageViewModel.ProductToAuctionId,
};
var content = JSON.stringify(revertMessage);
@ -206,13 +210,15 @@
});
$("#signalRResetItemButton").on("click", function () {
document.getElementById("signalRResetItemButton").disabled = true;
event.preventDefault();
document.getElementById("signalRResetItemButton").disabled = true;
event.preventDefault();
sendAuctionStatusChange(AuctionStatus.None);
sendAuctionStatusChange(AuctionStatus.None);
return false;
return false;
});
//var status = bidBoxPageViewModel.auctionDto.productToAuctionDtos[0].auctionStatus;
//setButtons(status);
});
function sendAuctionStatusChange(auctionStatus) {
@ -250,10 +256,20 @@
var widgetPriceElement = document.getElementById("price-value-" + bidBoxPageViewModel.ProductId);
var budButtonElement = document.getElementById("signalRBidButton");
var licitStepElement = document.getElementById("licitStepText");
var bidBox = document.getElementById("publicProductBidBox");
var bidBoxTitle = document.getElementById("bidBoxTitle");
console.log(data);
var productAuctionMappingId = data.auctionDto.productToAuctionDtos[0].id;
var winnerId = data.auctionDto.productToAuctionDtos[0].winnerCustomerId;
var isMyBid;
if (winnerId == bidBoxPageViewModel.CustomerId) {
isMyBid = true;
}
console.log(productAuctionMappingId);
//TODO: TESZT STATUS!!! - JTEST.
var status = data.auctionDto.productToAuctionDtos[0].auctionStatus;
//var status = AuctionStatus.TEST;
@ -274,16 +290,34 @@
widgetPriceElement.textContent = HUFFormatter.format(data.currentPrice); // Update the price
licitStepElement.textContent = HUFFormatter.format(data.nextStepAmount);
bidBoxPageViewModel.NextBidPrice = Number(data.nextBidPrice);
budButtonElement.disabled = false;
if (isMyBid) {
console.log("This is my bid");
const list = bidBox.classList;
list.add("bg-success");
list.remove("bg-primary");
budButtonElement.textContent = "Good job";
bidBoxTitle.textContent="Your bid is leading!"
if (bidBoxPageViewModel.IsAdmin) {
console.log("I AM WEASEL!!! " + bidBoxPageViewModel.IsAdmin);
budButtonElement.disabled = false;
}
else {
console.log("I AM NOT WEASEL!!! " + bidBoxPageViewModel.IsAdmin);
budButtonElement.disabled = true;
}
}
else {
const list = bidBox.classList;
list.add("bg-primary");
list.remove("bg-success");
bidBoxTitle.textContent = "Place a bid!"
budButtonElement.textContent = "Bid " + HUFFormatter.format(bidBoxPageViewModel.NextBidPrice);
budButtonElement.textContent = "Bid " + HUFFormatter.format(bidBoxPageViewModel.NextBidPrice);
// if (bidBoxPageViewModel.CustomerId == data.CustomerId) {
// }
}
console.log(`WidgetPrice updated to: ${data.currentPrice}, next bid is ${bidBoxPageViewModel.NextBidPrice}`);
budButtonElement.disabled = false;
//budButtonElement.disabled = false;
}
@ -299,12 +333,13 @@
function handleAuctionUpdate(data) {
var widgetPriceElement = document.getElementById("price-value-" + bidBoxPageViewModel.ProductId);
var bidBoxTitle = document.getElementById("bidBoxTitle");
var productAuctionMappingId = data.auctionDto.productToAuctionDtos[0].id;
//TODO: TESZT STATUS!!! - JTEST.
var itemStatus = data.auctionDto.productToAuctionDtos[0].auctionStatus;
//var itemStatus = AuctionStatus.TEST;
console.log("handle auction update called" + productAuctionMappingId);
console.log("auction status:" + itemStatus);
if (widgetPriceElement) {
@ -312,6 +347,19 @@
if (productAuctionMappingId == bidBoxPageViewModel.ProductToAuctionId) {
console.log("THIS IS FOR US! SORRY FOR SHOUTING");
if (itemStatus == AuctionStatus.None) {
bidBoxTitle.textContent = "The auction has not started yet";
}
else if (itemStatus == AuctionStatus.Pause) {
bidBoxTitle.textContent = "The auction is paused! Please hold on...";
}
else if (itemStatus == AuctionStatus.FirstWarning) {
bidBoxTitle.textContent = "First warning!";
}
else if (itemStatus == AuctionStatus.SecondWarning) {
bidBoxTitle.textContent = "Secnod warning! Hurry up!";
}
setButtons(itemStatus);
console.log(`WidgetPrice updated to: ${data.currentPrice}, next bid is ${bidBoxPageViewModel.NextBidPrice}`);
@ -407,14 +455,14 @@
signalRResetItemButton: false,
},
[AuctionStatus.TEST]: {
signalRBidButton: false,
signalRFirstWarningButton: false,
signalRSecondWarningButton: false,
signalROpenItemButton: false,
signalRCloseItemButton: false,
signalRPauseItemButton: false,
signalRRevertBidButton: false,
signalRResetItemButton: false,
signalRBidButton: false,
signalRFirstWarningButton: false,
signalRSecondWarningButton: false,
signalROpenItemButton: false,
signalRCloseItemButton: false,
signalRPauseItemButton: false,
signalRRevertBidButton: false,
signalRResetItemButton: false,
},
};
@ -431,7 +479,7 @@
const button = document.getElementById(buttonId);
if (button) {
button.disabled = states[buttonId];
// button.hidden = states[buttonId];
button.hidden = states[buttonId];
} else {
console.warn(`Button with ID ${buttonId} not found.`);
}