HomeController.cs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Globalization;
  5. using System.Linq;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. using LotteryWebApp.Common;
  9. using LotteryWebApp.Extensions;
  10. using LotteryWebApp.Languages;
  11. using LotteryWebApp.Models;
  12. using LotteryWebApp.Service;
  13. using Microsoft.AspNetCore.Hosting;
  14. using Microsoft.AspNetCore.Http;
  15. using Microsoft.AspNetCore.Localization;
  16. using Microsoft.AspNetCore.Mvc;
  17. using Microsoft.Extensions.Configuration;
  18. using Microsoft.Extensions.Logging;
  19. using Newtonsoft.Json;
  20. namespace LotteryWebApp.Controllers
  21. {
  22. [AutoValidateAntiforgeryToken]
  23. public class HomeController : BaseController
  24. {
  25. private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
  26. IConfiguration configuration;
  27. private readonly IWebHostEnvironment webHostEnvironment;
  28. APIFunctions api = new APIFunctions();
  29. bool flashViewEnabled = false;
  30. public HomeController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment)
  31. {
  32. configuration = _configuration;
  33. webHostEnvironment = hostEnvironment;
  34. }
  35. public String GetParameter(String key)
  36. {
  37. return configuration.GetSection(key).Value;
  38. }
  39. public IActionResult FlashView()
  40. {
  41. return View();
  42. }
  43. public JsonResult SetCulture(string lang)
  44. {
  45. try
  46. {
  47. Response.Cookies.Append(
  48. CookieRequestCultureProvider.DefaultCookieName,
  49. CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(lang)),
  50. new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
  51. );
  52. HttpContext.Session.SetComplexData("culture", lang);
  53. }
  54. catch (Exception ex)
  55. {
  56. log.Error("Exp: " + ex);
  57. }
  58. return Json(new { });
  59. }
  60. public async Task<IActionResult> IndexAsync(
  61. string termType,
  62. String uuid,
  63. String mcuid,
  64. String phonenumber,
  65. String token
  66. )
  67. {
  68. //return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Home/Update");
  69. //String param = "transactionId=" + "ABC" + "&requestId=" + "DEF" + "&money=" + "100";
  70. //String url = CreatePrivateURL(configuration, param, "seconds", "0", "0", GetParameter("rsaPolicy"));
  71. HomeIndex_ViewModel model = new HomeIndex_ViewModel();
  72. try
  73. {
  74. HttpContext.Session.SetComplexData("navigator", Constants.HOME_NAVIGATOR);
  75. CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
  76. String lang = currentCulture.Name;
  77. log.Info("lang: " + lang);
  78. String msisdnAuto = null;
  79. // check auto login ?uuid=681471d23b83f0a463e2dd5671ea0fc5
  80. // ?uuid=681471d23b83f0a463e2dd5671ea0fc5&mcuid=6c6948a89908d83aec8c05be256970a1&mcapp=mocha
  81. if (!CheckAuthToken())
  82. {
  83. //String uri = HttpContext.Request.QueryString.ToUriComponent().ToString();
  84. log.Info("UUID: " + uuid);
  85. log.Info("token: " + token);
  86. //token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ1c2VySW5mb3IiLCJleHAiOjE3MTAzODE0NTksInV1aWQiOiI1MGEwYjNlNzk5ZjllZDU3YTE1ZjZjNjljODVmYTM3NSJ9.EgR-P_KzsHJ1XCdgeu25Gy_-qAHOfM9uv9RTZSvr0AA";
  87. if (token != null)
  88. {
  89. // nhan dien qua token
  90. AutoLoginRequest autoLoginRequest = new AutoLoginRequest();
  91. autoLoginRequest.token = token;
  92. AutoLoginResponse autoLoginResponse = await api.AutoLoginApiAsync(
  93. configuration,
  94. autoLoginRequest
  95. );
  96. if (autoLoginResponse.code == Code.SUCCESS_CODE)
  97. {
  98. string msisdnReal = validateMsisdn(
  99. autoLoginResponse.data.msisdn.Substring(1)
  100. );
  101. if (msisdnReal == "")
  102. {
  103. return Redirect(
  104. GetParameter(Constants.SUB_DOMAIN) + "/Account/Login"
  105. );
  106. }
  107. // check local system
  108. CheckAccountRequest checkAccountRequest = new CheckAccountRequest
  109. {
  110. msisdn = msisdnReal,
  111. channel = Constants.WEB_CHANNEL,
  112. language = lang == "en" ? "0" : "1"
  113. };
  114. CheckAccountResponse checkAccountResponse = api.CheckAccountApi(
  115. configuration,
  116. checkAccountRequest
  117. );
  118. if (checkAccountResponse.status == Code.SUCCESS)
  119. {
  120. string tokenGetReal = checkAccountResponse.token;
  121. HttpContext.Session.SetComplexData("msisdn", msisdnReal);
  122. // create session
  123. // create new auth
  124. CreateAuthToken();
  125. HttpContext.Session.SetComplexData("token", tokenGetReal);
  126. // load user status
  127. UserGetProfileRequest userGetProfileRequest =
  128. new UserGetProfileRequest
  129. {
  130. users = msisdnReal,
  131. token = tokenGetReal
  132. };
  133. Profile profileGet = api.UserLoadProfileApi(
  134. configuration,
  135. userGetProfileRequest
  136. );
  137. HttpContext.Session.SetComplexData("profile", profileGet);
  138. // load profile
  139. UserStatusRequest userStatusRequest = new UserStatusRequest
  140. {
  141. users = msisdnReal,
  142. token = tokenGetReal
  143. };
  144. UserStatus userStatusGet = api.GetUserStatusApi(
  145. configuration,
  146. userStatusRequest
  147. );
  148. HttpContext.Session.SetComplexData("userStatus", userStatusGet);
  149. }
  150. else
  151. {
  152. return Redirect(
  153. GetParameter(Constants.SUB_DOMAIN) + "/Account/Login"
  154. );
  155. }
  156. }
  157. }
  158. else if (uuid != null)
  159. {
  160. // nhan dien thue bao
  161. //string uuid = HttpContext.Request.QueryString.ToUriComponent().ToString().Substring(6);
  162. //String uuid = data.Substring(data.Length - 5, data.Length);
  163. String res = await CheckAutoLogin(log, uuid);
  164. log.Info("uuid: " + uuid + " res: " + res);
  165. if (res != null)
  166. {
  167. dynamic json = JsonConvert.DeserializeObject(res);
  168. log.Info("res json: " + json);
  169. String code = json["code"];
  170. if (code == "200")
  171. {
  172. String errorCode = json["errorCode"];
  173. if (errorCode == "200")
  174. {
  175. msisdnAuto = json["data"]["msisdn"];
  176. log.Info("msisdnAuto: " + msisdnAuto);
  177. }
  178. }
  179. }
  180. // redirect to OTP screen
  181. String msisdnDetect = validateMsisdn(msisdnAuto.Substring(1));
  182. if (msisdnDetect != "")
  183. {
  184. // get OTP
  185. RegisterRequest request = new RegisterRequest();
  186. request.Msisdn = msisdnDetect;
  187. RegisterResponse reset = api.UserForgotPasswordApi(
  188. configuration,
  189. request
  190. );
  191. if (reset.status == Code.SUCCESS)
  192. {
  193. HttpContext.Session.Remove("regInfos");
  194. HttpContext.Session.SetComplexData("msisdn", msisdnDetect);
  195. // return to login
  196. return Redirect(
  197. GetParameter(Constants.SUB_DOMAIN) + "/Account/Login?step=2"
  198. );
  199. }
  200. }
  201. // return to view to get phone number
  202. model.termType =
  203. termType != null ? termType : Constants.NEW_YORK_BOLET_CODE;
  204. //model.uuid = uuid;
  205. //model.subDomain = GetParameter(Constants.SUB_DOMAIN);
  206. return Redirect(
  207. GetParameter(Constants.SUB_DOMAIN)
  208. + "/Account/Login?message="
  209. + Lang.reset_after_1_minute
  210. );
  211. }
  212. else if (phonenumber != null)
  213. {
  214. String channel = GetParameter(Constants.CHANNEL);
  215. if (channel == ApiConstants.WALLET)
  216. {
  217. //giai ma
  218. String msisdnRSA = DecryptRSA(configuration, phonenumber);
  219. // login
  220. HttpContext.Session.SetComplexData("msisdn", msisdnRSA);
  221. // create session
  222. // create new auth
  223. CreateAuthToken();
  224. // login success --> store session
  225. HttpContext.Session.SetComplexData("token", ApiConstants.WALLET_TOKEN);
  226. // load profile
  227. // load user status
  228. UserGetProfileRequest userGetProfileRequest = new UserGetProfileRequest
  229. {
  230. users = msisdnRSA,
  231. token = ApiConstants.WALLET_TOKEN
  232. };
  233. Profile profileGet = api.UserLoadProfileApi(
  234. configuration,
  235. userGetProfileRequest
  236. );
  237. HttpContext.Session.SetComplexData("profile", profileGet);
  238. // load profile
  239. UserStatusRequest userStatusRequest = new UserStatusRequest
  240. {
  241. users = msisdnRSA,
  242. token = ApiConstants.WALLET_TOKEN
  243. };
  244. UserStatus userStatusGet = api.GetUserStatusApi(
  245. configuration,
  246. userStatusRequest
  247. );
  248. HttpContext.Session.SetComplexData("userStatus", userStatusGet);
  249. }
  250. else
  251. {
  252. // after auto detect
  253. String msisdnGet = phonenumber.Substring(1);
  254. String msisdnDetect = validateMsisdn(msisdnGet);
  255. if (msisdnDetect != "")
  256. {
  257. // auto login
  258. // reload user info
  259. HttpContext.Session.Remove("regInfos");
  260. HttpContext.Session.SetComplexData("msisdn", msisdnDetect);
  261. // return to login
  262. return Redirect(
  263. GetParameter(Constants.SUB_DOMAIN) + "/Account/Login?step=2"
  264. );
  265. }
  266. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  267. }
  268. }
  269. else
  270. {
  271. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  272. }
  273. }
  274. Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
  275. UserStatus userStatus = HttpContext.Session.GetComplexData<UserStatus>(
  276. "userStatus"
  277. );
  278. // login success --> store session
  279. model.termType = termType != null ? termType : Constants.FLORIDA_BOLET_CODE;
  280. model.userStatus = userStatus;
  281. model.profile = profile;
  282. // get time to nearest term
  283. model.listTerm = new List<Term>();
  284. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  285. String tokenGet = HttpContext.Session.GetComplexData<String>("token");
  286. String fromDate = DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
  287. String toDate = DateTime.Now.ToString("dd/MM/yyyy");
  288. // get winner
  289. GetTopWinnerRequest getTopWinnerRequest = new GetTopWinnerRequest();
  290. getTopWinnerRequest.type = lang == "en" ? "0" : "1";
  291. getTopWinnerRequest.token = tokenGet;
  292. GetTopWininerResponse getTopWininerResponse = api.GetTopWinnerApi(
  293. configuration,
  294. getTopWinnerRequest
  295. );
  296. if (getTopWininerResponse.responseCode == Code.SUCCESS)
  297. {
  298. model.topWinner = getTopWininerResponse.list;
  299. HttpContext.Session.SetComplexData("topWinner", model.topWinner);
  300. }
  301. ResultOfTermRequest resultOfTermRequest = new ResultOfTermRequest
  302. {
  303. gameId = model.termType,
  304. token = tokenGet,
  305. type = Constants.TERM_HAS_NOT_RESULT_TYPE,
  306. order = Constants.DECS,
  307. fromDate = fromDate,
  308. toDate = toDate,
  309. rowsOnPage = Constants.ROW_ON_PAGE,
  310. seqPage = "1",
  311. id = Constants.ALL_DATA
  312. };
  313. ResultOfTermResponse result = api.GetResultOfTermApi(
  314. configuration,
  315. resultOfTermRequest
  316. );
  317. if (result.responseCode == Code.SESSION_EXPIRED)
  318. {
  319. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  320. }
  321. else if (result.responseCode == Code.SUCCESS)
  322. {
  323. model.listTerm = result.listTerm;
  324. }
  325. }
  326. catch (Exception ex)
  327. {
  328. log.Error(ex);
  329. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  330. }
  331. return View(model);
  332. }
  333. [ValidateAntiForgeryToken]
  334. public IActionResult TermResult(string termType)
  335. {
  336. if (!CheckAuthToken())
  337. {
  338. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  339. }
  340. TermResultModel model = new TermResultModel();
  341. model.listTerm = new List<Term>();
  342. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  343. String token = HttpContext.Session.GetComplexData<String>("token");
  344. String fromDate = DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
  345. String toDate = DateTime.Now.ToString("dd/MM/yyyy");
  346. // get result
  347. ResultOfTermRequest resultOfTermRequest = new ResultOfTermRequest
  348. {
  349. gameId = termType,
  350. token = token,
  351. type = Constants.TERM_HAS_RESULT_TYPE,
  352. order = Constants.DECS,
  353. fromDate = fromDate,
  354. toDate = toDate,
  355. rowsOnPage = Constants.ROW_ON_PAGE,
  356. seqPage = "1",
  357. id = Constants.ALL_DATA
  358. };
  359. ResultOfTermResponse result = api.GetResultOfTermApi(
  360. configuration,
  361. resultOfTermRequest
  362. );
  363. if (result.responseCode == Code.SESSION_EXPIRED)
  364. {
  365. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  366. }
  367. else if (result.responseCode == Code.SUCCESS)
  368. {
  369. if (result.listTerm != null)
  370. model.listTerm = result.listTerm;
  371. model.termType = termType;
  372. }
  373. return PartialView("TermResult", model);
  374. }
  375. public IActionResult Transfer(string step, string walletType)
  376. {
  377. if (!CheckAuthToken())
  378. {
  379. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  380. }
  381. HomeTransfer_ViewModel model = new HomeTransfer_ViewModel();
  382. try
  383. {
  384. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  385. String token = HttpContext.Session.GetComplexData<String>("token");
  386. Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
  387. UserStatus userStatus = HttpContext.Session.GetComplexData<UserStatus>(
  388. "userStatus"
  389. );
  390. TransferMoneyRequest transferData =
  391. HttpContext.Session.GetComplexData<TransferMoneyRequest>("transferData");
  392. model.step = step != null ? step : Constants.TRANSFER_SHOW;
  393. model.walletType =
  394. walletType != null ? walletType : Constants.BASIC_WALLET_TRANSFER;
  395. model.profile = profile;
  396. model.userStatus = userStatus;
  397. model.transferData = transferData;
  398. if (step == Constants.TRANSFER_RESULT)
  399. {
  400. // get payment info
  401. String paymentCode = HttpContext.Session.GetComplexData<String>("paymentCode");
  402. TransactionInfoRequest transactionInfoRequest = new TransactionInfoRequest
  403. {
  404. id = paymentCode,
  405. msisdn = msisdn,
  406. token = token
  407. };
  408. TransactionInfoResponse transactionInfoResponse = api.GetTransactionInfoApi(
  409. configuration,
  410. transactionInfoRequest
  411. );
  412. if (transactionInfoResponse.responseCode == Code.SESSION_EXPIRED)
  413. {
  414. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  415. }
  416. else if (transactionInfoResponse.responseCode == Code.SUCCESS)
  417. {
  418. TransferMoneyRequest transferMoneyRequest =
  419. HttpContext.Session.GetComplexData<TransferMoneyRequest>(
  420. "transferData"
  421. );
  422. model.walletType = transferMoneyRequest.channelPayment;
  423. if (transactionInfoResponse.list.Count > 0)
  424. {
  425. model.transaction = transactionInfoResponse.list[0];
  426. }
  427. else
  428. {
  429. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Home/Error");
  430. }
  431. }
  432. }
  433. }
  434. catch (Exception ex)
  435. {
  436. log.Error(ex);
  437. }
  438. return View(model);
  439. }
  440. [ValidateAntiForgeryToken]
  441. public IActionResult TransactionConfirm_Action(
  442. string walletType,
  443. string receivernumber,
  444. string moneyon
  445. )
  446. {
  447. try
  448. {
  449. if (!CheckAuthToken())
  450. {
  451. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  452. }
  453. // send otp to user and show otp partial
  454. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  455. String token = HttpContext.Session.GetComplexData<String>("token");
  456. //String receiver = walletType == Constants.NATCASH_WALLET_TRANSFER ? null : msisdn;
  457. String receiver = msisdn;
  458. //if (walletType == Constants.NATCASH_WALLET_TRANSFER)
  459. //{
  460. // receiver = validateMsisdn(receivernumber);
  461. // if (receiver == "")
  462. // {
  463. // return Json(new
  464. // {
  465. // code = Code.FAILURE,
  466. // message = Lang.phone_invalid
  467. // });
  468. // }
  469. //}
  470. // save info to session
  471. TransferMoneyRequest transferMoneyRequest = new TransferMoneyRequest();
  472. transferMoneyRequest.money = moneyon;
  473. transferMoneyRequest.msisdn = msisdn;
  474. transferMoneyRequest.msisdnReceive = receiver;
  475. transferMoneyRequest.channelPayment = walletType;
  476. HttpContext.Session.SetComplexData("transferData", transferMoneyRequest);
  477. return Json(new { code = Code.SUCCESS, });
  478. }
  479. catch (Exception ex)
  480. {
  481. log.Error(ex);
  482. }
  483. return Json(new { code = Code.FAILURE, message = Lang.error_happened });
  484. }
  485. [ValidateAntiForgeryToken]
  486. public JsonResult TransactionSendOTP_Action()
  487. {
  488. try
  489. {
  490. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  491. String token = HttpContext.Session.GetComplexData<String>("token");
  492. TransferMoneyRequest transferData =
  493. HttpContext.Session.GetComplexData<TransferMoneyRequest>("transferData");
  494. String content =
  495. Lang.confirm_transfer_1
  496. + " "
  497. + transferData.money
  498. + Lang.confirm_transfer_2
  499. + " "
  500. + transferData.msisdnReceive
  501. + Lang.confirm_transfer_3;
  502. // send OTP
  503. SendOTPRequest sendOTPRequest = new SendOTPRequest();
  504. sendOTPRequest.msisdn = msisdn;
  505. sendOTPRequest.token = token;
  506. SendOTPResponse sendOTPResponse = api.SendOTPApi(configuration, sendOTPRequest);
  507. return Json(
  508. new
  509. {
  510. code = int.Parse(sendOTPResponse.responseCode),
  511. message = GetLangFromCode(sendOTPResponse.responseCode),
  512. content = content,
  513. }
  514. );
  515. }
  516. catch (Exception ex)
  517. {
  518. log.Error(ex);
  519. }
  520. return Json(new { code = Code.FAILURE, message = Lang.error_happened });
  521. }
  522. [ValidateAntiForgeryToken]
  523. public JsonResult TransactionResentOTP_Action()
  524. {
  525. try
  526. {
  527. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  528. String token = HttpContext.Session.GetComplexData<String>("token");
  529. // send OTP
  530. SendOTPRequest sendOTPRequest = new SendOTPRequest
  531. {
  532. msisdn = msisdn,
  533. token = token
  534. };
  535. SendOTPResponse sendOTPResponse = api.SendOTPApi(configuration, sendOTPRequest);
  536. return Json(
  537. new
  538. {
  539. code = int.Parse(sendOTPResponse.responseCode),
  540. message = GetLangFromCode(sendOTPResponse.responseCode),
  541. }
  542. );
  543. }
  544. catch (Exception ex)
  545. {
  546. log.Error(ex);
  547. }
  548. return Json(new { code = Code.FAILURE, message = Lang.error_happened });
  549. }
  550. [ValidateAntiForgeryToken]
  551. public JsonResult TransactionConfirmOTP_Action(string otp)
  552. {
  553. try
  554. {
  555. String token = HttpContext.Session.GetComplexData<String>("token");
  556. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  557. TransferMoneyRequest transferMoneyRequest =
  558. HttpContext.Session.GetComplexData<TransferMoneyRequest>("transferData");
  559. transferMoneyRequest.otp = otp;
  560. transferMoneyRequest.token = token;
  561. TransferMoneyResponse transferMoneyResponse = api.TransferMoneyApi(
  562. configuration,
  563. transferMoneyRequest
  564. );
  565. if (transferMoneyResponse.responseCode == Code.SUCCESS)
  566. {
  567. // save payment code
  568. //HttpContext.Session.DeleteComplexData("transferData");
  569. HttpContext.Session.SetComplexData(
  570. "paymentCode",
  571. transferMoneyResponse.paymentCode
  572. );
  573. // load user status
  574. UserGetProfileRequest userGetProfileRequest = new UserGetProfileRequest
  575. {
  576. users = msisdn,
  577. token = token
  578. };
  579. Profile profile = api.UserLoadProfileApi(configuration, userGetProfileRequest);
  580. HttpContext.Session.SetComplexData("profile", profile);
  581. // load profile
  582. UserStatusRequest userStatusRequest = new UserStatusRequest
  583. {
  584. users = msisdn,
  585. token = token
  586. };
  587. UserStatus userStatus = api.GetUserStatusApi(configuration, userStatusRequest);
  588. HttpContext.Session.SetComplexData("userStatus", userStatus);
  589. }
  590. return Json(
  591. new
  592. {
  593. code = int.Parse(transferMoneyResponse.responseCode),
  594. message = GetLangFromCode(transferMoneyResponse.responseCode),
  595. }
  596. );
  597. }
  598. catch (Exception ex)
  599. {
  600. log.Error(ex);
  601. }
  602. return Json(new { code = Code.FAILURE, message = Lang.error_happened });
  603. }
  604. public IActionResult Rules(string termType)
  605. {
  606. if (!CheckAuthToken())
  607. {
  608. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  609. }
  610. HomeRules_ViewModel model = new HomeRules_ViewModel();
  611. try
  612. {
  613. model.termType = termType != null ? termType : Constants.FLORIDA_BOLET_CODE;
  614. }
  615. catch (Exception ex)
  616. {
  617. log.Error(ex);
  618. }
  619. return View(model);
  620. }
  621. public IActionResult Results(string termType, string fromDate, string toDate)
  622. {
  623. if (!CheckAuthToken())
  624. {
  625. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  626. }
  627. HomeResults_ViewModel model = new HomeResults_ViewModel();
  628. try
  629. {
  630. model.termType = termType != null ? termType : Constants.NEW_YORK_BOLET_CODE;
  631. model.fromDate =
  632. fromDate != null ? fromDate : DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
  633. model.toDate = toDate != null ? toDate : DateTime.Now.ToString("dd/MM/yyyy");
  634. }
  635. catch (Exception ex)
  636. {
  637. log.Error(ex);
  638. }
  639. return View(model);
  640. }
  641. public IActionResult TermResultHistory(string termType, string fromDate, string toDate)
  642. {
  643. TermResultHistoryModel model = new TermResultHistoryModel();
  644. if (!CheckAuthToken())
  645. {
  646. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  647. }
  648. try
  649. {
  650. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  651. String token = HttpContext.Session.GetComplexData<String>("token");
  652. model.fromDate =
  653. fromDate != null
  654. ? DateTime
  655. .ParseExact(fromDate, "yyyy-MM-dd", CultureInfo.InvariantCulture)
  656. .ToString("dd/MM/yyyy")
  657. : DateTime.Now.AddDays(-2).ToString("dd/MM/yyyy");
  658. model.toDate =
  659. toDate != null
  660. ? DateTime
  661. .ParseExact(toDate, "yyyy-MM-dd", CultureInfo.InvariantCulture)
  662. .ToString("dd/MM/yyyy")
  663. : DateTime.Now.ToString("dd/MM/yyyy");
  664. // get result
  665. ResultOfTermRequest resultOfTermRequest = new ResultOfTermRequest();
  666. resultOfTermRequest.gameId = termType;
  667. resultOfTermRequest.token = token;
  668. resultOfTermRequest.type = Constants.TERM_HAS_RESULT_TYPE;
  669. resultOfTermRequest.order = Constants.DECS;
  670. resultOfTermRequest.fromDate = model.fromDate;
  671. resultOfTermRequest.toDate = model.toDate;
  672. resultOfTermRequest.rowsOnPage = Constants.ROW_ON_PAGE;
  673. resultOfTermRequest.seqPage = "1";
  674. resultOfTermRequest.id = Constants.ALL_DATA;
  675. ResultOfTermResponse result = api.GetResultOfTermApi(
  676. configuration,
  677. resultOfTermRequest
  678. );
  679. if (result.responseCode == Code.SESSION_EXPIRED)
  680. {
  681. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  682. }
  683. else if (result.responseCode == Code.SUCCESS)
  684. {
  685. model.listTerm = result.listTerm != null ? result.listTerm : new List<Term>();
  686. model.termType = termType;
  687. }
  688. }
  689. catch (Exception ex)
  690. {
  691. log.Error(ex);
  692. }
  693. return PartialView("TermResultHistory", model);
  694. }
  695. public IActionResult Privacy()
  696. {
  697. return View();
  698. }
  699. public IActionResult Update()
  700. {
  701. return View();
  702. }
  703. public IActionResult FAQ()
  704. {
  705. if (!CheckAuthToken())
  706. {
  707. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  708. }
  709. HomeFAQ_ViewModel model = new HomeFAQ_ViewModel();
  710. return View("FAQ", model);
  711. }
  712. [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
  713. public IActionResult Error()
  714. {
  715. return View(
  716. new ErrorViewModel
  717. {
  718. RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier
  719. }
  720. );
  721. }
  722. }
  723. }