| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- @model LotteryWebApp.Models.RewardHistoryModel
- @using LotteryWebApp.Languages
- @using LotteryWebApp.Common
- @functions {
- public string FormatMoney(string amount) {
- if (string.IsNullOrEmpty(amount)) return "0";
- var clean = new string(amount.Where(c => char.IsDigit(c)).ToArray());
- if (long.TryParse(clean, out long val)) {
- return val.ToString("#,##0", new System.Globalization.CultureInfo("vi-VN")).Replace(",", ".");
- }
- return amount;
- }
- public string FormatTime(string raw) {
- if (string.IsNullOrEmpty(raw)) return "-";
- string[] formats = { "M/d/yyyy h:mm:ss tt", "MM/dd/yyyy h:mm:ss tt", "dd/MM/yyyy HH:mm:ss", "yyyy-MM-dd HH:mm:ss" };
- if (System.DateTime.TryParseExact(raw, formats, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out var dt)
- || System.DateTime.TryParse(raw, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt)) {
- return dt.ToString("dd/MM/yyyy HH:mm", new System.Globalization.CultureInfo("en-US"));
- }
- return raw;
- }
- public (string cls, string label) MapStatus(string status) {
- switch (status) {
- case "1": return ("reward-status-success", "Success");
- case "0": return ("reward-status-processing", "Processing");
- case "2": return ("reward-status-pending", "Pending");
- case "3": return ("reward-status-reverted", "Reverted");
- default: return ("reward-status-unknown", string.IsNullOrEmpty(status) ? "-" : status);
- }
- }
- public string MapPayment(string channelPayment) {
- if (channelPayment == "1") return "Wallet";
- if (channelPayment == "0") return "Main Account";
- return "-";
- }
- }
- @if (Model != null && Model.list != null && Model.list.Count > 0)
- {
- foreach (var t in Model.list)
- {
- var (statusCls, statusLabel) = MapStatus(t.status);
- <div class="reward-card animate__animated animate__fadeInUp">
- <div class="reward-card-top">
- <div class="reward-card-header">
- <span class="reward-id">#@(t.seq ?? t.id ?? "-")</span>
- <span class="reward-status @statusCls">@statusLabel</span>
- </div>
- <div class="reward-amount-wrap">
- <span class="reward-amount">@FormatMoney(t.money)</span>
- <span class="reward-currency">HTG</span>
- </div>
- </div>
- <div class="reward-card-perforation"></div>
- <div class="reward-card-bottom">
- <div class="reward-info-grid">
- <div class="reward-info-row">
- <span class="reward-info-label">From</span>
- <span class="reward-info-value">@(string.IsNullOrEmpty(t.acountSend) ? "-" : t.acountSend)</span>
- </div>
- <div class="reward-info-row">
- <span class="reward-info-label">To</span>
- <span class="reward-info-value">@(string.IsNullOrEmpty(t.acountRecieve) ? "-" : t.acountRecieve)</span>
- </div>
- <div class="reward-info-row">
- <span class="reward-info-label">Time</span>
- <span class="reward-info-value">@FormatTime(t.timeRequest)</span>
- </div>
- <div class="reward-info-row">
- <span class="reward-info-label">Method</span>
- <span class="reward-info-value">@MapPayment(t.channelPayment)</span>
- </div>
- </div>
- </div>
- </div>
- }
- @if (!string.IsNullOrEmpty(Model.totalPage) && int.TryParse(Model.totalPage, out var total) && total > 1)
- {
- var seq = int.TryParse(Model.seqPage, out var s) ? s : 1;
- <div class="reward-pagination">
- <button onclick="changeRewardPage(currentSeqPage - 1)" class="reward-page-btn" id="prevPage" @(seq <= 1 ? "disabled" : "")>
- <i class="fas fa-chevron-left mr-1"></i> Prev
- </button>
- <div class="reward-page-indicator">
- <span class="reward-page-label">Page</span>
- <span class="reward-page-value" id="pageDisplay">@Model.seqPage / @Model.totalPage</span>
- </div>
- <button onclick="changeRewardPage(currentSeqPage + 1)" class="reward-page-btn" id="nextPage" @(seq >= total ? "disabled" : "")>
- Next <i class="fas fa-chevron-right ml-1"></i>
- </button>
- </div>
- <script>
- totalPages = parseInt('@Model.totalPage');
- </script>
- }
- else
- {
- <div class="w-full pb-32"></div>
- }
- }
- else
- {
- <div class="reward-empty">
- <i class="fa-solid fa-gift"></i>
- <p>@Lang.no_results_found</p>
- </div>
- }
|