|
@@ -0,0 +1,1775 @@
|
|
|
|
|
+using ClosedXML.Excel;
|
|
|
|
|
+using DocumentFormat.OpenXml.Drawing.Spreadsheet;
|
|
|
|
|
+using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
|
|
+using Microsoft.AspNetCore.Hosting;
|
|
|
|
|
+using Microsoft.AspNetCore.Http;
|
|
|
|
|
+using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
+using Microsoft.Extensions.Configuration;
|
|
|
|
|
+using OfficeOpenXml;
|
|
|
|
|
+using SuperAdmin.Models.Http;
|
|
|
|
|
+using SuperAdmin.Models.Object;
|
|
|
|
|
+using SuperAdmin.Source;
|
|
|
|
|
+using SuperCms.Extensions;
|
|
|
|
|
+using System;
|
|
|
|
|
+using System.Collections.Generic;
|
|
|
|
|
+using System.IO;
|
|
|
|
|
+using System.Linq;
|
|
|
|
|
+using System.Threading.Tasks;
|
|
|
|
|
+
|
|
|
|
|
+namespace SuperAdmin.Controllers
|
|
|
|
|
+{
|
|
|
|
|
+ public class AdminController : BaseController
|
|
|
|
|
+ {
|
|
|
|
|
+ private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
|
|
|
|
|
+
|
|
|
|
|
+ public AdminController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment) : base(_configuration, hostEnvironment)
|
|
|
|
|
+ {
|
|
|
|
|
+ // init
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult Index(String fromDate, String toDate)
|
|
|
|
|
+ {
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ //return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ UserRoles vsa = HttpContext.Session.GetComplexData<UserRoles>("userInfo");
|
|
|
|
|
+ //var listMenu = new List<String>();
|
|
|
|
|
+ if (vsa != null && vsa.function != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ var listObj = vsa.function;
|
|
|
|
|
+ foreach (Function obj in listObj)
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + obj.link);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+ fromDate = fromDate ?? DateTime.Now.AddDays(-15).ToString("dd/MM/yyyy");
|
|
|
|
|
+ toDate = toDate ?? DateTime.Now.ToString("dd/MM/yyyy");
|
|
|
|
|
+ //DashboardModel model = LoadDashboard(fromDate, toDate);
|
|
|
|
|
+ //model.fromDate = fromDate;
|
|
|
|
|
+ //model.toDate = toDate;
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ log.Error("Error admin index: " + ex.Message, ex);
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // RESULT LUCKY_POWER UPDATE
|
|
|
|
|
+ public IActionResult Results()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public JsonResult ResultsGetById(string id)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ //ExportGetListRes res = HttpContext.Session.GetComplexData<ExportGetListRes>("ExportGetListRes");
|
|
|
|
|
+
|
|
|
|
|
+ TermGetListReq req = new TermGetListReq();
|
|
|
|
|
+ req.rowsOnPage = "1";
|
|
|
|
|
+ req.seqPage = "1";
|
|
|
|
|
+ req.id = id;
|
|
|
|
|
+ req.gameId = "-2";
|
|
|
|
|
+ string result = SendPost(req, GetParameter(LumilotoUtils.WsType.TermResult));
|
|
|
|
|
+ TermGetListRes res = TermGetListRes.Parse(result);
|
|
|
|
|
+
|
|
|
|
|
+ if (res != null && res.listTerm != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "0",
|
|
|
|
|
+ data = res.listTerm[0]
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "1",
|
|
|
|
|
+ content = "Not found"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public JsonResult ResultsGet(TermGetListReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ //string account = HttpContext.Session.GetString("account");
|
|
|
|
|
+ //req.usersName = account;
|
|
|
|
|
+ req.rowsOnPage = "1000000";
|
|
|
|
|
+ req.seqPage = "1";
|
|
|
|
|
+ req.order = "desc";
|
|
|
|
|
+ //req.type = "1"; // already result
|
|
|
|
|
+
|
|
|
|
|
+ String url = GetParameter(LumilotoUtils.WsType.TermResult);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ TermGetListRes res = TermGetListRes.Parse(result);
|
|
|
|
|
+ //HttpContext.Session.SetComplexData("ExportGetListRes", res);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage,
|
|
|
|
|
+ data = res
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ResultsSearch(TermGetListReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ //string account = HttpContext.Session.GetString("account");
|
|
|
|
|
+ //req.usersName = account;
|
|
|
|
|
+ req.rowsOnPage = "1000000";
|
|
|
|
|
+ req.seqPage = "1";
|
|
|
|
|
+ req.order = "desc";
|
|
|
|
|
+ //req.type = "1"; // already result
|
|
|
|
|
+
|
|
|
|
|
+ String url = GetParameter(LumilotoUtils.WsType.TermResult);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ TermGetListRes res = TermGetListRes.Parse(result);
|
|
|
|
|
+ //HttpContext.Session.SetComplexData("ExportGetListRes", res);
|
|
|
|
|
+ return PartialView("./_Result", res);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public JsonResult ResultsAddUpdate(ResultsUpdateReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ string account = HttpContext.Session.GetString("account");
|
|
|
|
|
+ req.users = account;
|
|
|
|
|
+ String formatedRs = "";
|
|
|
|
|
+ // format number
|
|
|
|
|
+ //if (!validPowerResult(req.result, out formatedRs))
|
|
|
|
|
+ //{
|
|
|
|
|
+ // return Json(new
|
|
|
|
|
+ // {
|
|
|
|
|
+ // error = "2",
|
|
|
|
|
+ // content = "Wrong input"
|
|
|
|
|
+ // });
|
|
|
|
|
+ //}
|
|
|
|
|
+ //req.result = formatedRs;
|
|
|
|
|
+ string result = SendPost(req, GetParameter(LumilotoUtils.WsType.LkpwResultUpdate));
|
|
|
|
|
+ CommonRes res = CommonRes.Parse(result);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public JsonResult ResultsUpdateStatus(ResultsUpdateReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ string account = HttpContext.Session.GetString("account");
|
|
|
|
|
+ req.users = account;
|
|
|
|
|
+ string result = SendPost(req, GetParameter(LumilotoUtils.WsType.LkpwResultUpdate));
|
|
|
|
|
+ CommonRes res = CommonRes.Parse(result);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ResultsExport(TermGetListReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+ req.rowsOnPage = "1000000";
|
|
|
|
|
+ req.seqPage = "1";
|
|
|
|
|
+ req.order = "desc";
|
|
|
|
|
+ req.type = "1"; // already result
|
|
|
|
|
+
|
|
|
|
|
+ String url = GetParameter(LumilotoUtils.WsType.TermResult);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ TermGetListRes res = TermGetListRes.Parse(result);
|
|
|
|
|
+ List<Term> list = res.listTerm;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "results.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Statistics");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Game";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Date";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Term";
|
|
|
|
|
+ worksheet.Column(i).Width = 80;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Result";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = LumilotoUtils.GetGameName(obj.gameId);
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.date_end;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.id;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = ResultVisible(obj.result, req.gameId);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public String ResultVisible(string result, string gameId)
|
|
|
|
|
+ {
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ if (gameId == LumilotoUtils.GameIds.LUCKY_POWER)
|
|
|
|
|
+ {
|
|
|
|
|
+ var rs = "";
|
|
|
|
|
+ for (var i = 0; i < 7; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ var num = result.Substring(3 * i, 2);
|
|
|
|
|
+ if (i < 6)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += num + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "| " + num;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return rs;
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (gameId == LumilotoUtils.GameIds.LUCKY_DAY)
|
|
|
|
|
+ {
|
|
|
|
|
+ var rs = "";
|
|
|
|
|
+ var results = result.Split("$");
|
|
|
|
|
+ for (var i = 0; i < results.Length; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ var num = results[i].Split("&");
|
|
|
|
|
+ if (i == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "First prize: ";
|
|
|
|
|
+ for (var j = 0; j < num.Length; j++)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += num[j] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (i == 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "\r\nSecond prize: ";
|
|
|
|
|
+ for (var j = 0; j < num.Length; j++)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += num[j] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (i == 2)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "\r\nThird prize: ";
|
|
|
|
|
+ for (var j = 0; j < num.Length; j++)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += num[j] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (i == 3)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "\r\nForth prize: ";
|
|
|
|
|
+ for (var j = 0; j < num.Length; j++)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += num[j] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return rs;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ // plus
|
|
|
|
|
+ var rs = "";
|
|
|
|
|
+ string[] numbers = result.Split('&')[0].Split('$');
|
|
|
|
|
+ rs += "Numbers: ";
|
|
|
|
|
+ for (var j = 0; j < numbers.Length; j++)
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += numbers[j] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (result.Split('&').Length > 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ string[] sp = result.Split('&')[1].Split(',');
|
|
|
|
|
+ Dictionary<String, String> specials = new Dictionary<String, String>();
|
|
|
|
|
+ foreach (String txt in sp)
|
|
|
|
|
+ {
|
|
|
|
|
+ specials.Add(txt.Split('=')[0], txt.Split('=')[1]);
|
|
|
|
|
+ }
|
|
|
|
|
+ rs += "\r\nOdd/even: ";
|
|
|
|
|
+ if (specials["ISEVEN"] == "1")
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "Even " + specials["E"] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "Even " + specials["E"] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (specials["ISEVEN"] == "2")
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "Odd " + specials["O"] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "Odd " + specials["O"] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ rs += "\r\nBig/Small: ";
|
|
|
|
|
+ if (specials["ISBIG"] == "1")
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "Big " + specials["B"] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "Big " + specials["B"] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (specials["ISBIG"] == "2")
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "Small " + specials["S"] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ rs += "Small " + specials["S"] + " ";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return rs;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ log.Error("Error parse result: " + result + ": " + ex.Message, ex);
|
|
|
|
|
+ return "";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // ReportSummary
|
|
|
|
|
+ public IActionResult ReportSummary()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public JsonResult ReportSummarySearch(RpTotalByDayReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TrafficDayGet);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpTotalByDayRes res = RpTotalByDayRes.Parse(result);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage,
|
|
|
|
|
+ data = res.list
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ReportSummaryExport(RpTotalByDayReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TrafficDayGet);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpTotalByDayRes res = RpTotalByDayRes.Parse(result);
|
|
|
|
|
+ List<RpTotalByDay> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "report_summary.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Report Summary");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Date";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Players";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Tickets";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Bet Money(HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Player";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Ticket";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Money(HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Benefit(HTG)";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.date;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.player;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticket;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.money;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.palyerWin;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketWin;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWin;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.benefit;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Report Compact
|
|
|
|
|
+ public IActionResult ReportCompact()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public JsonResult ReportCompactSearch(RpTotalByDayReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TrafficDayGet);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpTotalByDayRes res = RpTotalByDayRes.Parse(result);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage,
|
|
|
|
|
+ data = res.list
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ReportCompactExport(RpTotalByDayReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TrafficDayGet);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpTotalByDayRes res = RpTotalByDayRes.Parse(result);
|
|
|
|
|
+ List<RpTotalByDay> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "report_compact.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Report Summary");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Date";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Players";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Bet Money(HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Money(HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Benefit(HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Sharing(HTG)";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.date;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.player;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.money;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWin;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.benefit;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.sharing;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Report Summary Bolet
|
|
|
|
|
+ public IActionResult ReportSummaryBolet()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public JsonResult ReportSummaryBoletSearch(RpTotalByBoletReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TrafficBoletGet);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpTotalByBoletRes res = RpTotalByBoletRes.Parse(result);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage,
|
|
|
|
|
+ data = res.list
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ReportSummaryBoletExport(RpTotalByBoletReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TrafficBoletGet);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpTotalByBoletRes res = RpTotalByBoletRes.Parse(result);
|
|
|
|
|
+ List<RpTotalByBolet> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "report_summary_bolet.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Report Summary");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Date";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Players";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Tickets";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Bet Money(HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win money";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total ticket LOT1";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Lot1";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total ticket Lot2";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Lot2";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total ticket Lot3";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Lot 3";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.date;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.player;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticket;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.money;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWin;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketWinLot1;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWinLot1;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketWinLot2;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWinLot2;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketWinLot3;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWinLot3;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Report Summary Lucky
|
|
|
|
|
+ public IActionResult ReportSummaryLucky()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public JsonResult ReportSummaryLuckySearch(RpTotalByDayLkpsReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TrafficLuckyGet);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpTotalByDayLkpsRes res = RpTotalByDayLkpsRes.Parse(result);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage,
|
|
|
|
|
+ data = res.list
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ReportSummaryLuckyExport(RpTotalByDayLkpsReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TrafficLuckyGet);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpTotalByDayLkpsRes res = RpTotalByDayLkpsRes.Parse(result);
|
|
|
|
|
+ List<RpTotalByDayLkps> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "report_summary_lucky.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Report Summary");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Date";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Players";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Tickets";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Bet Money(HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Player";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Ticket";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Money(HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Benefit(HTG)";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.date;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.player;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticket;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.money;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.palyerWin;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketWin;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWin;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.benefit;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Player Lucky
|
|
|
|
|
+ public IActionResult ReportLuckyDetail()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult ReportLuckyDetailSearch(SearchMsisdnReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ req.msisdn = BaseController.ValidateMsisdn(req.msisdn);
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.MsisdnSearchLucky);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ SearchMsisdnRes res = SearchMsisdnRes.Parse(result);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage,
|
|
|
|
|
+ data = res.list
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ReportLuckyDetailExport(SearchMsisdnReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.MsisdnSearchLucky);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ SearchMsisdnRes res = SearchMsisdnRes.Parse(result);
|
|
|
|
|
+ List<TicketMsisdn> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "player_ticket.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Player Tickets");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Phone number";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Channel Play";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Ticket ID";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Bet number";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Bet Money (HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Buy time";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Drawn time";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Result";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Win Money (HTG)";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.msisdn;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.channel;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketId;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketCode;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.money;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.buyTime;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.drawTime;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.result;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWin;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Player
|
|
|
|
|
+ public IActionResult PlayerTicket()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult PlayerTicketSearch(SearchMsisdnReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ req.msisdn = BaseController.ValidateMsisdn(req.msisdn);
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.MsisdnSearch);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ SearchMsisdnRes res = SearchMsisdnRes.Parse(result);
|
|
|
|
|
+ //return Json(new
|
|
|
|
|
+ //{
|
|
|
|
|
+ // error = res.responseCode,
|
|
|
|
|
+ // content = res.responseMessage,
|
|
|
|
|
+ // data = res.list
|
|
|
|
|
+ //});
|
|
|
|
|
+ return PartialView("./_PlayerHistory", res);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult PlayerTicketExport(SearchMsisdnReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.MsisdnSearch);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ SearchMsisdnRes res = SearchMsisdnRes.Parse(result);
|
|
|
|
|
+ List<TicketMsisdn> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "player_ticket.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Player Tickets");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Phone number";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Lottery";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Game";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Channel Play";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Ticket ID";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Bet number";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Bet Money (HTG)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Buy time";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Drawn time";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Result";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Win Money (HTG)";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.msisdn;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.lottery;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.game;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.channel;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketId;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.ticketCode;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.money;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.buyTime;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.drawTime;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.result;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.moneyWin;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult PlayerTransfer()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult PlayerTransferSearch(SearchTransferMsisdnReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ req.order = "desc";
|
|
|
|
|
+ req.seqPage = "1";
|
|
|
|
|
+ req.rowsOnPage = "1000000";
|
|
|
|
|
+ req.msisdn = BaseController.ValidateMsisdn(req.msisdn);
|
|
|
|
|
+ if (req.msisdn == null || req.msisdn == "")
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "10",
|
|
|
|
|
+ content = "Msisdn required"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TransferSearch);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ TransferMsisdnRes res = TransferMsisdnRes.Parse(result);
|
|
|
|
|
+ return PartialView("./_PlayerTransfer", res);
|
|
|
|
|
+ //return Json(new
|
|
|
|
|
+ //{
|
|
|
|
|
+ // error = res.responseCode,
|
|
|
|
|
+ // content = res.responseMessage,
|
|
|
|
|
+ // data = res.list
|
|
|
|
|
+ //});
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult PlayerTransferDetailSearch(SearchTransferMsisdnReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ req.order = "desc";
|
|
|
|
|
+ req.seqPage = "1";
|
|
|
|
|
+ req.rowsOnPage = "1000000";
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TransferSearch);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ TransferMsisdnRes res = TransferMsisdnRes.Parse(result);
|
|
|
|
|
+ return PartialView("./_PlayerTransferDetail", res);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult PlayerTransferExport(SearchTransferMsisdnReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.TransferSearch);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ TransferMsisdnRes res = TransferMsisdnRes.Parse(result);
|
|
|
|
|
+ List<TransferMsisdn> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "player_transfer.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Player Transfer");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Phone Request";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Phone Receive";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Time Request";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Time Top-up";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Status of Toto";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Status Message";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Coin Transfer";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Channel Request";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Channel Payment";
|
|
|
|
|
+ worksheet.Column(i).Width = 40;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Request ID";
|
|
|
|
|
+ worksheet.Column(i).Width = 40;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Response ID";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "errCodeApprove";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "errMsgApprove";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "errCodeCallback";
|
|
|
|
|
+ worksheet.Column(i).Width = 40;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Transaction";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "StatusWallet";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "StatusWalletMsg";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "ReasonReject";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.acountSend;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.acountRecieve;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.timeRequest;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.timeTopup;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.status;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.statusMsg;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.money;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.channelRequest;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.channelPayment == "1" ? "Main balance" : "Mosan";
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.reqeustId;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.responseId;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.errCodeApprove;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.errMsgApprove;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.errCodeCallback;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.transection;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.statusWallet;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.statusWalletMsg;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.reasonReject;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult PlayerExport()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult PlayerExportAction(SearchMsisdnReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.MsisdnExport);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ SearchMsisdnRes res = SearchMsisdnRes.Parse(result);
|
|
|
|
|
+ List<TicketMsisdn> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "player_list.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Player List");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Phone number";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.msisdn;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private String formatStatus(String status)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (status == "0")
|
|
|
|
|
+ {
|
|
|
|
|
+ return "Processing";
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (status == "1")
|
|
|
|
|
+ {
|
|
|
|
|
+ return "Success";
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (status == "2")
|
|
|
|
|
+ {
|
|
|
|
|
+ return "Pending";
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (status == "3")
|
|
|
|
|
+ {
|
|
|
|
|
+ return "Revert";
|
|
|
|
|
+ }
|
|
|
|
|
+ return status;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // MT SEARCH
|
|
|
|
|
+ public IActionResult PlayerMt()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult PlayerMtSearch(SearchMtReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ req.msisdn = BaseController.ValidateMsisdn(req.msisdn);
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.MtSearch);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ SearchMtRes res = SearchMtRes.Parse(result);
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = res.responseCode,
|
|
|
|
|
+ content = res.responseMessage,
|
|
|
|
|
+ data = res.list
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult PlayerMtExport(SearchMtReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.MtSearch);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ SearchMtRes res = SearchMtRes.Parse(result);
|
|
|
|
|
+ List<MtRecord> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "player_mt.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Player MT");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Phone number";
|
|
|
|
|
+ worksheet.Column(i).Width = 100;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Message Content";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Send Time";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.msisdn;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.message;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.sendTime;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // REPORT BILL ORDER SUMMARY
|
|
|
|
|
+ public IActionResult ReportBillOrderSummary()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult ReportBillOrderSummarySearch(RpSearchTotallBuyOderReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.rpSearchTotallBuyOder);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpSearchTotallBuyOderRes res = RpSearchTotallBuyOderRes.Parse(result);
|
|
|
|
|
+ return PartialView("./_ReportBillOrderSummary", res);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ReportBillOrderSummaryExport(RpSearchTotallBuyOderReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.rpSearchTotallBuyOder);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpSearchTotallBuyOderRes res = RpSearchTotallBuyOderRes.Parse(result);
|
|
|
|
|
+ List<TotallBuyOder> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "bill_order_summary.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ long totalOrder = 0;
|
|
|
|
|
+ long totalMoney = 0;
|
|
|
|
|
+ long totalFee = 0;
|
|
|
|
|
+ long totalTicket = 0;
|
|
|
|
|
+ long totalMoneyWin = 0;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Report Bill Order Summary");
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Date Time";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Bill Order";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Money Bet";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Cost Telemor";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Ticket";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Win Money";
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ totalOrder += long.Parse(obj.totalOder);
|
|
|
|
|
+ totalMoney += long.Parse(obj.totalMoney);
|
|
|
|
|
+ totalFee += long.Parse(obj.totalFee);
|
|
|
|
|
+ totalTicket += long.Parse(obj.totalTicket);
|
|
|
|
|
+ totalMoneyWin += long.Parse(obj.totalMoneyWin);
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = index;
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Cell(index + 1, i).Style.DateFormat.Format = "dd/MM/yyyy";
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = DateTime.ParseExact(obj.date, "dd/MM/yyyy",null);
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.totalOder;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.totalMoney;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.totalFee;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.totalTicket;
|
|
|
|
|
+ worksheet.Cell(index + 1, i++).Value = obj.totalMoneyWin;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ int rowIdx = list.Count + 2;
|
|
|
|
|
+ // total row
|
|
|
|
|
+ worksheet.Row(rowIdx).Style.Border.TopBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Row(rowIdx).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(rowIdx).Height = 20;
|
|
|
|
|
+ worksheet.Row(rowIdx).Style.Font.FontSize = 13;
|
|
|
|
|
+ worksheet.Row(rowIdx).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
|
|
|
|
|
+ worksheet.Cell(rowIdx, 2).Value = "Total";
|
|
|
|
|
+ worksheet.Cell(rowIdx, 3).Value = totalOrder;
|
|
|
|
|
+ worksheet.Cell(rowIdx, 4).Value = totalMoney;
|
|
|
|
|
+ worksheet.Cell(rowIdx, 5).Value = totalFee;
|
|
|
|
|
+ worksheet.Cell(rowIdx, 6).Value = totalTicket;
|
|
|
|
|
+ worksheet.Cell(rowIdx, 7).Value = totalMoneyWin;
|
|
|
|
|
+
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // REPORT BILL ORDER DETAIL
|
|
|
|
|
+ public IActionResult ReportBillOrderDetail()
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Redirect(GetParameter(UtilsController.Constant.SUB_DOMAIN) + "/Home/Login");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return View();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public IActionResult ReportBillOrderDetailSearch(RpSearchDetailBuyOderReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ error = "-1",
|
|
|
|
|
+ content = "Login first"
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.rpSearchDetailBuyOder);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpSearchDetailBuyOderRes res = RpSearchDetailBuyOderRes.Parse(result);
|
|
|
|
|
+ return PartialView("./_ReportBillOrderDetail", res);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPost]
|
|
|
|
|
+ public IActionResult ReportBillOrderDetailExport(RpSearchDetailBuyOderReq req)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckAuthToken())
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
|
|
|
+
|
|
|
|
|
+ string url = GetParameter(LumilotoUtils.WsType.rpSearchDetailBuyOder);
|
|
|
|
|
+ string result = SendPost(req, url);
|
|
|
|
|
+ RpSearchDetailBuyOderRes res = RpSearchDetailBuyOderRes.Parse(result);
|
|
|
|
|
+ List<DetailBuyOder> list = res.list;
|
|
|
|
|
+
|
|
|
|
|
+ string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
|
|
|
+ string fileName = "bill_order_detail.xlsx";
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ using (var workbook = new XLWorkbook())
|
|
|
|
|
+ {
|
|
|
|
|
+ int i = 1;
|
|
|
|
|
+ IXLWorksheet worksheet = workbook.Worksheets.Add("Report Bill Order Detail");
|
|
|
|
|
+ // make color
|
|
|
|
|
+ worksheet.Row(1).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(1).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ worksheet.Row(1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
|
|
|
|
|
+ worksheet.Row(2).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(2).Style.Fill.BackgroundColor = XLColor.Yellow;
|
|
|
|
|
+ worksheet.Row(2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Merge();
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "No.";
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Merge();
|
|
|
|
|
+ worksheet.Column(i).Width = 15;
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Phone Number";
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Merge();
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Bill Order";
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Merge();
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Channel Buy";
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Merge();
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Money";
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Merge();
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Total Fee";
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Merge();
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Buying Time";
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Merge();
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Range(1, i, 2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i++).Value = "Game Name";
|
|
|
|
|
+
|
|
|
|
|
+ // ticket info, merge 3 col
|
|
|
|
|
+ worksheet.Range(1, i, 1, i + 2).Merge();
|
|
|
|
|
+ worksheet.Range(1, i, 1, i + 2).Style.Border.BottomBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Range(1, i + 2, 2, i + 2).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(1, i).Value = "Ticket Information";
|
|
|
|
|
+ // row 2 of ticket info
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(2, i++).Value = "Ticket";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(2, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(2, i++).Value = "Money (cents)";
|
|
|
|
|
+ worksheet.Column(i).Width = 20;
|
|
|
|
|
+ worksheet.Cell(21, i).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Cell(2, i++).Value = "Turn ID";
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ worksheet.Row(3).Style.Border.TopBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;
|
|
|
|
|
+
|
|
|
|
|
+ //worksheet.Cell(1, i++).Value = "BetId";
|
|
|
|
|
+ if (list != null && list.Count > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ int rowIdx = 3;
|
|
|
|
|
+ long totalMoney = 0;
|
|
|
|
|
+ long totalFee = 0;
|
|
|
|
|
+ long moneyTicket = 0;
|
|
|
|
|
+ for (int index = 1; index <= list.Count; index++)
|
|
|
|
|
+ {
|
|
|
|
|
+ i = 1;
|
|
|
|
|
+ var obj = list[index - 1];
|
|
|
|
|
+ totalMoney += long.Parse(obj.money);
|
|
|
|
|
+ totalFee += long.Parse(obj.fee);
|
|
|
|
|
+ var ticketNum = obj.listTicket.Count;
|
|
|
|
|
+ worksheet.Range(rowIdx, i, rowIdx + ticketNum - 1, i).Merge();
|
|
|
|
|
+ worksheet.Cell(rowIdx, i++).Value = index;
|
|
|
|
|
+ worksheet.Range(rowIdx, i, rowIdx + ticketNum - 1, i).Merge();
|
|
|
|
|
+ worksheet.Cell(rowIdx, i++).Value = obj.user;
|
|
|
|
|
+ worksheet.Range(rowIdx, i, rowIdx + ticketNum - 1, i).Merge();
|
|
|
|
|
+ worksheet.Cell(rowIdx, i++).Value = obj.billCode;
|
|
|
|
|
+ worksheet.Range(rowIdx, i, rowIdx + ticketNum - 1, i).Merge();
|
|
|
|
|
+ worksheet.Cell(rowIdx, i++).Value = obj.channel;
|
|
|
|
|
+ worksheet.Range(rowIdx, i, rowIdx + ticketNum - 1, i).Merge();
|
|
|
|
|
+ worksheet.Cell(rowIdx, i++).Value = obj.money;
|
|
|
|
|
+ worksheet.Range(rowIdx, i, rowIdx + ticketNum - 1, i).Merge();
|
|
|
|
|
+ worksheet.Cell(rowIdx, i++).Value = obj.fee;
|
|
|
|
|
+ worksheet.Range(rowIdx, i, rowIdx + ticketNum - 1, i).Merge();
|
|
|
|
|
+ worksheet.Cell(rowIdx, i).Style.DateFormat.Format = "dd/MM/yyyy HH:mm:ss";
|
|
|
|
|
+ worksheet.Cell(rowIdx, i++).Value = DateTime.ParseExact(obj.buyTime, "dd/MM/yyyy HH:mm:ss", null);
|
|
|
|
|
+ worksheet.Range(rowIdx, i, rowIdx + ticketNum - 1, i).Merge();
|
|
|
|
|
+ worksheet.Cell(rowIdx, i++).Value = obj.gameName;
|
|
|
|
|
+ //ticket list
|
|
|
|
|
+ for (int j = 0; j < ticketNum; j++)
|
|
|
|
|
+ {
|
|
|
|
|
+ var ticket = obj.listTicket[j];
|
|
|
|
|
+ moneyTicket += long.Parse(ticket.money);
|
|
|
|
|
+ worksheet.Cell(rowIdx, i).Value = ticket.ticket;
|
|
|
|
|
+ worksheet.Cell(rowIdx, i + 1).Value = ticket.money;
|
|
|
|
|
+ worksheet.Cell(rowIdx, i + 2).Value = ticket.turnId;
|
|
|
|
|
+ rowIdx++;
|
|
|
|
|
+ }
|
|
|
|
|
+ //rowIdx += ticketNum;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // total row
|
|
|
|
|
+ worksheet.Row(rowIdx).Style.Border.TopBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
+ worksheet.Row(rowIdx).Style.Font.Bold = true;
|
|
|
|
|
+ worksheet.Row(rowIdx).Height = 20;
|
|
|
|
|
+ worksheet.Row(rowIdx).Style.Font.FontSize = 13;
|
|
|
|
|
+ worksheet.Row(rowIdx).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
|
|
|
|
|
+ worksheet.Cell(rowIdx, 2).Value = "Total";
|
|
|
|
|
+ worksheet.Cell(rowIdx, 5).Value = totalMoney;
|
|
|
|
|
+ worksheet.Cell(rowIdx, 6).Value = totalFee;
|
|
|
|
|
+ worksheet.Cell(rowIdx, 10).Value = moneyTicket;
|
|
|
|
|
+ }
|
|
|
|
|
+ using (var stream = new MemoryStream())
|
|
|
|
|
+ {
|
|
|
|
|
+ workbook.SaveAs(stream);
|
|
|
|
|
+ var content = stream.ToArray();
|
|
|
|
|
+ return File(content, contentType, fileName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+}
|