using Microsoft.Ajax.Utilities; using NEducation.Code; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Net.Http; using System.ServiceModel; using System.Text; using System.Web; using System.Web.Mvc; using NEducation.Content.Texts; // FOR FUNCTION HANDLER -> CALLED FROM OTHERS CONTROLLER namespace NEducation.Controllers { public class UtilsController : Controller { private static log4net.ILog Log { get; set; } = log4net.LogManager.GetLogger(typeof(BaseController)); public static String CountryCode = ConfigurationManager.AppSettings["country_code"]; public static String ServiceId = ConfigurationManager.AppSettings["service_id"]; public static int questionTimeout = int.Parse(ConfigurationManager.AppSettings["questionTimeout"]); // GET: Common public static String DateFormat = "dd/MM/yyyy HH:mm:ss"; // GET: Utils public ActionResult Index() { return View(); } // load profile of user public static void ReloadProfileInfo() { String msisdn = System.Web.HttpContext.Current.Session["msisdn"] as String; if (msisdn != null) { GetUserProfileReq req = new GetUserProfileReq(); req.users = msisdn; String rs = SendPost(req, System.Web.HttpContext.Current.Session.SessionID, WsType.UsersGetProfile); UserProfile profile = new UserProfile(rs); System.Diagnostics.Debug.WriteLine("profile: " + profile); System.Web.HttpContext.Current.Session["profile"] = profile; } } // load sub info public static void ReloadSubInfo() { String msisdn = System.Web.HttpContext.Current.Session["msisdn"] as String; if (msisdn != null) { GetSubReq reqSub = new GetSubReq(); reqSub.msisdn = msisdn; System.Diagnostics.Debug.WriteLine("reqSub: " + reqSub); String rs = SendPost(reqSub, System.Web.HttpContext.Current.Session.SessionID, WsType.SubGetListsubServiceCode); GetSubRes resSub = new GetSubRes(rs); if (resSub.listSubServiceCode != null) { if (resSub.listSubServiceCode.Count > 0) { System.Web.HttpContext.Current.Session["isSub"] = "true"; } } else { System.Web.HttpContext.Current.Session["isSub"] = "false"; } System.Web.HttpContext.Current.Session["subInfo"] = resSub.listSubServiceCode; } } public static String validateMsisdn(String input) { if (input == null || input.Length == 0 || !long.TryParse(input, out long temp)) { return ""; } else { if (!input.StartsWith("855") && input.Length <=13) { input = "855" + input; } else if (!input.StartsWith("855") && input.Length == 11) { //input = "855" + input; input = "855" + input.Substring(1); return input; } else if (input.StartsWith("855") && input.Length <= 13) { return input; } else if (input.StartsWith("855") && input.Length == 11) { input = "855" + input.Substring(3); return input; } else if (!input.StartsWith("855") && input.Length == 9) { input = "855" + input; return input; } else return ""; } return input; } public static Boolean checkLocalMsisdn(String input) { if (input == null || input.Length == 0 || !long.TryParse(input, out long temp)) { return false; } else { if (!input.StartsWith("856") && input.Length == 11 && (input.StartsWith("02") || input.StartsWith("03"))) { return true; } else if (!input.StartsWith("856") && input.Length == 10 && (input.StartsWith("2") || input.StartsWith("3"))) { return true; } else if (input.StartsWith("856") && (input.Length == 13 || input.Length == 14)) { String real = input.Substring(3); if (real.StartsWith("2") || real.StartsWith("3") || real.StartsWith("02") || real.StartsWith("03")) { return true; } } } return false; } public static Boolean checkAccountSub(String msisdn, String package) { GetSubReq reqSub = new GetSubReq(); reqSub.msisdn = msisdn; System.Diagnostics.Debug.WriteLine("reqSub: " + reqSub); String rs = SendPost(reqSub, System.Web.HttpContext.Current.Session.SessionID, WsType.SubGetListsubServiceCode); GetSubRes resSub = new GetSubRes(rs); if (resSub.listSubServiceCode != null) { if (resSub.listSubServiceCode.Count > 0) { SubInfo subInfo = resSub.listSubServiceCode.Find(x => x.subServiceName == package); if (subInfo == null) { return false; } else { return true; } } else return false; } else { return false; } } public class WsType { public const String UsersCheckStatus = "wsUsersCheckStatus"; public const String usersSetLanguage = "usersSetLanguage"; public const String UsersGetProfile = "wsUsersGetProfile"; public const String UserViewUpdate = "wsUsersViewUpdate"; public const String UsersSearchProfile = "wsUsersSearchProfile"; public const String UserGetListLike = "wsUserGetListLike"; public const String UsersChatSend = "wsUsersChatSend"; public const String UsersChatGet = "wsUsersChatGet"; public const String UsersChatDetailGet = "wsUsersChatDetailGet"; public const String UsersChatDetailUpCheck = "wsUsersChatDetailUpCheck"; public const String UsersChatDelete = "wsUsersChatDelete"; public const String UsersChatDetailDelete = "wsUsersChatDetailDelete"; public const String UsersMesageSend = "wsUsersMesageSend"; public const String UsersMesageGet = "wsUsersMesageGet"; public const String UsersMesageCheck = "wsUsersMesageCheck"; public const String UsersPicUpload = "wsUsersPicUpload"; public const String UsersPicGet = "wsUsersPicGet"; public const String UsersLikeUpdate = "wsUsersLikeUpdate"; public const String UsersGiftGetList = "wsUsersGiftGetList"; public const String UsersGiftSend = "wsUsersGiftSend"; public const String UsersGiftGetByUsers = "wsUsersGiftGetByUsers"; public const String UsersGetProvince = "wsUsersGetProvice"; public const String UsersGetInterests = "wsUsersGetInterests"; public const String UsersGetInterestsByUser = "wsUsersGetInterestsByUser"; public const String UsersInterestsUpdate = "wsUsersInterestsUpdate"; // MEDU public const String UsersRegister = "usersRegister"; public const String MpsRequest = "mpsRequest"; public const String UsersGetRanking = "wsUsersGetRanking"; public const String GetVocabularyCourses = "GetVocabularyCourses"; public const String GetLessonOfCategory = "getLessonOfCategory"; public const String GetContentOfVocabulary = "getContentOfVocabulary"; public const String GetContentOfGrammar = "getContentOfGrammar"; public const String GetContentOfListen = "getContentOfListen"; public const String buyCourse = "buyCourse"; public const String GetContentOfQuestion = "getContentOfQuestion"; public const String GetAnsweerOfQuestion = "getAnsweerOfQuestion"; public const String GetCourseHis = "getCourseHis"; public const String GetRanking = "getRanking"; public const String UsersUpdateProfile = "usersUpdateProfile"; public const String GetMiniGameCondition = "wsGetMiniGameCondition"; public const String GetRankMiniGame = "GetRankMiniGame"; public const String wsCheckTransaction = "wsCheckTransaction"; public const String SubGetListsubServiceCode = "subGetListsubServiceCode"; public const String GetHfDatabyParentId = "getHfDatabyParentId"; public const String GetHfDatabyId = "getHfDatabyId"; public const String UsersUpdateCoin = "wsUsersUpdateCoin"; public const String ChangeCoinToMoney = "wsChangeCoinToMoney"; //public const String MpsRequest = "wsMpsRequest"; public const String SubCheckStatus = "wsSubCheckStatus"; public const String SubSendMt = "wsSubSendMt"; public const String SubTopup = "wsSubTopup"; public const String SystemCharge = "wsSystemCharge"; //public const String SubGetListsubServiceCode = "wsSubGetListsubServiceCode"; public const String NewsWebGetList = "wsNewsWebGetList"; public const String NewsWebInsert = "wsNewsWebInsert"; public const String NewsWebUpdate = "wsNewsWebUpdate"; public const String NewsSmsGetList = "wsNewsSmsGetList"; public const String NewsSmsInsert = "wsNewsSmsInsert"; public const String NewsSmsUpdate = "wsNewsSmsUpdate"; public const String GoogleCaptcha = "GoogleCaptcha"; public const String SUB_DOMAIN = "subDomain"; public const String URL_GET_MSISDN = "http://10.120.52.5:8699/privateApi/decrypt/v1/users"; } public class WapConstant { public const String SUCCESS = "0"; public const String FAILURE = "1"; public const String CANCEL_USER_IN_CHARGING_LIST = "414"; public const String BUY_TURN = "REGISTER"; public const String REGISTER = "REGISTER"; public const String FLOWER = "FLOWER"; public const String ROSE = "ROSE"; public const String CAR = "CAR"; public const String HOUSE = "HOUSE"; public const String CANCEL = "CANCEL"; public const String MSISDN = "MSISDN"; public const String NOT_REGISTER = "-101"; public const String DOMAIN = "domain"; public const String REGISTER_FOR_WS = "1"; public const String CANCEL_FOR_WS = "2"; } public class HttpCode { // http code public const String FALSE = "-10"; public const String WAITING_OTP = "100"; public const String USER_EXISTED = "2"; public const String NO_DATA = "1"; public const String SUCCESS = "0"; public const String INVALID_MSISDN = "-1"; public const String EXCEPTION = "-2"; public const String USER_NOT_REGISTER = "-16"; public const String AUTHEN_FAIL = "-10"; public const String USER_LOGIN_FAIL = "-17"; public const String IMAGE_NOT_VALID = "3"; public const String NOT_EXISTED = "1000"; public const String USER_GET_PROFILE_FAIL = "-18"; public const String USER_GET_LIST_SERVICE_FAIL = "-19"; public const String USER_GET_RANKING_FAIL = "-20"; public const String USER_UPDATE_PLAYING_FAIL = "-21"; } public static String ErrorContent(String errorCode) { //ResourceManager myManager = new ResourceManager(typeof(ErrCode)); //return myManager.GetString(errorCode); return errorCode; } public static String SendPost(PostObj obj, String sessionId, String type) { obj.serviceId = UtilsController.ServiceId; var json = JsonConvert.SerializeObject(obj); var data = new StringContent(json, Encoding.UTF8, "application/json"); var url = GetWsClient(type); Log.Debug("URL: " + url); Log.Debug("Request: " + json); using (var client = new HttpClient()) { var response = client.PostAsync(url, data).Result; if (response.IsSuccessStatusCode) { var responseContent = response.Content; // by calling .Result you are synchronously reading the result string responseString = responseContent.ReadAsStringAsync().Result; Log.Debug("Response: " + responseString); return responseString; } else { Log.Error("Response: " + response.StatusCode.ToString()); return response.StatusCode.ToString(); } } } public static string SendPostWithAuthen(PostObj obj, string url, string token) { obj.serviceId = UtilsController.ServiceId; var json = JsonConvert.SerializeObject(obj); var data = new StringContent(json, Encoding.UTF8, "application/json"); Log.Debug("url: " + url); Log.Debug("Request: " + json); using (var client = new HttpClient()) { var response = client.PostAsync(url, data).Result; client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); if (response.IsSuccessStatusCode) { var responseContent = response.Content; // by calling .Result you are synchronously reading the result string responseString = responseContent.ReadAsStringAsync().Result; Log.Debug("Response: " + responseString); return responseString; } Log.Debug("Error res: " + response); return response.StatusCode.ToString(); } } public static string SendGetWithAuthen(string url, string token) { Log.Debug("url: " + url); using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); var response = client.GetAsync(url).Result; if (response.IsSuccessStatusCode) { var responseContent = response.Content; // by calling .Result you are synchronously reading the result string responseString = responseContent.ReadAsStringAsync().Result; Log.Debug("Response: " + responseString); return responseString; } Log.Debug("Error res: " + response); return response.StatusCode.ToString(); } } public static String GetWsClient(String type) { return ConfigurationManager.AppSettings[type]; } public static void SetWsClient(ref NEduService.WsNEduClient wsClient, String sessionId) { int lastNum = sessionId[sessionId.Length - 1]; if (lastNum % 2 == 0) { wsClient.Endpoint.Address = new EndpointAddress(ConfigurationManager.AppSettings["wsUrl1"]); } else { wsClient.Endpoint.Address = new EndpointAddress(ConfigurationManager.AppSettings["wsUrl2"]); } } public static String GetCategoryCode(String courseType) { String categoryCode; if (courseType != null) { System.Web.HttpContext.Current.Session["courseType"] = courseType; categoryCode = courseType == "1" ? "VOCABULARY" : courseType == "2" ? "GRAMMAR" : courseType == "3" ? "LISTEN" : courseType == Constant.VN_LISTEN ? Constant.VN_LISTEN_CATE : Constant.LAO_LISTEN_CATE; } else { courseType = System.Web.HttpContext.Current.Session["courseType"] as String; if (courseType == null) { System.Web.HttpContext.Current.Session["courseType"] = "1"; courseType = "1"; } categoryCode = "VOCABULARY"; } return categoryCode; } public class GetContentPath { public const String PeronalContentPath = "../Content/assets/imgs/picture/lesson/"; public const String LessonContentPath = "../Content/assets/imgs/picture/lesson/"; public const String CourseContentPath = "../Content/assets/imgs/picture/course/"; public const String VocabularyContentPath = "../Content/assets/imgs/picture/vocabulary/"; public const String GrammarContentPath = "../Content/assets/imgs/picture/grammar/"; public const String ListenContentPath = "../Content/assets/imgs/picture/listen/"; public const String QuestionContentPath = "../Content/assets/imgs/picture/question/"; public const String CategoryContentPath = "../Content/assets/imgs/picture/category/"; public const String IndividualContentPath = "../Content/assets/imgs/post/"; } public class GetContentType { //1=text,2=link aidio,3=link video,4=file audio,5=file viedeo,6=file picture public const String TEXT_TYPE = "1"; public const String AUDIO_LINK = "2"; public const String VIDEO_LINK = "3"; public const String AUDIO_FILE = "4"; public const String VIDEO_FILE = "5"; public const String PICTURE_FILE = "6"; } public static string GetErrorCodeCharging(string code) { switch (code) { case "0": return ErrCode.Success; case "-1": return ErrCode.Unknown; case "-10": return ErrCode.SystemErr; case "-11": return ErrCode.ErrUnknown; case "-12": return ErrCode.NotEnoughMoney; case "-13": return ErrCode.WrongOTP; case "-14": return ErrCode.InvalidIOTP; case "-15": return ErrCode.TimeoutOTP; case "1": return ErrCode.LoginFailure; case "2": return ErrCode.UserExisted; case "-2": return ErrCode.RegisterFailure; case "3": return ErrCode.PasswordInvalid; case "-3": return ErrCode.TypeErr; case "4": return ErrCode.WrongOldPass; case "-4": return ErrCode.ErrTypePackage; case "5": return ErrCode.CoinInvalid; case "-5": return ErrCode.WrongServiceID; case "6": return ErrCode.TranCodeInvalid; case "7": return Lang.UserLocked; default: return code + " UNKNOWN CODE"; } } public static string GetPackagename(string code, String whichDevice, String isRegister) { switch (code) { case Constant.VIETNAMESE: return "EDU_REGISTER_VIET"; case Constant.LAOS: return "EDU_REGISTER_LAO"; case Constant.ENGLISH: if (whichDevice == UtilsController.Constant.REGISTER_ON_APP && isRegister == "REGISTER") { return UtilsController.Constant.MEDU_CAMID_DAILY_REGISTER; } if (whichDevice == UtilsController.Constant.REGISTER_ON_APP && isRegister == "CANCEL") { return UtilsController.Constant.MEDU_CAMID_DAILY_REGISTER; } if (whichDevice == UtilsController.Constant.REGISTER_ON_WEB && isRegister == "REGISTER") { return UtilsController.Constant.MEDU_DAILY_REGISTER; } if (whichDevice == UtilsController.Constant.REGISTER_ON_WEB && isRegister == "CANCEL") { return UtilsController.Constant.MEDU_DAILY_CANCEL; } else { return code + " UNKNOWN CODE"; } case Constant.HOMEFITNESS: return UtilsController.Constant.EDU_HOME_FITNESS_REG; default: return code + " UNKNOWN CODE"; } } public class Constant { public const String USER_SUBSCRIBER = "1"; public const String USER_NORMAL = "0"; public const String WAITING_OTP = "100"; public const String SUCCESS = "0"; public const String INVALID_MSISDN = "-1"; public const String EXCEPTION = "-2"; public const String USER_EXISTED = "2"; public const String VOCABULARY = "VOCABULARY"; public const String GRAMMAR = "GRAMMAR"; public const String LISTEN = "LISTEN"; public const String VIETNAMESE = "1"; public const String LAOS = "2"; public const String ENGLISH = "3"; public const String HOMEFITNESS = "4"; public const String EN_VOCABULARY = "1"; public const String EN_GRAMMAR = "2"; public const String EN_LISTEN = "3"; public const String VN_VOCABULARY = "4"; public const String VN_GRAMMAR = "5"; public const String VN_LISTEN = "6"; public const String LAO_VOCABULARY = "7"; public const String LAO_GRAMMAR = "8"; public const String LAO_LISTEN = "9"; public const String EN_MINIGAME = "10"; public const String VN_VOCABULARY_CATE = "VN_VOCABULARY"; public const String VN_GRAMMAR_CATE = "VN_GRAMMAR"; public const String VN_LISTEN_CATE = "VN_LISTEN"; public const String LAO_VOCABULARY_CATE = "LAO_VOCABULARY"; public const String LAO_GRAMMAR_CATE = "LAO_GRAMMAR"; public const String LAO_LISTEN_CATE = "LAO_LISTEN"; public const String BUY_COURSE = "2"; public const String REGISTER = "1"; public const String REGISTER_ON_APP = "ONAPP"; public const String REGISTER_ON_WEB = "ONWEB"; public const String MEDU_DAILY_REGISTER = "MEDU_DAILY_REGISTER"; public const String MEDU_DAILY_CANCEL = "MEDU_DAILY_CANCEL"; public const String MEDU_CAMID_DAILY_REGISTER = "MEDU_CAMID_DAILY_REGISTER"; public const String MEDU_CAMID_DAILY_CANCEL = "MEDU_CAMID_DAILY_CANCEL"; public const String EDU_HOME_FITNESS_REG = "EDU_HOME_FITNESS_REG"; public const String PARENT_ID = "-1"; } } }