using LotteryWebApp.Common; using LotteryWebApp.Extensions; using LotteryWebApp.Models; using LotteryWebApp.Service; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; namespace LotteryWebApp.Controllers { [AutoValidateAntiforgeryToken] public class HistoryController : BaseController { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); IConfiguration configuration; private readonly IWebHostEnvironment webHostEnvironment; APIFunctions api = new APIFunctions(); public HistoryController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment) { configuration = _configuration; webHostEnvironment = hostEnvironment; } public String GetParameter(String key) { return configuration.GetSection(key).Value; } public IActionResult Index(string winType, string gameId) { if (!CheckAuthToken()) { return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login"); } HttpContext.Session.SetComplexData("navigator", Constants.HISTORY_NAVIGATOR); History_ViewModel model = new History_ViewModel(); try { String msisdn = HttpContext.Session.GetComplexData("msisdn"); String token = HttpContext.Session.GetComplexData("token"); model.gameId = gameId != null ? gameId : Constants.NEW_YORK_BOLET_CODE; model.winType = winType != null ? winType : Constants.NOT_DRAW_CODE; } catch (Exception ex) { log.Error(ex); } return View(model); } [ValidateAntiForgeryToken] public IActionResult UserTicket(string winType, string gameId, string seqpage) { if (!CheckAuthToken()) { return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login"); } HistoryUserTicket_ViewModel model = new HistoryUserTicket_ViewModel(); model.tickets = new List(); try { String msisdn = HttpContext.Session.GetComplexData("msisdn"); String token = HttpContext.Session.GetComplexData("token"); model.gameId = gameId != null ? gameId : Constants.NEW_YORK_BOLET_CODE; model.winType = winType != null ? winType : Constants.NOT_DRAW_CODE; HttpContext.Session.SetComplexData("gameId", model.gameId); UserTicketRequest userTicketRequest = new UserTicketRequest(); userTicketRequest.msisdn = msisdn; userTicketRequest.token = token; userTicketRequest.gameId = ConvertToListGameID(model.gameId); userTicketRequest.type = model.winType; userTicketRequest.id = Constants.ALL_DATA; userTicketRequest.rowsOnPage = Constants.ROW_ON_PAGE; userTicketRequest.seqPage = seqpage != null ? seqpage : "1"; userTicketRequest.order = Constants.DECS; UserTicketResponse userTicketResponse = api.GetUserTicketApi(configuration, userTicketRequest); if (userTicketResponse.responseCode == Code.SUCCESS) { if (userTicketResponse.listTicket != null) { model.tickets = userTicketResponse.listTicket; // append List listTickets = HttpContext.Session.GetComplexData>("listTicket"); if(listTickets != null && listTickets.Count > 0) { listTickets.AddRange(userTicketResponse.listTicket); } else { listTickets = userTicketResponse.listTicket; } HttpContext.Session.SetComplexData("listTicket", listTickets); HttpContext.Session.SetComplexData("winType", model.winType); } } } catch (Exception ex) { log.Error(ex); } return PartialView("UserTicket", model); } [ValidateAntiForgeryToken] public IActionResult TicketDetail(string id) { if (!CheckAuthToken()) { return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login"); } HistoryTicketDetail_ViewModel model = new HistoryTicketDetail_ViewModel(); try { String msisdn = HttpContext.Session.GetComplexData("msisdn"); String token = HttpContext.Session.GetComplexData("token"); String winType = HttpContext.Session.GetComplexData("winType"); String gameId = HttpContext.Session.GetComplexData("gameId"); List tickets = HttpContext.Session.GetComplexData>("listTicket"); Ticket ticket = tickets.Find(c => c.id == id); if (ticket != null) { model.ticket = ticket; } model.winType = winType; model.msisdn = msisdn; model.type = gameId; } catch (Exception ex) { log.Error(ex); } return PartialView("TicketDetail", model); } } }