UtilsController.cs 23 KB

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