using System; using System.Collections.Generic; using System.Linq; using System.Web; using MongoDB.Driver; using MongoDB.Bson; using AIAHTML5.API.Properties; using AIAHTML5.API.Constants; using log4net; using AIAHTML5.API.Models; using Newtonsoft.Json; using System.Collections; namespace AIAHTML5.API.Models { public class Users { internal static dynamic GetUserDetailsForAuthenticatedUser(Newtonsoft.Json.Linq.JObject credentials) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside AuthenticateUser for loginId =" + credentials["username"].ToString() + " and password= " + credentials["password"].ToString()); dynamic userDetails = null; try { User user = DBModel.GetUserDetailsByLoginId(credentials["username"].ToString()); //string userDetails = DBModel.GetUserDetailsByLoginId2(credentials["username"].ToString()); if (user != null) { logger.Debug("userDetails.loginId= " + user.LoginId); // .loginId); userDetails = JsonConvert.SerializeObject(user); } else { userDetails = AIAConstants.USER_NOT_FOUND; } } catch (Exception e) { logger.Fatal("Exception in AuthenticateUser for loginId =" + credentials["username"].ToString() + " and password= " + credentials["password"].ToString() + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //string errorMessage = AIAConstants.ERROR_IN_FECTHING_DETAILS; //string error = "Message: " + e.Message + ", STACKTRACE: " + e.StackTrace; //userDetails = errorMessage; ArrayList supportMailList = UserUtility.GetSupportMailList(); string mailSubject = "SQL Exception intimation mail"; string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return userDetails; } internal static dynamic GetUserByEmail(Newtonsoft.Json.Linq.JObject userInfo) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug(" inside GetUserByEmail for emailId = " + userInfo["emailId"]); //var client = new MongoClient(); //try //{ // var db = client.GetDatabase(Settings.Default.database); // var collection = db.GetCollection("Users"); // FilterDefinition filterCondition = Builders.Filter.Eq("emailId", userInfo["emailId"].ToString().ToLower()); // dynamic userDetails = collection.Find(Builders.Filter.And(filterCondition)).SingleOrDefault(); // if (userDetails != null) // { // logger.Debug("userDetails= " + userDetails.loginId); // return userDetails; // } // else // { // logger.Debug("user not found"); // return AIAConstants.USER_NOT_FOUND; // } //} //catch (Exception e) //{ // logger.Fatal("Exception= " + e.Message+", stacktrace = "+e.StackTrace); // return AIAConstants.ERROR_IN_FECTHING_DETAILS; //} try { User objUser = DBModel.GetUserDetailsByEmailId(userInfo["emailId"].ToString()); //dynamic userDetails; if (objUser != null) { logger.Debug("userDetails.loginId= " + objUser.LoginId); //return userDetails = JsonConvert.SerializeObject(objUser); return objUser; } else { return AIAConstants.USER_NOT_FOUND; } } catch (Exception ex) { logger.Fatal("Exception in Gettting UserDetailsByEmailId for EmailId =" + userInfo["emailId"].ToString() + " Exception= " + ex.Message + ", STACKTRACE: " + ex.StackTrace); //string errorMessage = AIAConstants.ERROR_IN_FECTHING_DETAILS; //return errorMessage; ArrayList supportMailList = UserUtility.GetSupportMailList(); string mailSubject = "SQL Exception intimation mail"; string mailBody = "MESSAGE: " + ex.Message + ", STACKTRACE: " + ex.StackTrace; UserUtility.SendEmail(userInfo, supportMailList, "", mailSubject, mailBody); return AIAConstants.SQL_CONNECTION_ERROR; } } internal static dynamic UpdatePassword(Newtonsoft.Json.Linq.JObject userInfo, string sLoginId, string sEmailId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); //var client = new MongoClient(); try { //var db = client.GetDatabase(Settings.Default.database); //var collection = db.GetCollection("Users"); //var filter = Builders.Filter.Eq("emailId", userInfo["emailId"].ToString()); //var update = Builders.Update.Set("password", userInfo["newPassword"].ToString()).CurrentDate("modifiedDate"); //var result = collection.UpdateOne(filter, update); int result = DBModel.UpdateUserPassword(userInfo, sLoginId, sEmailId); if (result > 0) return result; else return AIAConstants.USER_NOT_FOUND; } catch (Exception e) { logger.Fatal("Exception in UdatePassword with user details = " + userInfo + ", LoginId:" + sLoginId + ", EmailId: "+ sEmailId + "
MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace); //return AIAConstants.ERROR_IN_FECTHING_DETAILS; ArrayList supportMailList = UserUtility.GetSupportMailList(); string mailSubject = "SQL Exception intimation mail"; string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; UserUtility.SendEmail(userInfo, supportMailList, "", mailSubject, mailBody); return AIAConstants.SQL_CONNECTION_ERROR; } } internal static dynamic UpdateLicenseTerm(Newtonsoft.Json.Linq.JObject userLicenseInfo) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug(" inside UpdateLicenseTerm for AccountNumber = " + userLicenseInfo["licenseeAccountNumber"].ToString() + ", LicenseId: " + userLicenseInfo["userLicenseId"].ToString()); Newtonsoft.Json.Linq.JObject userInfo = new Newtonsoft.Json.Linq.JObject(); dynamic result; string accountNumber = userLicenseInfo["licenseeAccountNumber"].ToString(); userInfo.Add("accountNumber", accountNumber); try { result = DBModel.UpdateLicenseTermStatus(accountNumber); if (result < 0) { logger.Fatal("Unable to update LicenseTermAccepted status for AccountNumber =" + accountNumber); } } catch (Exception ex) { logger.Fatal("Exception in UpdateLicenseTerm for AccountNumber =" + accountNumber + " Exception= " + ex.Message + ", STACKTRACE: " + ex.StackTrace); ArrayList supportMailList = UserUtility.GetSupportMailList(); string mailSubject = "SQL Exception intimation mail"; string mailBody = "MESSAGE: " + ex.Message + ", STACKTRACE: " + ex.StackTrace; UserUtility.SendEmail(userInfo, supportMailList, "", mailSubject, mailBody); result = AIAConstants.SQL_CONNECTION_ERROR; } return result; } internal static bool IsUserAuthenticated(Newtonsoft.Json.Linq.JObject credentials, User user) { bool isAuthenticatedUser = DBModel.ValidateUserAuthenticity(credentials["username"].ToString(), credentials["password"].ToString(), user); return isAuthenticatedUser; } internal static dynamic getUserDetails(Newtonsoft.Json.Linq.JObject credentials) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside getUserDetails for loginId =" + credentials["username"].ToString() + " and password= " + credentials["password"].ToString()); dynamic userDetails = null; try { userDetails = DBModel.GetUserDetailsByLoginId(credentials["username"].ToString()); } catch (Exception e) { logger.Fatal("Exception in getUserDetails for loginId =" + credentials["username"].ToString() + " and password= " + credentials["password"].ToString() + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); ArrayList supportMailList = UserUtility.GetSupportMailList(); string mailSubject = "SQL Exception intimation mail"; string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return userDetails; } internal static void getLicenseIdForThisUser(int userId, out int licenseId, out int editionId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside getLicenseIdForThisUser for UserId =" + userId); //assigning below variable to avoid compiler error for unassignd out params licenseId = 0; editionId = 0; try { DBModel objModel = new DBModel(); Hashtable licenseEditionHash = objModel.GetLicenseDetailByUserId(userId); if (licenseEditionHash.ContainsKey(AIAConstants.LICENSE_KEY_ID)) licenseId = Convert.ToInt32(licenseEditionHash[AIAConstants.LICENSE_KEY_ID]); if (licenseEditionHash.ContainsKey(AIAConstants.EDITION_KEY_ID)) editionId = Convert.ToInt32(licenseEditionHash[AIAConstants.EDITION_KEY_ID]); //foreach (DictionaryEntry de in licenseEditionHash) //{ // if (de.Key.ToString() == AIAConstants.LICENSE_KEY_ID) // licenseId = Convert.ToInt32(de.Value); // if (de.Key.ToString() == AIAConstants.EDITION_KEY_ID) // editionId = Convert.ToInt32(de.Value); //} } catch (Exception e) { logger.Fatal("Exception in getLicenseIdForThisUser for UserId =" + userId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } } internal static int insertLoginDetails(int userId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside insertLoginDetails for UserId =" + userId); int result = 0; try { DBModel objModel = new DBModel(); result = objModel.InsertLoginDetails(userId); } catch (Exception e) { logger.Fatal("Exception in insertLoginDetails for UserId =" + userId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return result; } internal static bool isUSerActive(User user) { if (user.IsActive) return true; else return false; } internal static bool checkIfLicenseExpired(LicenseSubscriptionDetails subscriptionDetail, out string expirationDate) { expirationDate = string.Empty; bool isLicenseExpired = false; if (subscriptionDetail != null) { DateTime? subscriptionValidThrough = subscriptionDetail.SubscriptionValidThrough; if (subscriptionValidThrough != null && subscriptionValidThrough.Value.Date >= DateTime.Now.Date) { isLicenseExpired = false; } else { isLicenseExpired = true; expirationDate = subscriptionDetail.SubscriptionValidThrough.Value.Date.ToString("MM/dd/yyyy").ToString(); } } return isLicenseExpired; } internal static ArrayList getModuleListByLicenseId(int licenseId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside getModuleListByLicenseId for LicenseId =" + licenseId); ArrayList licensedModulesList = new ArrayList(); try { DBModel objModel = new DBModel(); licensedModulesList = objModel.GetUserModulesByLicenseId(licenseId); } catch (Exception e) { logger.Fatal("Exception in getModuleListByLicenseId for LicenseId =" + licenseId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return licensedModulesList; } internal static int deletePastWrongAttempts(int userId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside deletePastWrongAttempts for UserId =" + userId); int result = 0; try { DBModel objModel = new DBModel(); result = objModel.DeleteIncorrectLoginAttempts(userId); } catch (Exception e) { logger.Fatal("Exception in deletePastWrongAttempts for UserId =" + userId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return result; } internal static int checkNoOfWrongAttempts(int userId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside checkNoOfWrongAttempts for UserId =" + userId); int result = 0; try { DBModel objModel = new DBModel(); result = objModel.GetIncorrectLoginAttempts(userId); } catch (Exception e) { logger.Fatal("Exception in checkNoOfWrongAttempts for UserId =" + userId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return result; } internal static int saveWrongAttemptofUser(int userId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside saveWrongAttemptofUser for UserId =" + userId); int result = 0; try { int wrongAttemptCount = Users.checkNoOfWrongAttempts(userId); DBModel objModel = new DBModel(); if (wrongAttemptCount < 1) { result = objModel.InsertIncorrectLoginAttempts(userId); } else { result = objModel.UpdateIncorrectLoginAttempts(userId); } } catch (Exception e) { logger.Fatal("Exception in saveWrongAttemptofUser for UserId =" + userId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return result; } internal static bool isLicenseActive(int licenseId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside isLicenseActive for LicenseId =" + licenseId); bool result = false; try { DBModel objModel = new DBModel(); License userLicense = objModel.GetLicenseDetailsByLicenseId(licenseId); if (userLicense.IsActive) result = true; else result = false; } catch (Exception e) { logger.Fatal("Exception in isLicenseActive for LicenseId =" + licenseId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return result; } internal static License getLicenseDetails(int licenseId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside getLicenseDetails for LicenseId =" + licenseId); License userLicense = null; try { DBModel objModel = new DBModel(); userLicense = objModel.GetLicenseDetailsByLicenseId(licenseId); } catch (Exception e) { logger.Fatal("Exception in getLicenseDetails for LicenseId =" + licenseId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return userLicense; } internal static LicenseSubscriptionDetails getLicenseSubscriptionDetails(int licenseId) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside getLicenseSubscriptionDetails for LicenseId =" + licenseId); LicenseSubscriptionDetails userSubscriptionDetail = null; try { DBModel objModel = new DBModel(); userSubscriptionDetail = objModel.GetLicenseSubscriptionDetailsByLicenseId(licenseId); } catch (Exception e) { logger.Fatal("Exception in getLicenseSubscriptionDetails for LicenseId =" + licenseId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return userSubscriptionDetail; } internal static void isCredentialCorrect(Newtonsoft.Json.Linq.JObject credentials, out bool isCorrectLoginId, out bool isCorrectPassword) { isCorrectLoginId = false; isCorrectPassword = false; User userInfo = Users.getUserDetails(credentials); if (userInfo != null) { if (string.Equals(credentials["username"].ToString().ToUpper(), userInfo.LoginId.ToUpper())) isCorrectLoginId = true; if (string.Equals(credentials["password"].ToString(), userInfo.Password)) { isCorrectPassword = true; } } } internal static int insertUserLoginLog(string accountNumber, Int16 failureId, string referalUrl, string edition, string httpReferer) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside insertUserLoginLog for accountNumber =" + accountNumber); int result = 0; try { DBModel objModel = new DBModel(); result = objModel.InsertUserLoginLog(accountNumber, failureId, null, edition, null); } catch (Exception e) { logger.Fatal("Exception in insertUserLoginLog for accountNumber =" + accountNumber + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return result; } internal static ArrayList getTermsOfServiceText() { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside getTermsOfServiceText"); ArrayList arrTermsOfService = new ArrayList(); try { DBModel objModel = new DBModel(); arrTermsOfService = DBModel.GetTermsOfServiceText(); } catch (Exception e) { logger.Fatal("Exception in getTermsOfServiceText, Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return arrTermsOfService; } internal static ArrayList getAllModulesList() { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside getAllModulesList"); ArrayList modulesList = new ArrayList (); try { DBModel objModel = new DBModel(); modulesList = objModel.GetAllModules(); } catch (Exception e) { logger.Fatal("Exception in getAllModulesList, Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return modulesList; } internal static bool isUserBlocked(int userId, out DateTime blockTime) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside isUserBlocked for UserId =" + userId); bool result = false; blockTime = new DateTime(); try { DBModel objModel = new DBModel(); BlockedUser blockedUser = objModel.GetBlockedUserByUserId(userId); if (blockedUser != null) { blockTime = blockedUser.LoginTime; result = true; } else result = false; } catch (Exception e) { logger.Fatal("Exception in isUserBlocked for UserId =" + userId + "Exception= " + e.Message + ", STACKTRACE: " + e.StackTrace); //ArrayList supportMailList = UserUtility.GetSupportMailList(); //string mailSubject = "SQL Exception intimation mail"; //string mailBody = "MESSAGE: " + e.Message + ", STACKTRACE: " + e.StackTrace; //UserUtility.SendEmail(credentials, supportMailList, "", mailSubject, mailBody); //userDetails = AIAConstants.SQL_CONNECTION_ERROR; } return result; } } }