|
@@ -17,9 +17,10 @@ using Newtonsoft.Json;
|
|
|
using System.Net.Sockets;
|
|
using System.Net.Sockets;
|
|
|
using System.Net;
|
|
using System.Net;
|
|
|
using System.Security.Policy;
|
|
using System.Security.Policy;
|
|
|
-using NEducation.GenKeyWs;
|
|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Configuration;
|
|
|
using System.Threading.Tasks;
|
|
using System.Threading.Tasks;
|
|
|
|
|
+using System.Net.Http;
|
|
|
|
|
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
|
|
|
|
|
|
|
namespace NEducation.Controllers
|
|
namespace NEducation.Controllers
|
|
|
{
|
|
{
|
|
@@ -28,159 +29,217 @@ namespace NEducation.Controllers
|
|
|
private static log4net.ILog log { get; set; } = log4net.LogManager.GetLogger(typeof(HomeController));
|
|
private static log4net.ILog log { get; set; } = log4net.LogManager.GetLogger(typeof(HomeController));
|
|
|
GenKeyWs.WsGenKeyClient wsClient = new GenKeyWs.WsGenKeyClient();
|
|
GenKeyWs.WsGenKeyClient wsClient = new GenKeyWs.WsGenKeyClient();
|
|
|
|
|
|
|
|
-
|
|
|
|
|
- public ActionResult Index(String uuid)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ public ActionResult Index(String token)
|
|
|
{
|
|
{
|
|
|
- Session["navitab"] = "Home";
|
|
|
|
|
HomeModel model = new HomeModel();
|
|
HomeModel model = new HomeModel();
|
|
|
- // nhan dien thue bao
|
|
|
|
|
- String msisdnAuto = null;
|
|
|
|
|
- // check auto login ?uuid=681471d23b83f0a463e2dd5671ea0fc5
|
|
|
|
|
- // ?uuid=681471d23b83f0a463e2dd5671ea0fc5&mcuid=6c6948a89908d83aec8c05be256970a1&mcapp=mocha
|
|
|
|
|
- //uuid = "681471d23b83f0a463e2dd5671ea0fc5";
|
|
|
|
|
- model.uuid = uuid;
|
|
|
|
|
- log.Info("uuid: " + uuid);
|
|
|
|
|
-
|
|
|
|
|
- //string url = Request.Url.AbsoluteUri;
|
|
|
|
|
- //log.Info("url: " + url);
|
|
|
|
|
-
|
|
|
|
|
- //string path = Request.Url.AbsolutePath;
|
|
|
|
|
- //log.Info("path: " + path);
|
|
|
|
|
|
|
+ if (token != null)
|
|
|
|
|
+ {
|
|
|
|
|
|
|
|
- //string host = Request.Url.Host;
|
|
|
|
|
- //log.Info("host: " + host);
|
|
|
|
|
|
|
+ Session["navitab"] = "Home";
|
|
|
|
|
+ //HomeModel model = new HomeModel();
|
|
|
|
|
+ // nhan dien thue bao
|
|
|
|
|
+ String msisdnAuto = null;
|
|
|
|
|
+ model.uuid = token;
|
|
|
|
|
+ log.Info("uuid: " + token);
|
|
|
|
|
+ HttpCookie reqCookies = Request.Cookies["onapp"];
|
|
|
|
|
+ if (reqCookies != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ string isOnApp = reqCookies["isonapp"].ToString();
|
|
|
|
|
+ if (isOnApp == "1")
|
|
|
|
|
+ {
|
|
|
|
|
+ Session["WHICHDEVICE"] = UtilsController.Constant.REGISTER_ON_APP;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- HttpCookie reqCookies = Request.Cookies["onapp"];
|
|
|
|
|
- if (reqCookies != null)
|
|
|
|
|
- {
|
|
|
|
|
- string isOnApp = reqCookies["isonapp"].ToString();
|
|
|
|
|
- if (isOnApp == "1")
|
|
|
|
|
|
|
+ String msisdnToken = getUserFromToken(token);
|
|
|
|
|
+ log.Info("msisdn: " + msisdnToken);
|
|
|
|
|
+ if (msisdnToken != "")
|
|
|
{
|
|
{
|
|
|
|
|
+ //String resDetect = CheckAutoLogin(log, msisdnToken);
|
|
|
|
|
+ //log.Info("token: " + token + " res: " + resDetect);
|
|
|
|
|
+
|
|
|
|
|
+ //if (resDetect != null)
|
|
|
|
|
+ //{
|
|
|
|
|
+ // dynamic json = JsonConvert.DeserializeObject(resDetect);
|
|
|
|
|
+ // log.Info("res json: " + json);
|
|
|
|
|
+
|
|
|
|
|
+ // String code = json["code"];
|
|
|
|
|
+
|
|
|
|
|
+ // if (code == "200")
|
|
|
|
|
+ // {
|
|
|
|
|
+ // String errorCode = json["errorCode"];
|
|
|
|
|
+
|
|
|
|
|
+ // if (errorCode == "200")
|
|
|
|
|
+ // {
|
|
|
|
|
+ // msisdnAuto = json["data"]["msisdn"];
|
|
|
|
|
+ // log.Info("msisdnAuto: " + msisdnAuto);
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // auto login
|
|
|
|
|
+ // reload user info
|
|
|
|
|
+ HttpContext.Session.Remove("regInfos");
|
|
|
|
|
+ Session["msisdnDetect"] = msisdnToken;
|
|
|
|
|
+ // dang ky tren app
|
|
|
Session["WHICHDEVICE"] = UtilsController.Constant.REGISTER_ON_APP;
|
|
Session["WHICHDEVICE"] = UtilsController.Constant.REGISTER_ON_APP;
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
+ HttpCookie onApp = new HttpCookie("onapp");
|
|
|
|
|
+ onApp["isonapp"] = "1";
|
|
|
|
|
+ onApp.Expires = DateTime.Now.AddDays(30);
|
|
|
|
|
+ Response.Cookies.Add(onApp);
|
|
|
|
|
|
|
|
- if (uuid != null)
|
|
|
|
|
- {
|
|
|
|
|
- String resDetect = CheckAutoLogin(log, uuid);
|
|
|
|
|
- log.Info("uuid: " + uuid + " res: " + resDetect);
|
|
|
|
|
|
|
+ // check user has account
|
|
|
|
|
+ GetUserProfileReq req = new GetUserProfileReq();
|
|
|
|
|
+ req.users = msisdnToken;
|
|
|
|
|
|
|
|
- if (resDetect != null)
|
|
|
|
|
- {
|
|
|
|
|
- dynamic json = JsonConvert.DeserializeObject(resDetect);
|
|
|
|
|
- log.Info("res json: " + json);
|
|
|
|
|
|
|
+ String rs = UtilsController.SendPost(req, System.Web.HttpContext.Current.Session.SessionID, UtilsController.WsType.UsersGetProfile);
|
|
|
|
|
+ UserProfile profile = new UserProfile(rs);
|
|
|
|
|
+ if (profile.id != null)
|
|
|
|
|
+ {
|
|
|
|
|
+ System.Web.HttpContext.Current.Session["profile"] = profile;
|
|
|
|
|
|
|
|
- String code = json["code"];
|
|
|
|
|
|
|
+ // create new auth
|
|
|
|
|
+ CreateAuthToken();
|
|
|
|
|
+ String sessionId = Session.SessionID;
|
|
|
|
|
+ // login success --> store session
|
|
|
|
|
+ Session["msisdn"] = msisdnToken;
|
|
|
|
|
+ Session["Token"] = token;
|
|
|
|
|
+ // get sub
|
|
|
|
|
+ UtilsController.ReloadSubInfo();
|
|
|
|
|
|
|
|
- if (code == "200")
|
|
|
|
|
|
|
+ // all info of user was loaded from server
|
|
|
|
|
+ //UserProfile profile = Session["profile"] as UserProfile;
|
|
|
|
|
+ String typeLanguage = Session["typeLanguage"] as String;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
{
|
|
{
|
|
|
- String errorCode = json["errorCode"];
|
|
|
|
|
-
|
|
|
|
|
- if (errorCode == "200")
|
|
|
|
|
|
|
+ // Create a free account for the user
|
|
|
|
|
+ UserRequest userRequest = new UserRequest
|
|
|
{
|
|
{
|
|
|
- msisdnAuto = json["data"]["msisdn"];
|
|
|
|
|
- log.Info("msisdnAuto: " + msisdnAuto);
|
|
|
|
|
|
|
+ users = msisdnToken,
|
|
|
|
|
+ msisdn = msisdnToken,
|
|
|
|
|
+ command = "REGIST",
|
|
|
|
|
+ channel = "WEB"
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
- String msisdn = UtilsController.validateMsisdn(msisdnAuto.Substring(1));
|
|
|
|
|
- //String msisdn = UtilsController.validateMsisdn("+8562096841080".Substring(1));
|
|
|
|
|
|
|
+ string rsRegister = UtilsController.SendPost(userRequest, Session.SessionID, UtilsController.WsType.UsersRegister);
|
|
|
|
|
+ UserActionResult resRegister = new UserActionResult(rsRegister);
|
|
|
|
|
+ Session["isSub"] = "false";
|
|
|
|
|
|
|
|
- log.Info("msisdn: " + msisdn);
|
|
|
|
|
|
|
+ if (resRegister.status == UtilsController.Constant.SUCCESS)
|
|
|
|
|
+ {
|
|
|
|
|
+ // Load profile
|
|
|
|
|
+ GetUserProfileReq reqProfile = new GetUserProfileReq { users = msisdnToken };
|
|
|
|
|
+ string rsProfile = UtilsController.SendPost(reqProfile, Session.SessionID, UtilsController.WsType.UsersGetProfile);
|
|
|
|
|
+ UserProfile profileGet = new UserProfile(rsProfile);
|
|
|
|
|
|
|
|
- if (msisdn != "")
|
|
|
|
|
|
|
+ if (profileGet.id != null)
|
|
|
{
|
|
{
|
|
|
- // auto login
|
|
|
|
|
- // reload user info
|
|
|
|
|
- HttpContext.Session.Remove("regInfos");
|
|
|
|
|
- Session["msisdnDetect"] = msisdn;
|
|
|
|
|
- // dang ky tren app
|
|
|
|
|
- Session["WHICHDEVICE"] = UtilsController.Constant.REGISTER_ON_APP;
|
|
|
|
|
-
|
|
|
|
|
- HttpCookie onApp = new HttpCookie("onapp");
|
|
|
|
|
- onApp["isonapp"] = "1";
|
|
|
|
|
- onApp.Expires = DateTime.Now.AddDays(30);
|
|
|
|
|
- Response.Cookies.Add(onApp);
|
|
|
|
|
-
|
|
|
|
|
- // check user has account
|
|
|
|
|
- GetUserProfileReq req = new GetUserProfileReq();
|
|
|
|
|
- req.users = msisdn;
|
|
|
|
|
- String rs = UtilsController.SendPost(req, System.Web.HttpContext.Current.Session.SessionID, UtilsController.WsType.UsersGetProfile);
|
|
|
|
|
- UserProfile profile = new UserProfile(rs);
|
|
|
|
|
- if (profile.id != null)
|
|
|
|
|
- {
|
|
|
|
|
- System.Web.HttpContext.Current.Session["profile"] = profile;
|
|
|
|
|
|
|
+ Session["profile"] = profileGet;
|
|
|
|
|
|
|
|
- // create new auth
|
|
|
|
|
|
|
+ UserInfoRequest reqStatus = new UserInfoRequest { users = msisdnToken };
|
|
|
|
|
+ string rsStatus = UtilsController.SendPost(reqStatus, Session.SessionID, UtilsController.WsType.UsersCheckStatus);
|
|
|
|
|
+ UserActionResult resStatus = new UserActionResult(rsStatus);
|
|
|
|
|
+
|
|
|
|
|
+ if (resStatus.status == UtilsController.Constant.SUCCESS)
|
|
|
|
|
+ {
|
|
|
|
|
+ UserInfo userInfo = new UserInfo(rsStatus);
|
|
|
|
|
+ Session["userInfo"] = userInfo;
|
|
|
|
|
+ Session["Token"] = token;
|
|
|
|
|
+ // Create new auth
|
|
|
CreateAuthToken();
|
|
CreateAuthToken();
|
|
|
- String sessionId = Session.SessionID;
|
|
|
|
|
- // login success --> store session
|
|
|
|
|
- Session["msisdn"] = msisdn;
|
|
|
|
|
|
|
+ Session["msisdn"] = msisdnToken;
|
|
|
|
|
|
|
|
- // get sub
|
|
|
|
|
|
|
+ // Reload user info
|
|
|
UtilsController.ReloadSubInfo();
|
|
UtilsController.ReloadSubInfo();
|
|
|
-
|
|
|
|
|
- // all info of user was loaded from server
|
|
|
|
|
- //UserProfile profile = Session["profile"] as UserProfile;
|
|
|
|
|
- String typeLanguage = Session["typeLanguage"] as String;
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- // create free account for user
|
|
|
|
|
-
|
|
|
|
|
- // check user has account
|
|
|
|
|
- UserRequest userRequest = new UserRequest();
|
|
|
|
|
- userRequest.users = msisdn;
|
|
|
|
|
- userRequest.msisdn = msisdn;
|
|
|
|
|
- userRequest.command = "REGIST";
|
|
|
|
|
- userRequest.channel = "WEB";
|
|
|
|
|
- String rsRegister = UtilsController.SendPost(userRequest, Session.SessionID, UtilsController.WsType.UsersRegister);
|
|
|
|
|
-
|
|
|
|
|
- UserActionResult resRegister = new UserActionResult(rsRegister);
|
|
|
|
|
- Session["isSub"] = "false";
|
|
|
|
|
- if (resRegister.status == UtilsController.Constant.SUCCESS)
|
|
|
|
|
- {
|
|
|
|
|
- // load profile
|
|
|
|
|
- GetUserProfileReq reqProfile = new GetUserProfileReq();
|
|
|
|
|
- reqProfile.users = msisdn;
|
|
|
|
|
- String rsProfile = UtilsController.SendPost(reqProfile, Session.SessionID, UtilsController.WsType.UsersGetProfile);
|
|
|
|
|
- UserProfile profileGet = new UserProfile(rsProfile);
|
|
|
|
|
- if (profileGet.id != null)
|
|
|
|
|
- {
|
|
|
|
|
- System.Web.HttpContext.Current.Session["profile"] = profile;
|
|
|
|
|
-
|
|
|
|
|
- UserInfoRequest reqStatus = new UserInfoRequest();
|
|
|
|
|
- reqStatus.users = msisdn;
|
|
|
|
|
- String rsStatus = UtilsController.SendPost(reqStatus, Session.SessionID, UtilsController.WsType.UsersCheckStatus);
|
|
|
|
|
- UserActionResult resStatus = new UserActionResult(rsStatus);
|
|
|
|
|
- if (resStatus.status == UtilsController.Constant.SUCCESS)
|
|
|
|
|
- {
|
|
|
|
|
- UserInfo userInfo = new UserInfo(rsStatus);
|
|
|
|
|
- System.Web.HttpContext.Current.Session["userInfo"] = userInfo;
|
|
|
|
|
-
|
|
|
|
|
- // create new auth
|
|
|
|
|
- CreateAuthToken();
|
|
|
|
|
- String sessionId = Session.SessionID;
|
|
|
|
|
- // login success --> store session
|
|
|
|
|
- Session["msisdn"] = msisdn;
|
|
|
|
|
-
|
|
|
|
|
- // get sub
|
|
|
|
|
- UtilsController.ReloadSubInfo();
|
|
|
|
|
-
|
|
|
|
|
- // all info of user was loaded from server
|
|
|
|
|
- //UserProfile profile = Session["profile"] as UserProfile;
|
|
|
|
|
- String typeLanguage = Session["typeLanguage"] as String;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // }
|
|
|
|
|
+ //}
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
+ return View(model);
|
|
|
}
|
|
}
|
|
|
- return View(model);
|
|
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ Session["WHICHDEVICE"] = UtilsController.Constant.REGISTER_ON_WEB;
|
|
|
|
|
+ return View(model);
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private string getUserFromToken(string token)
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ String resGet = GetUserInfoFromApp(token);
|
|
|
|
|
+ log.Info(" get user from app result: " + resGet);
|
|
|
|
|
+ if (resGet != null && resGet != "")
|
|
|
|
|
+ {
|
|
|
|
|
+ dynamic json = JsonConvert.DeserializeObject(resGet);
|
|
|
|
|
+ log.Info("res json: " + json);
|
|
|
|
|
+ String code = json["code"];
|
|
|
|
|
+ if (code == "00")
|
|
|
|
|
+ {
|
|
|
|
|
+ String msisdnAuto = json["data"]["user"]["phone_number"];
|
|
|
|
|
+ String userName = json["data"]["user"]["username"];
|
|
|
|
|
+ log.Info("msisdnAuto: " + msisdnAuto);
|
|
|
|
|
+ log.Info("userName: " + userName);
|
|
|
|
|
+
|
|
|
|
|
+ // check phone number
|
|
|
|
|
+ String msisdn = UtilsController.validateMsisdn(msisdnAuto);
|
|
|
|
|
+ if (msisdn != null && msisdn != "")
|
|
|
|
|
+ {
|
|
|
|
|
+ Session["msisdn"] = msisdn;
|
|
|
|
|
+ //Session["channel"] = "2";
|
|
|
|
|
+ //Response.Cookies["channel"].Value = "2";
|
|
|
|
|
+ //Response.Cookies["token"].Value = token;
|
|
|
|
|
+ //ServiceLogin.WsGamePortalClient wsClient = new ServiceLogin.WsGamePortalClient();
|
|
|
|
|
+ //SetWsClient(ref wsClient, Session.SessionID);
|
|
|
|
|
+ //ServiceLogin.response wsResponse = ReloadAccountInfo(msisdn);
|
|
|
|
|
+ //if (wsResponse.msisdn != null && wsResponse.msisdn.Length > 0)
|
|
|
|
|
+ //{
|
|
|
|
|
+ // CreateAuthToken();
|
|
|
|
|
+ //}
|
|
|
|
|
+
|
|
|
|
|
+ return msisdn;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public string GetUserInfoFromApp(String token)
|
|
|
|
|
+ {
|
|
|
|
|
+ string res = null;
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ ServicePointManager.Expect100Continue = true;
|
|
|
|
|
+ ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
|
|
|
|
+
|
|
|
|
|
+ HttpClient httpClient = new HttpClient();
|
|
|
|
|
+ httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
|
|
|
|
|
+ httpClient.DefaultRequestHeaders.Add("accessToken", ConfigurationManager.AppSettings["accessToken"]);
|
|
|
|
|
+
|
|
|
|
|
+ log.Info("Req " + ConfigurationManager.AppSettings["pathDetectUser"]);
|
|
|
|
|
+ HttpResponseMessage response = httpClient.GetAsync(ConfigurationManager.AppSettings["pathDetectUser"]).Result;
|
|
|
|
|
+
|
|
|
|
|
+ response.EnsureSuccessStatusCode();
|
|
|
|
|
+ httpClient.Dispose();
|
|
|
|
|
+ res = response.Content.ReadAsStringAsync().Result;
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ log.Error(ex);
|
|
|
|
|
+ }
|
|
|
|
|
+ return res;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
public ActionResult VietnameseIndex()
|
|
public ActionResult VietnameseIndex()
|
|
|
{
|
|
{
|
|
|
// check login
|
|
// check login
|
|
@@ -238,6 +297,17 @@ namespace NEducation.Controllers
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public JsonResult CheckButton(String msisdn)
|
|
|
|
|
+ {
|
|
|
|
|
+ String mToken = Session["Token"] as String;
|
|
|
|
|
+
|
|
|
|
|
+ return Json(new
|
|
|
|
|
+ {
|
|
|
|
|
+ token = mToken,
|
|
|
|
|
+ msisdn = msisdn,
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public JsonResult CourseSet(String courseId)
|
|
public JsonResult CourseSet(String courseId)
|
|
|
{
|
|
{
|
|
|
Session["COURSE_NOW"] = courseId;
|
|
Session["COURSE_NOW"] = courseId;
|
|
@@ -400,7 +470,7 @@ namespace NEducation.Controllers
|
|
|
{
|
|
{
|
|
|
// get package
|
|
// get package
|
|
|
String packageId = Session["COURSE_NOW"] as String;
|
|
String packageId = Session["COURSE_NOW"] as String;
|
|
|
- String package = UtilsController.GetPackagename(packageId, whichDevice);
|
|
|
|
|
|
|
+ String package = UtilsController.GetPackagename(packageId, whichDevice, "REGISTER");
|
|
|
|
|
|
|
|
// check account existed
|
|
// check account existed
|
|
|
var checkSub = UtilsController.checkAccountSub(msisdn, package);
|
|
var checkSub = UtilsController.checkAccountSub(msisdn, package);
|
|
@@ -467,7 +537,7 @@ namespace NEducation.Controllers
|
|
|
// get package
|
|
// get package
|
|
|
String whichDevice = Session["WHICHDEVICE"] as String;
|
|
String whichDevice = Session["WHICHDEVICE"] as String;
|
|
|
String packageId = Session["COURSE_NOW"] as String;
|
|
String packageId = Session["COURSE_NOW"] as String;
|
|
|
- String package = UtilsController.GetPackagename(packageId, whichDevice);
|
|
|
|
|
|
|
+ String package = UtilsController.GetPackagename(packageId, whichDevice, "REGISTER");
|
|
|
|
|
|
|
|
String rs = UtilsController.SendPost(chargerequest, Session.SessionID, UtilsController.WsType.MpsRequest);
|
|
String rs = UtilsController.SendPost(chargerequest, Session.SessionID, UtilsController.WsType.MpsRequest);
|
|
|
UserActionResult res = new UserActionResult(rs);
|
|
UserActionResult res = new UserActionResult(rs);
|
|
@@ -783,6 +853,7 @@ namespace NEducation.Controllers
|
|
|
{
|
|
{
|
|
|
try
|
|
try
|
|
|
{
|
|
{
|
|
|
|
|
+
|
|
|
String msisdn = UtilsController.validateMsisdn(phoneNumber);
|
|
String msisdn = UtilsController.validateMsisdn(phoneNumber);
|
|
|
if (msisdn != "" && msisdn != null)
|
|
if (msisdn != "" && msisdn != null)
|
|
|
{
|
|
{
|
|
@@ -893,6 +964,7 @@ namespace NEducation.Controllers
|
|
|
}
|
|
}
|
|
|
catch (Exception ex)
|
|
catch (Exception ex)
|
|
|
{
|
|
{
|
|
|
|
|
+ log.Error("Exception: ", ex);
|
|
|
return Json(new
|
|
return Json(new
|
|
|
{
|
|
{
|
|
|
error_code = UtilsController.Constant.EXCEPTION,
|
|
error_code = UtilsController.Constant.EXCEPTION,
|