|
|
@@ -28,48 +28,40 @@
|
|
|
{
|
|
|
var delimiters = new[] { ';', ',' };
|
|
|
var balls = item.code.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
|
|
|
-
|
|
|
- // Prepare winning numbers for comparison
|
|
|
- var winningBalls = new HashSet<string>();
|
|
|
- if (!string.IsNullOrEmpty(item.termResult))
|
|
|
+
|
|
|
+ // Millions result = 5 main numbers + 1 Mega Ball (the last one):
|
|
|
+ // - the 5 main numbers match in any order
|
|
|
+ // - the Mega Ball must match by position (the last ticket number)
|
|
|
+ var resultBalls = !string.IsNullOrEmpty(item.termResult)
|
|
|
+ ? item.termResult.Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
|
|
|
+ : new string[0];
|
|
|
+ var mainWinning = new HashSet<string>();
|
|
|
+ string mbWinning = null;
|
|
|
+ if (resultBalls.Length > 0)
|
|
|
{
|
|
|
- var winningSplit = item.termResult.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
|
|
|
- foreach (var wb in winningSplit) winningBalls.Add(wb.Trim());
|
|
|
+ for (int i = 0; i < resultBalls.Length - 1; i++) mainWinning.Add(resultBalls[i].Trim());
|
|
|
+ mbWinning = resultBalls[resultBalls.Length - 1].Trim();
|
|
|
}
|
|
|
+ var mbIndex = balls.Length - 1;
|
|
|
|
|
|
- foreach (var ball in balls)
|
|
|
+ for (int bi = 0; bi < balls.Length; bi++)
|
|
|
{
|
|
|
- var ballValue = ball.Trim();
|
|
|
+ var ballValue = balls[bi].Trim();
|
|
|
if (!string.IsNullOrEmpty(ballValue))
|
|
|
{
|
|
|
- string ballClass = "";
|
|
|
+ string ballClass;
|
|
|
if (item.status == Constants.NOT_DRAW_CODE) {
|
|
|
ballClass = "ball-waiting";
|
|
|
- } else if (winningBalls.Contains(ballValue)) {
|
|
|
+ } else if (bi == mbIndex) {
|
|
|
+ // Mega Ball: position-based comparison
|
|
|
+ ballClass = ballValue == mbWinning ? "ball-win" : "ball-lose";
|
|
|
+ } else if (mainWinning.Contains(ballValue)) {
|
|
|
ballClass = "ball-win";
|
|
|
} else {
|
|
|
ballClass = "ball-lose";
|
|
|
}
|
|
|
|
|
|
- // Map single-letter codes to full labels
|
|
|
- var displayValue = ballValue;
|
|
|
- var isLabel = false;
|
|
|
- switch (ballValue.ToUpper())
|
|
|
- {
|
|
|
- case "B": displayValue = "Big"; isLabel = true; break;
|
|
|
- case "S": displayValue = "Small"; isLabel = true; break;
|
|
|
- case "O": displayValue = "Odd"; isLabel = true; break;
|
|
|
- case "E": displayValue = "Even"; isLabel = true; break;
|
|
|
- }
|
|
|
-
|
|
|
- if (isLabel)
|
|
|
- {
|
|
|
- <div class="ticket-ball @ballClass" style="width: auto; min-width: 50px; padding: 2px 10px; border-radius: 16px; font-size: 13px;">@displayValue</div>
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- <div class="ticket-ball @ballClass">@displayValue</div>
|
|
|
- }
|
|
|
+ <div class="ticket-ball @ballClass">@ballValue</div>
|
|
|
}
|
|
|
}
|
|
|
}
|