History.cshtml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. @model SicboSub.Web.Models.HistoryViewModel
  2. @{
  3. Layout = "_GameLayout";
  4. var msisdn = ViewData["Msisdn"] as string;
  5. }
  6. @using SicboSub.Web.Language;
  7. @section Styles {
  8. <link rel="stylesheet" href="~/css/sicbo-history.css" />
  9. }
  10. <div class="home">
  11. <!-- Background Image -->
  12. <img class="image" src="~/img/image-2.png" />
  13. <!-- Reuse Game Menu -->
  14. <partial name="_GameMenu" />
  15. <!-- History Content Panel -->
  16. <div class="history-panel">
  17. <!-- Tab Buttons -->
  18. <div class="history-tabs">
  19. <div class="tab-button active" data-tab="game">
  20. <span class="tab-label">@Language.Game</span>
  21. </div>
  22. <div class="tab-button" data-tab="prize">
  23. <span class="tab-label">@Language.Prize</span>
  24. </div>
  25. <div class="tab-button" data-tab="purchase">
  26. <span class="tab-label">@Language.Purchase</span>
  27. </div>
  28. </div>
  29. <!-- Game History Table -->
  30. <div class="history-table" id="game-table">
  31. <!-- Header Row -->
  32. <div class="table-header">
  33. <div class="col-id">@Language.Msisdn</div>
  34. <div class="col-time">@Language.Time</div>
  35. <div class="col-coin">@Language.Coins</div>
  36. <div class="col-status">@Language.Status</div>
  37. </div>
  38. <!-- Data Rows -->
  39. @if (Model != null && Model.GameHistory != null && Model.GameHistory.Count > 0)
  40. {
  41. foreach (var item in Model.GameHistory)
  42. {
  43. <div class="table-row">
  44. <div class="col-id">@msisdn</div>
  45. <div class="col-time">@item.bettingTime.ToString("dd/MM/yyyy, HH:mm:ss")</div>
  46. @if (item.isWin)
  47. {
  48. <div class="col-coin positive">+@item.winCoin.ToString("N0")</div>
  49. <div class="col-status won">Won</div>
  50. }
  51. else
  52. {
  53. <div class="col-coin negative">-@item.bettingValue.ToString("N0")</div>
  54. <div class="col-status lost">Lost</div>
  55. }
  56. </div>
  57. }
  58. }
  59. else
  60. {
  61. <div class="table-row" style="justify-content:center;">
  62. <span></span>
  63. </div>
  64. }
  65. </div>
  66. <!-- Prize History Table (Hidden by default) -->
  67. <div class="history-table hidden" id="prize-table">
  68. <!-- Header Row -->
  69. <div class="table-header">
  70. <div class="col-account">@Language.Account</div>
  71. <div class="col-time">@Language.Time</div>
  72. <div class="col-value">@Language.Value</div>
  73. <div class="col-status">@Language.Rank</div>
  74. </div>
  75. <!-- Data Rows -->
  76. @if (Model != null && Model.PrizeHistory != null && Model.PrizeHistory.Count > 0)
  77. {
  78. foreach (var item in Model.PrizeHistory)
  79. {
  80. <div class="table-row">
  81. <div class="col-account">@msisdn</div>
  82. <div class="col-time">@item.rewardDate.ToString("dd/MM/yyyy, HH:mm:ss")</div>
  83. <div class="col-value">@item.rewardValue.ToString("N0") <span class="usd">@item.rewardUnit</span></div>
  84. <div class="col-status successful">Top @item.rankPosition</div>
  85. </div>
  86. }
  87. }
  88. else
  89. {
  90. <div class="table-row" style="justify-content:center;">
  91. <span></span>
  92. </div>
  93. }
  94. </div>
  95. <!-- Purchase History Table (Hidden by default) -->
  96. <div class="history-table hidden" id="purchase-table">
  97. <!-- Header Row -->
  98. <div class="table-header">
  99. <div class="col-no">No</div>
  100. <div class="col-time">@Language.Time</div>
  101. <div class="col-value">@Language.Price</div>
  102. <div class="col-type">@Language.Package</div>
  103. <div class="col-status">@Language.Status</div>
  104. </div>
  105. <!-- Data Rows -->
  106. @if (Model != null && Model.PurchaseHistory != null && Model.PurchaseHistory.Count > 0)
  107. {
  108. int no = 1;
  109. foreach (var item in Model.PurchaseHistory)
  110. {
  111. <div class="table-row">
  112. <div class="col-no">@(no++)</div>
  113. <div class="col-time">@item.registerTime.ToString("dd/MM/yyyy HH:mm:ss")</div>
  114. <div class="col-value">@item.serviceId.ToString("N0") <span class="coins">@Language.HTG</span></div>
  115. <div class="col-type">@item.productName</div>
  116. @if (item.status == 1) // Assuming 1 is Success
  117. {
  118. <div class="col-status successful">@Language.Success</div>
  119. }
  120. else
  121. {
  122. <div class="col-status fail">@Language.Failed</div>
  123. }
  124. </div>
  125. }
  126. }
  127. else
  128. {
  129. <div class="table-row" style="justify-content:center;">
  130. <span></span>
  131. </div>
  132. }
  133. </div>
  134. </div>
  135. </div>
  136. <script>
  137. document.querySelectorAll('.tab-button').forEach(button => {
  138. button.addEventListener('click', function() {
  139. // Remove active from all tabs
  140. document.querySelectorAll('.tab-button').forEach(btn => btn.classList.remove('active'));
  141. // Add active to clicked tab
  142. this.classList.add('active');
  143. // Hide all tables
  144. document.getElementById('game-table').classList.add('hidden');
  145. document.getElementById('prize-table').classList.add('hidden');
  146. document.getElementById('purchase-table').classList.add('hidden');
  147. // Show selected table
  148. const tab = this.dataset.tab;
  149. document.getElementById(tab + '-table').classList.remove('hidden');
  150. });
  151. });
  152. </script>