Ver Fonte

no message

student há 1 mês atrás
pai
commit
12ab4fe865

BIN
Content_million.xlsx


+ 30 - 16
website/Areas/Millions/Views/Home/BuyTicket.cshtml

@@ -8,7 +8,7 @@
 @using LotteryWebApp.Common;
 
 @section Styles {
-    <link rel="stylesheet" href="/Millions/css/buy-ticket.css" />
+    <link rel="stylesheet" href="/Millions/css/buy-ticket.css" asp-append-version="true" />
     <style>
         /* BuyTicket has its own bottom bar; avoid global navbar padding gap */
         body.millions-bg { padding-bottom: 0 !important; }
@@ -39,7 +39,7 @@
             <div class="flex items-center justify-between">
             <div class="flex items-center gap-2 border border-[#E5E7EB] rounded-lg px-3 py-1.5 bg-gray-50">
                 <i class="fa-regular fa-calendar text-[[@themeColor]] text-sm" style="color: @themeColor"></i>
-                <span class="text-[12px] font-bold text-gray-700">@DateTime.Now.ToString("dddd, MMM dd, yyyy", System.Globalization.CultureInfo.CurrentCulture)</span>
+                <span class="text-[12px] font-bold text-gray-700">@DateTime.Now.ToString("dddd, MMM dd, yyyy", new System.Globalization.CultureInfo("en-US"))</span>
             </div>
             <div class="flex items-center gap-1 ml-4 flex-1 justify-end">
                 <span class="text-[12px] font-bold text-gray-400">@Lang.millions_round</span>
@@ -61,7 +61,7 @@
                             var dateStr = "--";
                             DateTime dt;
                             if (DateTime.TryParse(term.date_random, out dt)) {
-                                dateStr = dt.ToString("MMM dd", System.Globalization.CultureInfo.CurrentCulture);
+                                dateStr = dt.ToString("MMM dd", new System.Globalization.CultureInfo("en-US"));
                             }
                             
                             var resKey = rawResult;
@@ -228,7 +228,7 @@ else
         <div class="flex items-center justify-between">
         <div class="flex items-center gap-2 border border-[#E5E7EB] rounded-lg px-3 py-1.5 bg-gray-50">
             <i class="fa-regular fa-calendar text-[#0062FF] text-sm"></i>
-            <span class="text-[12px] font-bold text-gray-700">@DateTime.Now.ToString("dddd, MMM dd, yyyy", System.Globalization.CultureInfo.CurrentCulture)</span>
+            <span class="text-[12px] font-bold text-gray-700">@DateTime.Now.ToString("dddd, MMM dd, yyyy", new System.Globalization.CultureInfo("en-US"))</span>
         </div>
         <div class="flex items-center gap-1 ml-4 flex-1 justify-end">
             <span class="text-[12px] font-bold text-gray-400">@Lang.millions_round</span>
@@ -252,9 +252,10 @@ else
                         <div class="grid grid-cols-6 gap-y-2 gap-x-1 flex-1">
                             @for (int j = 0; j < (Model.termType == Constants.PIC10_BASIC_CODE ? 10 : (Model.termType == Constants.Millions_CODE ? 6 : 15)); j++)
                             {
+                                var isMbBall = Model.termType == Constants.Millions_CODE && j == 5;
                                 <div class="relative w-fit">
-                                    <div class="ball-circle ball-empty"></div>
-                                    @if (Model.termType == Constants.Millions_CODE && j == 5)
+                                    <div class="ball-circle ball-empty@(isMbBall ? " ball-mb-circle" : "")"></div>
+                                    @if (isMbBall)
                                     {
                                         <div class="absolute -bottom-[6px] -right-[4px] bg-[#FFD700] text-black text-[8.5px] font-black px-[2.5px] py-[1.5px] rounded-[3px] shadow-sm leading-none z-10 border border-[#EAA800]">MB</div>
                                     }
@@ -348,7 +349,7 @@ else
                       <div class="space-y-1">
                           <span class="text-[11px] font-black text-[#0062FF] block text-center uppercase tracking-tight">@Lang.date_purchase</span>
                           <div class="bg-white border border-gray-100 rounded-xl py-2.5 px-2 text-center font-black text-[11px] text-gray-700 shadow-sm">
-                              @DateTime.Now.ToString("dddd MMM dd, yyyy", System.Globalization.CultureInfo.CurrentCulture)
+                              @DateTime.Now.ToString("dddd MMM dd, yyyy", new System.Globalization.CultureInfo("en-US"))
                           </div>
                       </div>
                       <div class="space-y-1">
@@ -358,7 +359,7 @@ else
                                   DateTime drawDate;
                                   bool isValidDate = DateTime.TryParse(currentTerm?.date_end, out drawDate);
                                   if (isValidDate) {
-                                     @drawDate.ToString("dddd MMM dd, yyyy", System.Globalization.CultureInfo.CurrentCulture)
+                                     @drawDate.ToString("dddd MMM dd, yyyy", new System.Globalization.CultureInfo("en-US"))
                                   } else {
                                      @:N/A
                                   }
@@ -608,9 +609,13 @@ else
             updateSelectionCount(); 
             liveUpdateTicket();
 
-            // Focus card
+            // Focus card: append a tall spacer so even the last ticket can scroll up
+            // above the number-picker sheet (a flex column container does not honor
+            // padding-bottom as scrollable space), then bring the card to the top.
             if (activeTicketCard && activeTicketCard.length) {
                 var container = $("#ticketContainer");
+                $("#editScrollSpacer").remove();
+                container.append('<div id="editScrollSpacer" aria-hidden="true" style="height:100vh;flex-shrink:0;"></div>');
                 var scrollPos = activeTicketCard.offset().top - container.offset().top + container.scrollTop();
                 container.stop().animate({ scrollTop: scrollPos - 15 }, 500);
             }
@@ -886,6 +891,8 @@ else
             modal.find('.modal-content').removeClass('animate__zoomIn').addClass('animate__zoomOut');
             setTimeout(() => {
                 modal.removeClass('flex').addClass('hidden');
+                // Remove the temporary scroll spacer
+                $("#editScrollSpacer").remove();
                 // Reset state
                 activeBall = null;
                 activeTicketCard = null;
@@ -912,8 +919,9 @@ else
             var ballsHtml = '';
             var isMillions = @(Model.termType == Constants.Millions_CODE ? "true" : "false");
             for (var i = 0; i < maxBalls; i++) {
-                var mbIndicator = (isMillions && i === 5) ? '<div class="absolute -bottom-[6px] -right-[4px] bg-[#FFD700] text-black text-[8.5px] font-black px-[2.5px] py-[1.5px] rounded-[3px] shadow-sm leading-none z-10 border border-[#EAA800]">MB</div>' : '';
-                ballsHtml += '<div class="relative w-fit"><div class="ball-circle ball-empty"></div>' + mbIndicator + '</div>';
+                var isMbBall = isMillions && i === 5;
+                var mbIndicator = isMbBall ? '<div class="absolute -bottom-[6px] -right-[4px] bg-[#FFD700] text-black text-[8.5px] font-black px-[2.5px] py-[1.5px] rounded-[3px] shadow-sm leading-none z-10 border border-[#EAA800]">MB</div>' : '';
+                ballsHtml += '<div class="relative w-fit"><div class="ball-circle ball-empty' + (isMbBall ? ' ball-mb-circle' : '') + '"></div>' + mbIndicator + '</div>';
             }
 
             var ticketHtml = `
@@ -1054,11 +1062,17 @@ else
                 let contentHtml = '';
                 
                 if (numbers.length > 1) {
+                    const isMillionsGame = "@Model.termType" === "@Constants.Millions_CODE";
                     let numbersBalls = '';
-                    numbers.forEach(n => {
-                        numbersBalls += `<div class="w-7 h-7 rounded-full flex items-center justify-center text-white text-[11px] font-black shadow-[0_4px_10px_rgba(186,15,33,0.3)]" style="background: linear-gradient(135deg, #FF3D63 0%, #E3132D 60%, #BA0F21 100%); border: 1px solid rgba(255, 255, 255, 0.3); text-shadow: 0px 1px 2px rgba(0,0,0,0.1); transition: transform 0.2s;">${n.trim()}</div>`;
+                    numbers.forEach((n, ni) => {
+                        var isMbBall = isMillionsGame && ni === numbers.length - 1;
+                        var ballBg = isMbBall
+                            ? 'background: radial-gradient(circle at 50% 50%, #0062ff 0%, #0062ff 60%, #0149f0 75%, #0231e0 85%, #0218d1 92%, #0300c2 100%); box-shadow: inset 0 0 6px 2px rgba(0,24,209,0.5), 0 4px 10px rgba(2,24,209,0.3);'
+                            : 'background: linear-gradient(135deg, #FF3D63 0%, #E3132D 60%, #BA0F21 100%); box-shadow: 0 4px 10px rgba(186,15,33,0.3);';
+                        numbersBalls += `<div class="w-7 h-7 rounded-full flex items-center justify-center text-white text-[11px] font-black" style="${ballBg} border: 1px solid rgba(255, 255, 255, 0.3); text-shadow: 0px 1px 2px rgba(0,0,0,0.1); transition: transform 0.2s;">${n.trim()}</div>`;
                     });
-                    contentHtml = `<div class="grid grid-cols-5 gap-y-2 relative z-10 px-2 justify-items-center">${numbersBalls}</div>`;
+                    var summaryGridCols = isMillionsGame ? 'grid-cols-6' : 'grid-cols-5';
+                    contentHtml = `<div class="grid ${summaryGridCols} gap-y-2 gap-x-1 relative z-10 px-1 justify-items-center">${numbersBalls}</div>`;
                 } else {
                     const isBS = @(Model.termType == Constants.PIC10_BIGSMALL_CODE ? "true" : "false");
                     const isFirstChoice = (numbers[0] === 'B' || numbers[0] === 'O');
@@ -1428,14 +1442,14 @@ else
     <!-- Number Picker Modal (Refined Bottom Sheet) -->
     <div id="numberPickerModal" class="fixed inset-0 bg-black/10 z-[200] hidden items-end justify-center p-0 transition-all">
         <div class="modal-content bg-white w-full md:max-w-[414px] mx-auto shadow-2xl animate__animated animate__slideInUp animate__faster rounded-t-[20px] overflow-hidden">
-            <div class="px-4 py-3 bg-[#0062FF] text-white flex justify-between items-center relative">
+            <div class="px-4 py-1.5 bg-[#0062FF] text-white flex justify-between items-center relative">
                 <div class="flex flex-col">
                     <h3 class="font-black text-[15px] uppercase tracking-wide" id="modalTitle">@Lang.Pick_Number</h3>
                     <div class="selection-count-area">
                         <span class="text-[10px] font-bold text-white/80 uppercase">Selected: <span id="selectionCount" class="text-white">0</span>/<span id="maxSelectionCount">10</span></span>
                     </div>
                 </div>
-                <button onclick="closeNumberPicker()" class="w-9 h-9 flex items-center justify-center rounded-full bg-white/10 hover:bg-white/20 transition-all">
+                <button onclick="closeNumberPicker()" class="w-8 h-8 flex items-center justify-center rounded-full bg-white/10 hover:bg-white/20 transition-all">
                     <i class="fa-solid fa-xmark text-lg"></i>
                 </button>
             </div>

+ 1 - 1
website/Areas/Millions/Views/Home/GameHome.cshtml

@@ -100,7 +100,7 @@
                     <div>
                         <p class="text-xs text-[#797979]">@Lang.millions_jackpot_prize_to</p>
                         <p class="leading-none ">
-                            <span class="text-base font-extrabold text-[#002bff]">@Utils.FormatMoney(Model.bolet ?? "30000000")</span><span class="text-[10.32px] font-extrabold text-black align-top">@Lang.millions_htg</span>
+                            <span class="text-base font-extrabold text-[#002bff]">30.000.000</span><span class="text-[10.32px] font-extrabold text-black align-top">@Lang.millions_htg</span>
                         </p>
                     </div>
                 </div>

+ 2 - 2
website/Areas/Millions/Views/Home/JackpotDetail.cshtml

@@ -32,8 +32,8 @@
         && (DateTime.TryParseExact(rawDate, tryFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out drawDt)
             || DateTime.TryParse(rawDate, CultureInfo.InvariantCulture, DateTimeStyles.None, out drawDt)))
     {
-        drawDateFmt = drawDt.ToString("MMM dd, yyyy", CultureInfo.CurrentCulture);
-        drawDateLong = drawDt.ToString("dddd, MMM dd, yyyy", CultureInfo.CurrentCulture);
+        drawDateFmt = drawDt.ToString("MMM dd, yyyy", new CultureInfo("en-US"));
+        drawDateLong = drawDt.ToString("dddd, MMM dd, yyyy", new CultureInfo("en-US"));
         drawTime = drawDt.ToString("HH:mm");
     }
 

+ 1 - 1
website/Areas/Millions/Views/Home/JackpotResults.cshtml

@@ -197,7 +197,7 @@
                         if (!string.IsNullOrEmpty(term.date_random) &&
                             DateTime.TryParseExact(term.date_random, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out drawDt))
                         {
-                            dayOfWeek = drawDt.ToString("dddd", CultureInfo.CurrentCulture);
+                            dayOfWeek = drawDt.ToString("dddd", new CultureInfo("en-US"));
                             dayOfWeek = char.ToUpper(dayOfWeek[0]) + dayOfWeek.Substring(1);
                             datePart = drawDt.ToString("dd/MM/yyyy");
                             timePart = drawDt.ToString("HH:mm");

+ 2 - 2
website/Areas/Millions/Views/Home/TransferWinMoney.cshtml

@@ -259,8 +259,8 @@
                 </button>
             </div>
             <div id="failureModalUpgradeActions" class="transfer-success-actions is-hidden">
-                <button type="button" class="transfer-success-btn-close" onclick="window.location.href = (typeof subDomain !== 'undefined' ? subDomain : '') + '/Account/Login';">
-                    @Lang.login
+                <button type="button" class="transfer-success-btn-close" onclick="window.location.href = (typeof subDomain !== 'undefined' ? subDomain : '') + '@Url.Action("GameHome", "Home", new { area = "Millions" })';">
+                    @Lang.back_to_homepage
                 </button>
             </div>
         </div>

+ 2 - 2
website/Areas/Millions/Views/Home/_TermResultHistoryGrouped.cshtml

@@ -30,11 +30,11 @@
                 <!-- Date/Time Info Row -->
                 <div class="flex items-center gap-3 mb-1.5 bg-gray-50/50 p-2 rounded-2xl border border-gray-100/80 shadow-xs">
                     <div class="w-11 h-11 flex flex-col items-center justify-center bg-white rounded-xl shadow-xs border border-gray-100 shrink-0">
-                        <span class="text-[9px] font-bold text-gray-400 uppercase leading-none">@drawDate.ToString("MMM")</span>
+                        <span class="text-[9px] font-bold text-gray-400 uppercase leading-none">@drawDate.ToString("MMM", new System.Globalization.CultureInfo("en-US"))</span>
                         <span class="text-[18px] font-black text-[#0062FF] leading-none">@drawDate.ToString("dd")</span>
                     </div>
                     <div class="flex flex-col">
-                        <span class="text-[14px] font-black text-gray-800 leading-tight">@drawDate.ToString("dddd, MMM dd yyyy", System.Globalization.CultureInfo.CurrentCulture)</span>
+                        <span class="text-[14px] font-black text-gray-800 leading-tight">@drawDate.ToString("dddd, MMM dd yyyy", new System.Globalization.CultureInfo("en-US"))</span>
                         <div class="flex items-center gap-1.5 mt-0.5">
                             <i class="far fa-calendar-alt text-[11px] text-[#0062FF]"></i>
                             <span class="text-[11px] font-bold text-gray-400 uppercase tracking-tighter">@Lang.draw_date</span>

+ 2 - 2
website/Areas/Millions/Views/Home/_TermResultHistoryV2.cshtml

@@ -23,8 +23,8 @@
                 @{
                     DateTime drawDate;
                     if (DateTime.TryParse(item.date_random, out drawDate)) {
-                        <div class="day">@drawDate.ToString("dddd,", System.Globalization.CultureInfo.CurrentCulture)</div>
-                        <div class="date">@drawDate.ToString("MMM dd, yyyy", System.Globalization.CultureInfo.CurrentCulture)</div>
+                        <div class="day">@drawDate.ToString("dddd,", new System.Globalization.CultureInfo("en-US"))</div>
+                        <div class="date">@drawDate.ToString("MMM dd, yyyy", new System.Globalization.CultureInfo("en-US"))</div>
                     } else {
                         <div class="day">Draw Date:</div>
                         <div class="date">@item.date_random</div>

+ 20 - 0
website/wwwroot/Millions/css/buy-ticket.css

@@ -176,6 +176,26 @@
     box-shadow: 0 4px 8px rgba(186, 15, 33, 0.4) !important;
 }
 
+/* 6th ball = Mega Ball (MB) — always blue, never red */
+.ball-circle.ball-mb-circle.ball-empty {
+    background: #E9F1FF !important;
+    border: 1px solid #A9C6FF !important;
+}
+
+.ball-circle.ball-mb-circle.ball-filled {
+    background: radial-gradient(circle at 50% 50%,
+        #0062ff 0%,
+        #0062ff 60%,
+        #0149f0 75%,
+        #0231e0 85%,
+        #0218d1 92%,
+        #0300c2 100%) !important;
+    border: 1px solid rgba(255, 255, 255, 0.3) !important;
+    color: #ffffff !important;
+    box-shadow: inset 0 0 8px 3px rgba(0, 24, 209, 0.5),
+                0 4px 10px rgba(2, 24, 209, 0.3) !important;
+}
+
 .ticket-index {
     background-color: #00A3FF !important;
     border: 3px solid #ffffff !important;