ProfileController.cs 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. using LotteryWebApp.Common;
  2. using LotteryWebApp.Extensions;
  3. using LotteryWebApp.Languages;
  4. using LotteryWebApp.Models;
  5. using LotteryWebApp.Service;
  6. using Microsoft.AspNetCore.Hosting;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.Extensions.Configuration;
  9. using System;
  10. using System.Globalization;
  11. namespace LotteryWebApp.Controllers
  12. {
  13. [AutoValidateAntiforgeryToken]
  14. public class ProfileController : BaseController
  15. {
  16. private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
  17. IConfiguration configuration;
  18. private readonly IWebHostEnvironment webHostEnvironment;
  19. APIFunctions api = new APIFunctions();
  20. public ProfileController(IConfiguration _configuration, IWebHostEnvironment hostEnvironment)
  21. {
  22. configuration = _configuration;
  23. webHostEnvironment = hostEnvironment;
  24. }
  25. public String GetParameter(String key)
  26. {
  27. return configuration.GetSection(key).Value;
  28. }
  29. public IActionResult Index()
  30. {
  31. if (!CheckAuthToken())
  32. {
  33. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  34. }
  35. HttpContext.Session.SetComplexData("navigator", Constants.PROFILE_NAVIGATOR);
  36. ProfileViewModel model = new ProfileViewModel();
  37. try
  38. {
  39. model.channel = GetParameter(Constants.CHANNEL);
  40. // load msisdn
  41. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  42. String token = HttpContext.Session.GetComplexData<String>("token");
  43. Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
  44. if (profile == null)
  45. {
  46. // load profile
  47. UserGetProfileRequest request = new UserGetProfileRequest();
  48. request.users = msisdn;
  49. request.token = token;
  50. Profile profileGet = api.UserLoadProfileApi(configuration, request);
  51. if (profileGet.status == Code.SESSION_EXPIRED)
  52. {
  53. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  54. }
  55. model.profile = profileGet;
  56. HttpContext.Session.SetComplexData("profile", profileGet);
  57. }
  58. else
  59. {
  60. model.profile = profile;
  61. }
  62. UserStatus userStatus = HttpContext.Session.GetComplexData<UserStatus>("userStatus");
  63. if (profile == null)
  64. {
  65. // load profile
  66. UserStatusRequest userStatusRequest = new UserStatusRequest();
  67. userStatusRequest.users = msisdn;
  68. userStatusRequest.token = token;
  69. UserStatus userStatusResponse = api.GetUserStatusApi(configuration, userStatusRequest);
  70. if (userStatusResponse.status == Code.SESSION_EXPIRED)
  71. {
  72. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  73. }
  74. model.userStatus = userStatusResponse;
  75. HttpContext.Session.SetComplexData("userStatus", userStatusResponse);
  76. }
  77. else
  78. {
  79. model.userStatus = userStatus;
  80. }
  81. }
  82. catch (Exception ex)
  83. {
  84. log.Error(ex);
  85. }
  86. return View(model);
  87. }
  88. public IActionResult ChangePassword(string code)
  89. {
  90. if (!CheckAuthToken())
  91. {
  92. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  93. }
  94. ProfileChangePassword_ViewModel model = new ProfileChangePassword_ViewModel();
  95. model.code = code;
  96. return View(model);
  97. }
  98. [ValidateAntiForgeryToken]
  99. public JsonResult ChangePassword_Action(string oldpass, string newpass, string confirmpass)
  100. {
  101. try
  102. {
  103. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  104. String token = HttpContext.Session.GetComplexData<String>("token");
  105. if (newpass != null && newpass != "" && newpass == confirmpass)
  106. {
  107. // update
  108. RegisterRequest registerRequest = new RegisterRequest();
  109. registerRequest.Msisdn = msisdn;
  110. registerRequest.Users = msisdn;
  111. registerRequest.pass = oldpass;
  112. registerRequest.Passnew = newpass;
  113. registerRequest.token = token;
  114. RegisterResponse updateProfile = api.UserChangePasswordApi(configuration, registerRequest);
  115. return Json(new
  116. {
  117. code = int.Parse(updateProfile.status),
  118. message = GetLangFromCode(updateProfile.status),
  119. });
  120. }
  121. else
  122. {
  123. return Json(new
  124. {
  125. code = Code.FAILURE,
  126. message = Lang.new_pass_error
  127. });
  128. }
  129. }
  130. catch (Exception ex)
  131. {
  132. log.Error(ex);
  133. }
  134. return Json(new
  135. {
  136. code = Code.FAILURE,
  137. message = Lang.error_happened
  138. });
  139. }
  140. public IActionResult ProfileInfo(String code)
  141. {
  142. if (!CheckAuthToken())
  143. {
  144. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  145. }
  146. ProfileProfileInfo_ViewModel model = new ProfileProfileInfo_ViewModel();
  147. try
  148. {
  149. model.code = code;
  150. Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
  151. model.profile = profile;
  152. }
  153. catch (Exception ex)
  154. {
  155. log.Error(ex);
  156. }
  157. return View(model);
  158. }
  159. [ValidateAntiForgeryToken]
  160. public JsonResult ProfileInfoUpdate_Action(string fullname, string birthday)
  161. {
  162. try
  163. {
  164. String msisdn = HttpContext.Session.GetComplexData<String>("msisdn");
  165. String token = HttpContext.Session.GetComplexData<String>("token");
  166. Profile profile = HttpContext.Session.GetComplexData<Profile>("profile");
  167. String birthdayFormat = DateTime.ParseExact(birthday, "yyyy-MM-dd", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy");
  168. // update
  169. UserUpdateProfileRequest userUpdateProfileRequest = new UserUpdateProfileRequest();
  170. userUpdateProfileRequest.users = msisdn;
  171. userUpdateProfileRequest.fullName = fullname;
  172. userUpdateProfileRequest.birthday = birthdayFormat;
  173. userUpdateProfileRequest.picture = profile.realPicture;
  174. userUpdateProfileRequest.token = token;
  175. UserUpdateProfileResponse updateProfile = api.UserUpdateProfileApi(configuration, userUpdateProfileRequest);
  176. if (updateProfile.status == Code.SUCCESS)
  177. {
  178. // update profile
  179. profile.fullName = fullname;
  180. profile.birthday = birthdayFormat;
  181. HttpContext.Session.SetComplexData("profile", profile);
  182. }
  183. return Json(new
  184. {
  185. code = int.Parse(updateProfile.status),
  186. message = GetLangFromCode(updateProfile.status)
  187. });
  188. }
  189. catch (Exception ex)
  190. {
  191. log.Error(ex);
  192. }
  193. return Json(new
  194. {
  195. code = Code.FAILURE,
  196. message = Lang.error_happened
  197. });
  198. }
  199. public IActionResult HowToPlay(string termType)
  200. {
  201. if (!CheckAuthToken())
  202. {
  203. return Redirect(GetParameter(Constants.SUB_DOMAIN) + "/Account/Login");
  204. }
  205. ProfileHowToPlay_ViewModel model = new ProfileHowToPlay_ViewModel();
  206. model.termType = termType != null ? termType : Constants.BOLET_CODE;
  207. return View(model);
  208. }
  209. }
  210. }