UtilsController.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. using Microsoft.Ajax.Utilities;
  2. using NEducation.Code;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Configuration;
  7. using System.Linq;
  8. using System.Net.Http;
  9. using System.ServiceModel;
  10. using System.Text;
  11. using System.Web;
  12. using System.Web.Mvc;
  13. using NEducation.Content.Texts;
  14. // FOR FUNCTION HANDLER -> CALLED FROM OTHERS CONTROLLER
  15. namespace NEducation.Controllers
  16. {
  17. public class UtilsController : Controller
  18. {
  19. private static log4net.ILog Log { get; set; } = log4net.LogManager.GetLogger(typeof(BaseController));
  20. public static String CountryCode = ConfigurationManager.AppSettings["country_code"];
  21. public static String ServiceId = ConfigurationManager.AppSettings["service_id"];
  22. public static int questionTimeout = int.Parse(ConfigurationManager.AppSettings["questionTimeout"]);
  23. // GET: Common
  24. public static String DateFormat = "dd/MM/yyyy HH:mm:ss";
  25. // GET: Utils
  26. public ActionResult Index()
  27. {
  28. return View();
  29. }
  30. // load profile of user
  31. public static void ReloadProfileInfo()
  32. {
  33. String msisdn = System.Web.HttpContext.Current.Session["msisdn"] as String;
  34. if (msisdn != null)
  35. {
  36. GetUserProfileReq req = new GetUserProfileReq();
  37. req.users = msisdn;
  38. String rs = SendPost(req, System.Web.HttpContext.Current.Session.SessionID, WsType.UsersGetProfile);
  39. UserProfile profile = new UserProfile(rs);
  40. System.Diagnostics.Debug.WriteLine("profile: " + profile);
  41. System.Web.HttpContext.Current.Session["profile"] = profile;
  42. }
  43. }
  44. // load sub info
  45. public static void ReloadSubInfo()
  46. {
  47. String msisdn = System.Web.HttpContext.Current.Session["msisdn"] as String;
  48. if (msisdn != null)
  49. {
  50. GetSubReq reqSub = new GetSubReq();
  51. reqSub.msisdn = msisdn;
  52. System.Diagnostics.Debug.WriteLine("reqSub: " + reqSub);
  53. String rs = SendPost(reqSub, System.Web.HttpContext.Current.Session.SessionID, WsType.SubGetListsubServiceCode);
  54. GetSubRes resSub = new GetSubRes(rs);
  55. if (resSub.listSubServiceCode != null)
  56. {
  57. if (resSub.listSubServiceCode.Count > 0)
  58. {
  59. System.Web.HttpContext.Current.Session["isSub"] = "true";
  60. }
  61. }
  62. else
  63. {
  64. System.Web.HttpContext.Current.Session["isSub"] = "false";
  65. }
  66. System.Web.HttpContext.Current.Session["subInfo"] = resSub.listSubServiceCode;
  67. }
  68. }
  69. public static String validateMsisdn(String input)
  70. {
  71. if (input == null || input.Length == 0 || !long.TryParse(input, out long temp))
  72. {
  73. return "";
  74. }
  75. else
  76. {
  77. if (!input.StartsWith("855") && input.Length <=13)
  78. {
  79. input = "855" + input;
  80. }
  81. else if (!input.StartsWith("855") && input.Length == 11)
  82. {
  83. //input = "855" + input;
  84. input = "855" + input.Substring(1);
  85. return input;
  86. }
  87. else if (input.StartsWith("855") && input.Length <= 13)
  88. {
  89. return input;
  90. }
  91. else if (input.StartsWith("855") && input.Length == 11)
  92. {
  93. input = "855" + input.Substring(3);
  94. return input;
  95. }
  96. else if (!input.StartsWith("855") && input.Length == 9)
  97. {
  98. input = "855" + input;
  99. return input;
  100. }
  101. else
  102. return "";
  103. }
  104. return input;
  105. }
  106. public static Boolean checkLocalMsisdn(String input)
  107. {
  108. if (input == null || input.Length == 0 || !long.TryParse(input, out long temp))
  109. {
  110. return false;
  111. }
  112. else
  113. {
  114. if (!input.StartsWith("856") && input.Length == 11 && (input.StartsWith("02") || input.StartsWith("03")))
  115. {
  116. return true;
  117. }
  118. else if (!input.StartsWith("856") && input.Length == 10 && (input.StartsWith("2") || input.StartsWith("3")))
  119. {
  120. return true;
  121. }
  122. else if (input.StartsWith("856") && (input.Length == 13 || input.Length == 14))
  123. {
  124. String real = input.Substring(3);
  125. if (real.StartsWith("2") || real.StartsWith("3") || real.StartsWith("02") || real.StartsWith("03"))
  126. {
  127. return true;
  128. }
  129. }
  130. }
  131. return false;
  132. }
  133. public static Boolean checkAccountSub(String msisdn, String package)
  134. {
  135. GetSubReq reqSub = new GetSubReq();
  136. reqSub.msisdn = msisdn;
  137. System.Diagnostics.Debug.WriteLine("reqSub: " + reqSub);
  138. String rs = SendPost(reqSub, System.Web.HttpContext.Current.Session.SessionID, WsType.SubGetListsubServiceCode);
  139. GetSubRes resSub = new GetSubRes(rs);
  140. if (resSub.listSubServiceCode != null)
  141. {
  142. if (resSub.listSubServiceCode.Count > 0)
  143. {
  144. SubInfo subInfo = resSub.listSubServiceCode.Find(x => x.subServiceName == package);
  145. if (subInfo == null)
  146. {
  147. return false;
  148. }
  149. else
  150. {
  151. return true;
  152. }
  153. }
  154. else
  155. return false;
  156. }
  157. else
  158. {
  159. return false;
  160. }
  161. }
  162. public class WsType
  163. {
  164. public const String UsersCheckStatus = "wsUsersCheckStatus";
  165. public const String usersSetLanguage = "usersSetLanguage";
  166. public const String UsersGetProfile = "wsUsersGetProfile";
  167. public const String UserViewUpdate = "wsUsersViewUpdate";
  168. public const String UsersSearchProfile = "wsUsersSearchProfile";
  169. public const String UserGetListLike = "wsUserGetListLike";
  170. public const String UsersChatSend = "wsUsersChatSend";
  171. public const String UsersChatGet = "wsUsersChatGet";
  172. public const String UsersChatDetailGet = "wsUsersChatDetailGet";
  173. public const String UsersChatDetailUpCheck = "wsUsersChatDetailUpCheck";
  174. public const String UsersChatDelete = "wsUsersChatDelete";
  175. public const String UsersChatDetailDelete = "wsUsersChatDetailDelete";
  176. public const String UsersMesageSend = "wsUsersMesageSend";
  177. public const String UsersMesageGet = "wsUsersMesageGet";
  178. public const String UsersMesageCheck = "wsUsersMesageCheck";
  179. public const String UsersPicUpload = "wsUsersPicUpload";
  180. public const String UsersPicGet = "wsUsersPicGet";
  181. public const String UsersLikeUpdate = "wsUsersLikeUpdate";
  182. public const String UsersGiftGetList = "wsUsersGiftGetList";
  183. public const String UsersGiftSend = "wsUsersGiftSend";
  184. public const String UsersGiftGetByUsers = "wsUsersGiftGetByUsers";
  185. public const String UsersGetProvince = "wsUsersGetProvice";
  186. public const String UsersGetInterests = "wsUsersGetInterests";
  187. public const String UsersGetInterestsByUser = "wsUsersGetInterestsByUser";
  188. public const String UsersInterestsUpdate = "wsUsersInterestsUpdate";
  189. // MEDU
  190. public const String UsersRegister = "usersRegister";
  191. public const String MpsRequest = "mpsRequest";
  192. public const String UsersGetRanking = "wsUsersGetRanking";
  193. public const String GetVocabularyCourses = "GetVocabularyCourses";
  194. public const String GetLessonOfCategory = "getLessonOfCategory";
  195. public const String GetContentOfVocabulary = "getContentOfVocabulary";
  196. public const String GetContentOfGrammar = "getContentOfGrammar";
  197. public const String GetContentOfListen = "getContentOfListen";
  198. public const String buyCourse = "buyCourse";
  199. public const String GetContentOfQuestion = "getContentOfQuestion";
  200. public const String GetAnsweerOfQuestion = "getAnsweerOfQuestion";
  201. public const String GetCourseHis = "getCourseHis";
  202. public const String GetRanking = "getRanking";
  203. public const String UsersUpdateProfile = "usersUpdateProfile";
  204. public const String GetMiniGameCondition = "wsGetMiniGameCondition";
  205. public const String GetRankMiniGame = "GetRankMiniGame";
  206. public const String wsCheckTransaction = "wsCheckTransaction";
  207. public const String SubGetListsubServiceCode = "subGetListsubServiceCode";
  208. public const String GetHfDatabyParentId = "getHfDatabyParentId";
  209. public const String GetHfDatabyId = "getHfDatabyId";
  210. public const String UsersUpdateCoin = "wsUsersUpdateCoin";
  211. public const String ChangeCoinToMoney = "wsChangeCoinToMoney";
  212. //public const String MpsRequest = "wsMpsRequest";
  213. public const String SubCheckStatus = "wsSubCheckStatus";
  214. public const String SubSendMt = "wsSubSendMt";
  215. public const String SubTopup = "wsSubTopup";
  216. public const String SystemCharge = "wsSystemCharge";
  217. //public const String SubGetListsubServiceCode = "wsSubGetListsubServiceCode";
  218. public const String NewsWebGetList = "wsNewsWebGetList";
  219. public const String NewsWebInsert = "wsNewsWebInsert";
  220. public const String NewsWebUpdate = "wsNewsWebUpdate";
  221. public const String NewsSmsGetList = "wsNewsSmsGetList";
  222. public const String NewsSmsInsert = "wsNewsSmsInsert";
  223. public const String NewsSmsUpdate = "wsNewsSmsUpdate";
  224. public const String GoogleCaptcha = "GoogleCaptcha";
  225. public const String SUB_DOMAIN = "subDomain";
  226. public const String URL_GET_MSISDN = "http://10.120.52.5:8699/privateApi/decrypt/v1/users";
  227. }
  228. public class WapConstant
  229. {
  230. public const String SUCCESS = "0";
  231. public const String FAILURE = "1";
  232. public const String CANCEL_USER_IN_CHARGING_LIST = "414";
  233. public const String BUY_TURN = "REGISTER";
  234. public const String REGISTER = "REGISTER";
  235. public const String FLOWER = "FLOWER";
  236. public const String ROSE = "ROSE";
  237. public const String CAR = "CAR";
  238. public const String HOUSE = "HOUSE";
  239. public const String CANCEL = "CANCEL";
  240. public const String MSISDN = "MSISDN";
  241. public const String NOT_REGISTER = "-101";
  242. public const String DOMAIN = "domain";
  243. public const String REGISTER_FOR_WS = "1";
  244. public const String CANCEL_FOR_WS = "2";
  245. }
  246. public class HttpCode
  247. {
  248. // http code
  249. public const String FALSE = "-10";
  250. public const String WAITING_OTP = "100";
  251. public const String USER_EXISTED = "2";
  252. public const String NO_DATA = "1";
  253. public const String SUCCESS = "0";
  254. public const String INVALID_MSISDN = "-1";
  255. public const String EXCEPTION = "-2";
  256. public const String USER_NOT_REGISTER = "-16";
  257. public const String AUTHEN_FAIL = "-10";
  258. public const String USER_LOGIN_FAIL = "-17";
  259. public const String IMAGE_NOT_VALID = "3";
  260. public const String NOT_EXISTED = "1000";
  261. public const String USER_GET_PROFILE_FAIL = "-18";
  262. public const String USER_GET_LIST_SERVICE_FAIL = "-19";
  263. public const String USER_GET_RANKING_FAIL = "-20";
  264. public const String USER_UPDATE_PLAYING_FAIL = "-21";
  265. }
  266. public static String ErrorContent(String errorCode)
  267. {
  268. //ResourceManager myManager = new ResourceManager(typeof(ErrCode));
  269. //return myManager.GetString(errorCode);
  270. return errorCode;
  271. }
  272. public static String SendPost(PostObj obj, String sessionId, String type)
  273. {
  274. obj.serviceId = UtilsController.ServiceId;
  275. var json = JsonConvert.SerializeObject(obj);
  276. var data = new StringContent(json, Encoding.UTF8, "application/json");
  277. var url = GetWsClient(type);
  278. Log.Debug("URL: " + url);
  279. Log.Debug("Request: " + json);
  280. using (var client = new HttpClient())
  281. {
  282. var response = client.PostAsync(url, data).Result;
  283. if (response.IsSuccessStatusCode)
  284. {
  285. var responseContent = response.Content;
  286. // by calling .Result you are synchronously reading the result
  287. string responseString = responseContent.ReadAsStringAsync().Result;
  288. Log.Debug("Response: " + responseString);
  289. return responseString;
  290. }
  291. else
  292. {
  293. Log.Error("Response: " + response.StatusCode.ToString());
  294. return response.StatusCode.ToString();
  295. }
  296. }
  297. }
  298. public static string SendPostWithAuthen(PostObj obj, string url, string token)
  299. {
  300. obj.serviceId = UtilsController.ServiceId;
  301. var json = JsonConvert.SerializeObject(obj);
  302. var data = new StringContent(json, Encoding.UTF8, "application/json");
  303. Log.Debug("url: " + url);
  304. Log.Debug("Request: " + json);
  305. using (var client = new HttpClient())
  306. {
  307. var response = client.PostAsync(url, data).Result;
  308. client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
  309. if (response.IsSuccessStatusCode)
  310. {
  311. var responseContent = response.Content;
  312. // by calling .Result you are synchronously reading the result
  313. string responseString = responseContent.ReadAsStringAsync().Result;
  314. Log.Debug("Response: " + responseString);
  315. return responseString;
  316. }
  317. Log.Debug("Error res: " + response);
  318. return response.StatusCode.ToString();
  319. }
  320. }
  321. public static string SendGetWithAuthen(string url, string token)
  322. {
  323. Log.Debug("url: " + url);
  324. using (var client = new HttpClient())
  325. {
  326. client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
  327. var response = client.GetAsync(url).Result;
  328. if (response.IsSuccessStatusCode)
  329. {
  330. var responseContent = response.Content;
  331. // by calling .Result you are synchronously reading the result
  332. string responseString = responseContent.ReadAsStringAsync().Result;
  333. Log.Debug("Response: " + responseString);
  334. return responseString;
  335. }
  336. Log.Debug("Error res: " + response);
  337. return response.StatusCode.ToString();
  338. }
  339. }
  340. public static String GetWsClient(String type)
  341. {
  342. return ConfigurationManager.AppSettings[type];
  343. }
  344. public static void SetWsClient(ref NEduService.WsNEduClient wsClient, String sessionId)
  345. {
  346. int lastNum = sessionId[sessionId.Length - 1];
  347. if (lastNum % 2 == 0)
  348. {
  349. wsClient.Endpoint.Address = new EndpointAddress(ConfigurationManager.AppSettings["wsUrl1"]);
  350. }
  351. else
  352. {
  353. wsClient.Endpoint.Address = new EndpointAddress(ConfigurationManager.AppSettings["wsUrl2"]);
  354. }
  355. }
  356. public static String GetCategoryCode(String courseType)
  357. {
  358. String categoryCode;
  359. if (courseType != null)
  360. {
  361. System.Web.HttpContext.Current.Session["courseType"] = courseType;
  362. categoryCode = courseType == "1" ? "VOCABULARY" :
  363. courseType == "2" ? "GRAMMAR" :
  364. courseType == "3" ? "LISTEN" :
  365. courseType == Constant.VN_LISTEN ? Constant.VN_LISTEN_CATE :
  366. Constant.LAO_LISTEN_CATE;
  367. }
  368. else
  369. {
  370. courseType = System.Web.HttpContext.Current.Session["courseType"] as String;
  371. if (courseType == null)
  372. {
  373. System.Web.HttpContext.Current.Session["courseType"] = "1";
  374. courseType = "1";
  375. }
  376. categoryCode = "VOCABULARY";
  377. }
  378. return categoryCode;
  379. }
  380. public class GetContentPath
  381. {
  382. public const String PeronalContentPath = "../Content/assets/imgs/picture/lesson/";
  383. public const String LessonContentPath = "../Content/assets/imgs/picture/lesson/";
  384. public const String CourseContentPath = "../Content/assets/imgs/picture/course/";
  385. public const String VocabularyContentPath = "../Content/assets/imgs/picture/vocabulary/";
  386. public const String GrammarContentPath = "../Content/assets/imgs/picture/grammar/";
  387. public const String ListenContentPath = "../Content/assets/imgs/picture/listen/";
  388. public const String QuestionContentPath = "../Content/assets/imgs/picture/question/";
  389. public const String CategoryContentPath = "../Content/assets/imgs/picture/category/";
  390. public const String IndividualContentPath = "../Content/assets/imgs/post/";
  391. }
  392. public class GetContentType
  393. {
  394. //1=text,2=link aidio,3=link video,4=file audio,5=file viedeo,6=file picture
  395. public const String TEXT_TYPE = "1";
  396. public const String AUDIO_LINK = "2";
  397. public const String VIDEO_LINK = "3";
  398. public const String AUDIO_FILE = "4";
  399. public const String VIDEO_FILE = "5";
  400. public const String PICTURE_FILE = "6";
  401. }
  402. public static string GetErrorCodeCharging(string code)
  403. {
  404. switch (code)
  405. {
  406. case "0": return ErrCode.Success;
  407. case "-1": return ErrCode.Unknown;
  408. case "-10": return ErrCode.SystemErr;
  409. case "-11": return ErrCode.ErrUnknown;
  410. case "-12": return ErrCode.NotEnoughMoney;
  411. case "-13": return ErrCode.WrongOTP;
  412. case "-14": return ErrCode.InvalidIOTP;
  413. case "-15": return ErrCode.TimeoutOTP;
  414. case "1": return ErrCode.LoginFailure;
  415. case "2": return ErrCode.UserExisted;
  416. case "-2": return ErrCode.RegisterFailure;
  417. case "3": return ErrCode.PasswordInvalid;
  418. case "-3": return ErrCode.TypeErr;
  419. case "4": return ErrCode.WrongOldPass;
  420. case "-4": return ErrCode.ErrTypePackage;
  421. case "5": return ErrCode.CoinInvalid;
  422. case "-5": return ErrCode.WrongServiceID;
  423. case "6": return ErrCode.TranCodeInvalid;
  424. case "7": return Lang.UserLocked;
  425. default: return code + " UNKNOWN CODE";
  426. }
  427. }
  428. public static string GetPackagename(string code, String whichDevice, String isRegister)
  429. {
  430. switch (code)
  431. {
  432. case Constant.VIETNAMESE: return "EDU_REGISTER_VIET";
  433. case Constant.LAOS: return "EDU_REGISTER_LAO";
  434. case Constant.ENGLISH:
  435. if (whichDevice == UtilsController.Constant.REGISTER_ON_APP && isRegister == "REGISTER")
  436. {
  437. return UtilsController.Constant.MEDU_CAMID_DAILY_REGISTER;
  438. }
  439. if (whichDevice == UtilsController.Constant.REGISTER_ON_APP && isRegister == "CANCEL")
  440. {
  441. return UtilsController.Constant.MEDU_CAMID_DAILY_REGISTER;
  442. }
  443. if (whichDevice == UtilsController.Constant.REGISTER_ON_WEB && isRegister == "REGISTER")
  444. {
  445. return UtilsController.Constant.MEDU_DAILY_REGISTER;
  446. }
  447. if (whichDevice == UtilsController.Constant.REGISTER_ON_WEB && isRegister == "CANCEL")
  448. {
  449. return UtilsController.Constant.MEDU_DAILY_CANCEL;
  450. }
  451. else
  452. {
  453. return code + " UNKNOWN CODE";
  454. }
  455. case Constant.HOMEFITNESS: return UtilsController.Constant.EDU_HOME_FITNESS_REG;
  456. default: return code + " UNKNOWN CODE";
  457. }
  458. }
  459. public class Constant
  460. {
  461. public const String USER_SUBSCRIBER = "1";
  462. public const String USER_NORMAL = "0";
  463. public const String WAITING_OTP = "100";
  464. public const String SUCCESS = "0";
  465. public const String INVALID_MSISDN = "-1";
  466. public const String EXCEPTION = "-2";
  467. public const String USER_EXISTED = "2";
  468. public const String VOCABULARY = "VOCABULARY";
  469. public const String GRAMMAR = "GRAMMAR";
  470. public const String LISTEN = "LISTEN";
  471. public const String VIETNAMESE = "1";
  472. public const String LAOS = "2";
  473. public const String ENGLISH = "3";
  474. public const String HOMEFITNESS = "4";
  475. public const String EN_VOCABULARY = "1";
  476. public const String EN_GRAMMAR = "2";
  477. public const String EN_LISTEN = "3";
  478. public const String VN_VOCABULARY = "4";
  479. public const String VN_GRAMMAR = "5";
  480. public const String VN_LISTEN = "6";
  481. public const String LAO_VOCABULARY = "7";
  482. public const String LAO_GRAMMAR = "8";
  483. public const String LAO_LISTEN = "9";
  484. public const String EN_MINIGAME = "10";
  485. public const String VN_VOCABULARY_CATE = "VN_VOCABULARY";
  486. public const String VN_GRAMMAR_CATE = "VN_GRAMMAR";
  487. public const String VN_LISTEN_CATE = "VN_LISTEN";
  488. public const String LAO_VOCABULARY_CATE = "LAO_VOCABULARY";
  489. public const String LAO_GRAMMAR_CATE = "LAO_GRAMMAR";
  490. public const String LAO_LISTEN_CATE = "LAO_LISTEN";
  491. public const String BUY_COURSE = "2";
  492. public const String REGISTER = "1";
  493. public const String REGISTER_ON_APP = "ONAPP";
  494. public const String REGISTER_ON_WEB = "ONWEB";
  495. public const String MEDU_DAILY_REGISTER = "MEDU_DAILY_REGISTER";
  496. public const String MEDU_DAILY_CANCEL = "MEDU_DAILY_CANCEL";
  497. public const String MEDU_CAMID_DAILY_REGISTER = "MEDU_CAMID_DAILY_REGISTER";
  498. public const String MEDU_CAMID_DAILY_CANCEL = "MEDU_CAMID_DAILY_CANCEL";
  499. public const String EDU_HOME_FITNESS_REG = "EDU_HOME_FITNESS_REG";
  500. public const String PARENT_ID = "-1";
  501. }
  502. }
  503. }