Results.cshtml 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. @{
  2. ViewBag.Title = "Lucky Power Results";
  3. Layout = "~/Views/Shared/_Layout.cshtml";
  4. }
  5. @using SuperAdmin.Models;
  6. @using SuperAdmin.Models.Http;
  7. @using SuperAdmin.Controllers;
  8. @using SuperAdmin.Source;
  9. @model ExportGetListRes
  10. @{
  11. string gameId = ViewBag.gameId;
  12. }
  13. <style>
  14. img {
  15. max-width: 100%;
  16. }
  17. </style>
  18. <input type="hidden" value="@gameId" id="gameId" />
  19. <div class="content-header row">
  20. <div class="content-header-left col-md-6 col-xs-12 mb-1">
  21. <h2 class="content-header-title">Results @(gameId== LumilotoUtils.GameIds.LUCKY_POWER ? "Lucky Power" : gameId == LumilotoUtils.GameIds.LUCKY_DAY ? "Lucky Day" : "Lucky Plus")</h2>
  22. </div>
  23. <div class="content-header-right breadcrumbs-right breadcrumbs-top col-md-6 col-xs-12">
  24. <div class="breadcrumb-wrapper col-xs-12">
  25. <ol class="breadcrumb">
  26. <li class="breadcrumb-item">
  27. <a href="/Admin/Index">Admin</a>
  28. </li>
  29. <li class="breadcrumb-item">
  30. <a href="#">Results</a>
  31. </li>
  32. </ol>
  33. </div>
  34. </div>
  35. </div>
  36. <div class="content-body">
  37. <!-- Basic form layout section start -->
  38. <section id="basic-form-layouts">
  39. <div class="row service-height">
  40. <div class="col-md-12">
  41. <div class="card">
  42. <div class="card-header">
  43. <h4 class="card-title" id="basic-layout-form">Search</h4>
  44. <a class="heading-elements-toggle"><i class="icon-ellipsis font-medium-3"></i></a>
  45. <div class="heading-elements">
  46. <ul class="list-inline mb-0">
  47. <li><a data-action="collapse"><i class="icon-minus4"></i></a></li>
  48. <li><a data-action="expand"><i class="icon-expand2"></i></a></li>
  49. </ul>
  50. </div>
  51. </div>
  52. <div class="card-content collapse show">
  53. <div class="card-body">
  54. <div class="card-block">
  55. <div class="form-body">
  56. @Html.AntiForgeryToken()
  57. <div class="row">
  58. <div class="col-md-3 col-sm-4 col-6">
  59. <div class="form-group">
  60. <label>From Date</label>
  61. <div class='input-group'>
  62. <input type="text" class="form-control fromDate" id="fromDateSearch" name="fromDateSearch">
  63. </div>
  64. </div>
  65. </div>
  66. <div class="col-md-3 col-sm-4 col-6">
  67. <div class="form-group">
  68. <label>To date</label>
  69. <div class='input-group'>
  70. <input type="text" class="form-control toDate" id="toDateSearch" name="toDateSearch">
  71. </div>
  72. </div>
  73. </div>
  74. @if (gameId == LumilotoUtils.GameIds.LUCKY_POWER)
  75. {
  76. <div class="col-md-3 col-sm-4 col-6">
  77. <div class="form-group">
  78. <label>Status</label>
  79. <select class="form-control" id="statusSearch" name="statusSearch">
  80. <option value="-1" selected>-- All --</option>
  81. <option value="@LumilotoUtils.GetTermStatus.available">Opening for ticket</option>
  82. <option value="@LumilotoUtils.GetTermStatus.waitResult,@LumilotoUtils.GetTermStatus.rejected">Need submit result</option>
  83. <option value="@LumilotoUtils.GetTermStatus.waitApproved">Wait for approving result</option>
  84. <option value="@LumilotoUtils.GetTermStatus.accepted">Result accepted</option>
  85. <option value="@LumilotoUtils.GetTermStatus.rejected">Result rejected</option>
  86. </select>
  87. </div>
  88. </div>
  89. }
  90. </div>
  91. <div class="row">
  92. <div class="col-md-12">
  93. <button type="button" class="btn btn-primary" onclick="search()" id="btnSearch">
  94. <i class="icon-search"></i> Search
  95. </button>
  96. <button type="button" class="btn btn-warning" onclick="exportData()" id="btnExport">
  97. <i class="icon-call-out"></i> Export
  98. </button>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. <div class="col-12">
  108. <div class="card">
  109. <div class="card-content">
  110. <div class="col-md-12 table-responsive" style="padding-top: 10px">
  111. @Html.Partial("_Result" + gameId, Model)
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. </section>
  118. <!-- // Basic form layout section end -->
  119. </div>
  120. <div class="modal fade text-xs-left" id="modal-add-service" tabindex="-1" role="dialog" aria-labelledby="myModalLabel17" style="display: none;" aria-hidden="true">
  121. <div class="modal-dialog modal-lg" role="document">
  122. <div class="modal-content">
  123. <div class="modal-header">
  124. <h4 class="modal-title" id="modalLabelService">Lucky Power Result Information</h4>
  125. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  126. <span aria-hidden="true">×</span>
  127. </button>
  128. </div>
  129. <input type="hidden" id="id" />
  130. <div class="modal-body">
  131. <div class="row" id="div-info">
  132. <div class="col-md-6">
  133. <div class="form-group">
  134. <label for="wsName">Game</label>
  135. <select class="form-control" id="gameId" name="gameId">
  136. <option value="@LumilotoUtils.GameIds.LUCKY_POWER" selected>Lucky Power</option>
  137. </select>
  138. </div>
  139. </div>
  140. <div class="col-md-6">
  141. <div class="form-group">
  142. <label for="date">Date Submit</label>
  143. <input type="text" class="form-control fromDateTime" id="date" name="date" autocomplete="off" readonly>
  144. </div>
  145. </div>
  146. <div class="col-md-6">
  147. <div class="form-group">
  148. <label for="wsdl">Term</label>
  149. <select type="text" class="form-control" id="randomId" name="randomId" onchange="selectTerm();"></select>
  150. <input type="text" class="form-control" id="randomIdValue" name="randomIdValue" readonly />
  151. </div>
  152. </div>
  153. <div class="col-md-6">
  154. <div class="form-group">
  155. <label for="date">Date Start Term</label>
  156. <input type="text" class="form-control fromDateTime" id="dateStart" name="dateStart" autocomplete="off" readonly>
  157. </div>
  158. </div>
  159. <div class="col-md-6">
  160. <div class="form-group">
  161. <label for="date">Date End Term</label>
  162. <input type="text" class="form-control fromDateTime" id="dateEnd" name="dateEnd" autocomplete="off" readonly>
  163. </div>
  164. </div>
  165. <div class="col-md-6">
  166. <div class="form-group">
  167. <label for="date">Date Result Term</label>
  168. <input type="text" class="form-control fromDateTime" id="dateRandom" name="dateRandom" autocomplete="off" readonly>
  169. </div>
  170. </div>
  171. <div class="col-md-6">
  172. <div class="form-group">
  173. <label for="wsdl">Status</label>
  174. <select class="form-control" type="text" id="status" name="status" disabled>
  175. <option value="@LumilotoUtils.GetTermStatus.available">Opening for ticket</option>
  176. <option value="@LumilotoUtils.GetTermStatus.waitResult">Need submit result</option>
  177. <option value="@LumilotoUtils.GetTermStatus.waitApproved">Wait for approving result</option>
  178. <option value="@LumilotoUtils.GetTermStatus.accepted">Result accepted</option>
  179. <option value="@LumilotoUtils.GetTermStatus.rejected">Result rejected</option>
  180. </select>
  181. </div>
  182. </div>
  183. <div class="col-md-12" id="div-result">
  184. <div class="form-group">
  185. <label for="wsdl">Result</label>
  186. <input type="hidden" name="result" id="result" />
  187. <div class="input-group">
  188. @for (int i = 0; i < 6; i++)
  189. {
  190. <input type="number" class="form-control text-primary" id="result-@i" name="result-@i" max="55" maxlength="2" min="0">
  191. }
  192. <input type="number" class="form-control text-danger" id="result-6" name="result-6" max="55" maxlength="2" min="0" />
  193. </div>
  194. </div>
  195. </div>
  196. </div>
  197. <div class="row" id="div-action">
  198. <div class="col-12">
  199. <button type="button" id="btnAddUpdate" class="btn btn-outline-primary" onclick="addUpdateAction()">Submit result</button>
  200. <button type="button" class="btn grey btn-outline-secondary" data-dismiss="modal">Close</button>
  201. </div>
  202. </div>
  203. <div class="row" id="div-approve">
  204. @if (!BaseController.UsingVsa() || ViewBag.Role == BaseController.RoleAdminSale)
  205. {
  206. <div class="col-md-12">
  207. <div class="form-group">
  208. <label for="wsdl">Note</label>
  209. <input type="text" class="form-control" id="note" name="note" autocomplete="off">
  210. </div>
  211. </div>
  212. <div class="col-md-12">
  213. <button type="button" id="btnApprove" class="btn btn-outline-success" onclick="approve()">Approve</button>
  214. <button type="button" id="btnReject" class="btn btn-outline-danger" onclick="reject()">Reject</button>
  215. <button type="button" class="btn grey btn-outline-secondary" data-dismiss="modal">Close</button>
  216. </div>
  217. }
  218. </div>
  219. <div class="row">
  220. <div class="col-12" style="padding-top: 10px">
  221. Change history
  222. </div>
  223. <div class="col-12" style="padding-top: 10px">
  224. @Html.Partial("_ResultHis")
  225. </div>
  226. </div>
  227. </div>
  228. <div class="modal-footer">
  229. @*<button type="button" class="btn grey btn-outline-secondary" data-dismiss="modal">Close</button>
  230. <button type="button" id="btnAdd" class="btn btn-outline-primary" onclick="addUpdateAction()">Add</button>
  231. <button type="button" id="btnUpdate" class="btn btn-outline-primary" onclick="addUpdateAction()">Save Info</button>*@
  232. </div>
  233. </div>
  234. </div>
  235. </div>
  236. @section Scripts {
  237. <script>
  238. $(document).ready(function () {
  239. $(".fromDate").datetimepicker({
  240. format: "DD/MM/YYYY",
  241. defaultDate: moment().add(-30, 'days')
  242. });
  243. $(".toDate").datetimepicker({
  244. format: "DD/MM/YYYY",
  245. defaultDate: moment().endOf('day')
  246. });
  247. $(".fromDateTime").datetimepicker({
  248. format: "DD/MM/YYYY HH:mm:ss",
  249. defaultDate: moment().add(-30, 'days')
  250. });
  251. $(".toDateTime").datetimepicker({
  252. format: "DD/MM/YYYY HH:mm:ss",
  253. defaultDate: moment().endOf('day')
  254. });
  255. search();
  256. });
  257. var tableReq;
  258. var tableDetail;
  259. function resetTableReq() {
  260. tableReq = $("#grid").DataTable({});
  261. }
  262. function resetTableDetail() {
  263. tableDetail = $("#grid_his").DataTable({
  264. paging: 0,
  265. searching: false,
  266. search: false
  267. });
  268. }
  269. function clearTable(table) {
  270. if (table != null && table != undefined) {
  271. table
  272. .clear()
  273. .destroy();
  274. }
  275. }
  276. resetTableReq();
  277. resetTableDetail();
  278. // result terms
  279. function search() {
  280. console.log("Search");
  281. startSpinner('btnSearch');
  282. clearTable(tableReq);
  283. var gameId = $("#gameId").val();
  284. $.ajax({
  285. url: "/Admin/ResultsSearch",
  286. data: {
  287. fromDate: $("#fromDateSearch").val(),
  288. toDate: $("#toDateSearch").val(),
  289. gameId: gameId,
  290. status: $("#statusSearch").val()
  291. },
  292. type: "POST",
  293. success: function (data) {
  294. stopSpinner('btnSearch');
  295. console.log(data);
  296. if (data.error != "0" && data.error != "1") {
  297. showModal('message-dialog');
  298. $('#message-content').html(data.content.split("\n").join("<br />"));
  299. } else {
  300. updateGridData(data.data.listTerm);
  301. resetTableReq();
  302. }
  303. },
  304. error: function (data) {
  305. stopSpinner('btnSearch');
  306. console.log(data.error);
  307. }
  308. })
  309. }
  310. function addUpdateAction() {
  311. // Checking whether FormData is available in browser
  312. if (window.FormData !== undefined) {
  313. var result = $("#result-0").val() + "$" + $("#result-1").val() + "$" + $("#result-2").val() + "$" + $("#result-3").val() + "$" + $("#result-4").val()
  314. + "$" + $("#result-5").val() + "|" + $("#result-6").val();
  315. // Create FormData object
  316. var formData = new FormData();
  317. // Adding one more key to FormData object
  318. formData.append('id', $("#id").val());
  319. formData.append('randomId', $("#id").val());
  320. formData.append('result', result);
  321. formData.append('note', $("#note").val());
  322. formData.append('action', "0");
  323. $.ajax({
  324. url: '/Admin/ResultsAddUpdate',
  325. type: "POST",
  326. contentType: false, // Not to set any content header
  327. processData: false, // Not to process data
  328. data: formData,
  329. success: function (result) {
  330. console.log("result: ");
  331. console.log(result);
  332. if (result.error == '0') {
  333. Swal.fire("Success!", "Success!", "success").
  334. then((result) => {
  335. hideModal("modal-add-service");
  336. search();
  337. });
  338. } else {
  339. Swal.fire("Failed!", result.content, "error");
  340. //alert('Import failed: ' + result.content);
  341. }
  342. },
  343. error: function (err) {
  344. Swal.fire("Failed!", err.statusText, "error");
  345. //alert(err.statusText);
  346. }
  347. });
  348. } else {
  349. Swal.fire("Failed!", "FormData is not supported.", "error");
  350. //alert("FormData is not supported.");
  351. }
  352. }
  353. function add() {
  354. // clear data
  355. $("#id").val("");
  356. $("#date").val("");
  357. $("#note").val("");
  358. $("#status").val("@LumilotoUtils.LuckyPowerResultStatus.waitApprove");
  359. $("#result").val("");
  360. $("#result-0").val("");
  361. $("#result-1").val("");
  362. $("#result-2").val("");
  363. $("#result-3").val("");
  364. $("#result-4").val("");
  365. $("#result-5").val("");
  366. $("#result-6").val("");
  367. $("#randomIdValue").hide();
  368. // button
  369. $("#btnAddUpdate").show();
  370. // div
  371. $("#div-approve").hide();
  372. $("#grid_his").hide();
  373. // clear table
  374. clearTable(tableDetail);
  375. // load term need result
  376. loadTermNeedResult();
  377. // show modal
  378. showModal("modal-add-service");
  379. }
  380. function edit(id) {
  381. console.log(id);
  382. $("#btnApprove").hide();
  383. $("#btnReject").hide();
  384. $("#randomId").hide();
  385. // div
  386. $("#div-action").hide();
  387. $("#div-approve").hide();
  388. $("#div-result").show();
  389. //
  390. $("#result").val("");
  391. $("#result-0").val("");
  392. $("#result-1").val("");
  393. $("#result-2").val("");
  394. $("#result-3").val("");
  395. $("#result-4").val("");
  396. $("#result-5").val("");
  397. $("#result-6").val("");
  398. // get service info
  399. $.ajax({
  400. url: "/Admin/ResultsGetById",
  401. data: {
  402. id: id
  403. },
  404. type: "POST",
  405. success: function (data) {
  406. console.log(data);
  407. if (data.error != "0" && data.error != "1") {
  408. setTimeout(function () {
  409. showModal('message-dialog');
  410. $('#message-content').html(data.content.split("\n").join("<br />"));
  411. }, 1000);
  412. } else {
  413. var customer = data.data;
  414. console.log(customer);
  415. // change data
  416. $("#id").val(id);
  417. $("#randomIdValue").val(id);
  418. $("#date").val(customer.date);
  419. $("#gameId").val(customer.gameId);
  420. $("#status").val(customer.status);
  421. $("#result").val(customer.result);
  422. $("#note").val(customer.note);
  423. $("#dateStart").val(customer.date_start);
  424. $("#dateEnd").val(customer.date_end);
  425. $("#dateRandom").val(customer.date_random);
  426. // check status
  427. if (customer.status == @LumilotoUtils.GetTermStatus.available) {
  428. $("#div-result").hide();
  429. } else if (customer.status == @LumilotoUtils.GetTermStatus.waitResult || customer.status == @LumilotoUtils.GetTermStatus.rejected) {
  430. $("#div-action").show();
  431. } else if (customer.status == @LumilotoUtils.GetTermStatus.waitApproved) {
  432. $("#div-approve").show();
  433. $("#btnApprove").show();
  434. $("#btnReject").show();
  435. }
  436. // result
  437. var rs = customer.result.split("|");
  438. var rs2 = rs[0].split("$");
  439. rs2.forEach(function (item, index) {
  440. console.log(index);
  441. $("#result-" + index).val(rs2[index]);
  442. });
  443. $("#result-6").val(rs[1]);
  444. viewData();
  445. // show modal
  446. showModal("modal-add-service");
  447. }
  448. },
  449. error: function (data) {
  450. console.log(data.error);
  451. }
  452. })
  453. }
  454. function updateStatus(status) {
  455. var id = $("#id").val();
  456. console.log(id);
  457. // get service info
  458. $.ajax({
  459. url: "/Admin/ResultsUpdateStatus",
  460. data: {
  461. randomId: id,
  462. action: status,
  463. note: $("#note").val()
  464. },
  465. type: "POST",
  466. success: function (data) {
  467. console.log(data);
  468. if (data.error != "0") {
  469. Swal.fire('Error!', data.content, 'error');
  470. } else {
  471. if (status == '@LumilotoUtils.LuckyPowerResultStatus.rejected') {
  472. Swal.fire('Result rejected!', '', 'success').then((result) => {
  473. hideModal("modal-add-service");
  474. search();
  475. });
  476. } else if (status == '@LumilotoUtils.LuckyPowerResultStatus.approved') {
  477. Swal.fire('Result approved!', '', 'success').then((result) => {
  478. hideModal("modal-add-service");
  479. search();
  480. });
  481. }
  482. }
  483. },
  484. error: function (data) {
  485. console.log(data.error);
  486. }
  487. })
  488. }
  489. function updateGridData(val) {
  490. console.log(val);
  491. $("#gridbody").html("");
  492. var html = "";
  493. var gameId = $("#gameId").val();
  494. if (val != undefined) {
  495. if (gameId == "@LumilotoUtils.GameIds.LUCKY_POWER") {
  496. for (var i = 0; i < val.length; i++) {
  497. var service = val[i];
  498. html += "<tr>";
  499. html += "<td scope='row'>" + (i + 1) + "</td>";
  500. html += "<td class='text-center'><span class='fa fa-edit cursor-pointer' onclick='edit(\"" + service.id + "\")'></span></td >";
  501. html += "<td class='text-left'>" + GetGameName(service.gameId) + "</td>";
  502. html += "<td class='text-left'>" + service.date_end + "</td>";
  503. html += "<td class='text-left'>" + service.id + "</td>";
  504. html += "<td class='text-left'>" + LuckyPowerResultVisible(service.result) + "</td>";
  505. html += "<td class='text-center'>" + GetStatusResultName(service.status) + "</td>";
  506. html += "</tr>";
  507. }
  508. } else if (gameId == "@LumilotoUtils.GameIds.LUCKY_DAY") {
  509. for (var i = 0; i < val.length; i++) {
  510. var service = val[i];
  511. html += "<tr>";
  512. html += "<td scope='row'>" + (i + 1) + "</td>";
  513. html += "<td class='text-left'>" + GetGameName(service.gameId) + "</td>";
  514. html += "<td class='text-left'>" + service.date_end + "</td>";
  515. html += "<td class='text-left'>" + service.id + "</td>";
  516. html += "<td class='text-left'>" + LuckyDayResultVisible(service.result) + "</td>";
  517. html += "</tr>";
  518. }
  519. } else {
  520. // lucky plus
  521. for (var i = 0; i < val.length; i++) {
  522. var service = val[i];
  523. html += "<tr>";
  524. html += "<td scope='row'>" + (i + 1) + "</td>";
  525. html += "<td class='text-left'>" + GetGameName(service.gameId) + "</td>";
  526. html += "<td class='text-left'>" + service.date_end + "</td>";
  527. html += "<td class='text-left'>" + service.id + "</td>";
  528. html += "<td class='text-left'>" + LuckyPlusResultVisible(service.result) + "</td>";
  529. html += "</tr>";
  530. }
  531. }
  532. }
  533. $("#gridbody").html(html);
  534. }
  535. function reject() {
  536. Swal.fire({
  537. title: 'Do you want to reject this result?',
  538. showDenyButton: false,
  539. showCancelButton: true,
  540. confirmButtonText: `Yes`,
  541. denyButtonText: `No`,
  542. }).then((result) => {
  543. /* Read more about isConfirmed, isDenied below */
  544. if (result.isConfirmed) {
  545. //Swal.fire('Saved!', '', 'success')
  546. updateStatus('@LumilotoUtils.LuckyPowerResultStatus.rejected');
  547. //edit($("#id").val());
  548. //Swal.fire('Data deleted!', '', 'success')
  549. } else if (result.isDenied) {
  550. //Swal.fire('Changes are not saved', '', 'info')
  551. }
  552. })
  553. }
  554. function approve() {
  555. Swal.fire({
  556. title: 'Do you want to approve this result?',
  557. showDenyButton: false,
  558. showCancelButton: true,
  559. confirmButtonText: `Yes`,
  560. denyButtonText: `No`,
  561. }).then((result) => {
  562. /* Read more about isConfirmed, isDenied below */
  563. if (result.isConfirmed) {
  564. //Swal.fire('Saved!', '', 'success')
  565. updateStatus('@LumilotoUtils.LuckyPowerResultStatus.approved');
  566. //edit($("#id").val());
  567. //Swal.fire('Data deleted!', '', 'success')
  568. } else if (result.isDenied) {
  569. //Swal.fire('Changes are not saved', '', 'info')
  570. }
  571. })
  572. }
  573. function exportData() {
  574. var gameId = $("#gameId").val();
  575. console.log(gameId);
  576. // get service info
  577. $.ajax({
  578. url: "/Admin/ResultsExport",
  579. data: {
  580. fromDate: $("#fromDateSearch").val(),
  581. toDate: $("#toDateSearch").val(),
  582. gameId: gameId,
  583. status: $("#statusSearch").val()
  584. },
  585. type: "POST",
  586. xhr: function () {
  587. var xhr = new XMLHttpRequest();
  588. xhr.onreadystatechange = function () {
  589. if (xhr.readyState == 2) {
  590. if (xhr.status == 200) {
  591. xhr.responseType = "blob";
  592. console.log("blob");
  593. } else {
  594. xhr.responseType = "text";
  595. console.log("text");
  596. }
  597. }
  598. };
  599. return xhr;
  600. },
  601. success: function (data, status, xhr) {
  602. let filename = "";
  603. let disposition = xhr.getResponseHeader('Content-Disposition');
  604. if (disposition && disposition.indexOf('attachment') !== -1) {
  605. let filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
  606. let matches = filenameRegex.exec(disposition);
  607. if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
  608. }
  609. let a = document.createElement('a');
  610. let url = window.URL.createObjectURL(data);
  611. a.href = url;
  612. a.download = filename.replace('UTF-8', '');;
  613. document.body.append(a);
  614. a.click();
  615. a.remove();
  616. window.URL.revokeObjectURL(url);
  617. $("#overlay").fadeOut(300);
  618. },
  619. error: function (data) {
  620. console.log(data.error);
  621. }
  622. })
  623. }
  624. </script>
  625. <script>
  626. function loadTermNeedResult() {
  627. console.log("loadTermNeedResult");
  628. $("$randomId").html("");
  629. $.ajax({
  630. url: "/Admin/ResultsSearch",
  631. data: {
  632. gameId: "1",
  633. status: "2,4",
  634. rowsOnPage: "1000",
  635. seqPage: "1"
  636. },
  637. type: "POST",
  638. success: function (data) {
  639. console.log(data);
  640. if (data.error != "0" && data.error != "1") {
  641. showModal('message-dialog');
  642. $('#message-content').html(data.content.split("\n").join("<br />"));
  643. } else {
  644. if (data.data.listTerm != null) {
  645. var listTerm = data.data.listTerm;
  646. for (let i = 0; i < listTerm; i++) {
  647. $("#randomId").html.append('<option value="' + listTerm[i].randomId + (i == 0 ? ' selected' : '') + '">' + listTerm[i].randomId + '</option>');
  648. }
  649. }
  650. }
  651. },
  652. error: function (data) {
  653. stopSpinner('btnSearch');
  654. console.log(data.error);
  655. }
  656. })
  657. }
  658. function viewData() {
  659. console.log("Search his");
  660. var randomId = $("#id").val();
  661. console.log("randomId " + randomId);
  662. clearTable(tableDetail);
  663. $.ajax({
  664. url: "/Admin/ResultsHistoryLoad",
  665. data: {
  666. randomId: randomId
  667. },
  668. type: "POST",
  669. success: function (data) {
  670. console.log(data);
  671. if (data.error != "0" && data.error != "1") {
  672. showModal('message-dialog');
  673. $('#message-content').html(data.content.split("\n").join("<br />"));
  674. } else {
  675. updateGridDataDetail(data.data.listHis);
  676. resetTableDetail();
  677. }
  678. },
  679. error: function (data) {
  680. console.log(data.error);
  681. }
  682. })
  683. }
  684. function updateGridDataDetail(val) {
  685. console.log(val);
  686. $("#gridbody_his").html("");
  687. var html = "";
  688. if (val != undefined) {
  689. for (var i = 0; i < val.length; i++) {
  690. var service = val[i];
  691. html += "<tr>";
  692. html += "<td scope='row'>" + (i + 1) + "</td>";
  693. html += "<td class='text-left'>" + service.date + "</td>";
  694. //html += "<td class='text-left'>" + service.randomId + "</td>";
  695. html += "<td class='text-left'>" + LuckyPowerResultVisible(service.result) + "</td>";
  696. html += "<td class='text-left'>" + service.usersName + "</td>";
  697. html += "<td class='text-left'>" + service.action + "</td>";
  698. html += "<td class='text-left'>" + service.note + "</td>";
  699. html += "</tr>";
  700. }
  701. }
  702. $("#gridbody_his").html(html);
  703. }
  704. </script>
  705. }