public StationRespObj RemoteLogin(RemoteLoginParameter loginParameter, out string msg) { try { _request.AddBody(loginParameter); var response = _client.Execute(_request); var responseCode = (int)response.StatusCode; if (responseCode >= 200 && responseCode < 300) { var deserializedResponse = new RequestResponseHelper().Deserialize <StationRespObj>(response, null, out msg); return(deserializedResponse); } var exception = new RequestResponseHelper().ReadRequestException(response); msg = exception == null ? "Unknown Exception Occurred!" : exception.Message; return(null); } catch (Exception ex) { ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message); msg = "Error: " + ex.Message; return(null); } }
public UserInformation RemoteLoginUser(string username, string password, string hostServer) { var userInformation = new UserInformation { UserInfo = new User() }; #region Null Validation if (username.IsNullOrEmpty() || password.IsNullOrEmpty() || hostServer.IsNullOrEmpty()) { _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Login Failed! Reason: All the inputs are required"; userInformation.Status = _status; return(userInformation); } #endregion var stationInfo = new StationInfo { //Address = "", APIAccessKey = "", HostServerAddress = hostServer, StationKey = "", StationName = "", TimeStampRegistered = DateMap.CurrentTimeStamp(), Status = true, }; #region Super Admin User Profile var superUserProfileInfo = new UserProfile { DateLastModified = DateTime.Now.ToString("yyyy/MM/dd"), Email = "*****@*****.**", FirstName = "SuperAdmin", MobileNumber = "2348036975694", ModifiedBy = 1, OtherNames = "", ProfileNumber = "0001", ResidentialAddress = "EpayPlus Limited", Sex = 1, Status = 1, Surname = "Epay", TimeLastModified = DateTime.Now.ToString("hh:mm:ss tt") }; var superUserInfo = new User { Email = "*****@*****.**", FailedPasswordAttemptCount = 0, IsApproved = true, IsLockedOut = false, Password = "******", RegisteredDateTimeStamp = DateTime.Now.ToString("yyyy/MM/dd - hh:mm:ss tt"), RoleId = 1, UserName = "******", LastLockedOutTimeStamp = "", LastLoginTimeStamp = "", LastPasswordChangedTimeStamp = "" }; #endregion using (var db = _uoWork.BeginTransaction()) { try { #region Remotely Connect & Login #region Access Parameter - Authorize Access var networkInterface = InternetHelp.GetMainNetworkInterface(); var loginParameter = new RemoteLoginParameter { DeviceIP = InternetHelp.GetIpAddress(networkInterface), DeviceId = InternetHelp.GetMACAddress(), UserName = username, Password = password }; #endregion string msg; var remoteLoginRespObj = new RemoteMessanger(RemoteProcessType.RemoteLogin, hostServer).RemoteLogin(loginParameter, out msg); if (remoteLoginRespObj == null) { _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Process Failed! " + (string.IsNullOrEmpty(msg) ? "Unable to register Station Information" : msg); userInformation.Status = _status; return(userInformation); } if (!remoteLoginRespObj.ResponseStatus.IsSuccessful || string.IsNullOrEmpty(remoteLoginRespObj.APIAccessKey) || remoteLoginRespObj.APIAccessKey.Length != 10) { _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = string.IsNullOrEmpty(remoteLoginRespObj.ResponseStatus.Message.FriendlyMessage) ? "Unable to complete your request! Please try again later" : remoteLoginRespObj.ResponseStatus.Message.FriendlyMessage; userInformation.Status = _status; return(userInformation); } #endregion #region Station Info stationInfo.RemoteStationId = remoteLoginRespObj.ClientStationId; stationInfo.APIAccessKey = remoteLoginRespObj.APIAccessKey; stationInfo.StationName = remoteLoginRespObj.StationName; stationInfo.StationKey = remoteLoginRespObj.StationId; stationInfo.Status = Convert.ToBoolean(remoteLoginRespObj.StationStatus); var addStationInfo = _stationInfoRepository.Add(stationInfo); _uoWork.SaveChanges(); stationInfo.StationInfoId = addStationInfo.StationInfoId; if (stationInfo.StationInfoId < 1) { db.Rollback(); _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Process Failed! Unable to register Station Information"; userInformation.Status = _status; return(userInformation); } #endregion #region Company var companyInfo = new CompanyInfo { StationName = remoteLoginRespObj.StationName, StationKey = remoteLoginRespObj.StationId, HostServerAddress = hostServer, //Address = "", Status = Convert.ToBoolean(remoteLoginRespObj.StationStatus), }; var addCompanyInfo = _companyRepository.Add(companyInfo); _uoWork.SaveChanges(); if (addCompanyInfo.CompanyInfoId < 1) { db.Rollback(); _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Unable to save Station's profile to the database"; userInformation.Status = _status; return(userInformation); } #endregion #region User Profile var staffRegistration = new UserProfile { StationInfoId = stationInfo.StationInfoId, Surname = remoteLoginRespObj.Surname, FirstName = remoteLoginRespObj.FirstName, OtherNames = remoteLoginRespObj.Othernames, ResidentialAddress = remoteLoginRespObj.ResidentialAddress, MobileNumber = remoteLoginRespObj.MobileNumber, Email = remoteLoginRespObj.Email, ProfileNumber = remoteLoginRespObj.EnrollerRegId, UserProfileRemoteId = remoteLoginRespObj.EnrollerId, Sex = remoteLoginRespObj.Sex, Status = remoteLoginRespObj.EnrollerStatus, TimeLastModified = DateTime.Now.ToString("hh:mm:ss tt"), DateLastModified = DateTime.Now.ToString("yyyy/MM/dd"), ModifiedBy = 1 }; var userProfile = _userProfileRepository.Add(staffRegistration); _uoWork.SaveChanges(); if (userProfile.UserProfileId < 1) { db.Rollback(); _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Error Occurred! Unable to add new user record"; userInformation.Status = _status; return(userInformation); } #endregion #region User var user = new User { UserName = username, Password = password, Email = remoteLoginRespObj.Email, RoleId = 2, IsApproved = true, IsLockedOut = false, FailedPasswordAttemptCount = 0, LastLockedOutTimeStamp = "", LastLoginTimeStamp = "", LastPasswordChangedTimeStamp = "", RegisteredDateTimeStamp = DateTime.Now.ToString("yyyy/MM/dd - hh:mm:ss tt") }; var thisUser = new UserRepository().GetUser(user.UserName); if (thisUser != null) { if (thisUser.UserProfileId > 0) { db.Rollback(); _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Duplicate Error! This username already exist in local database"; userInformation.Status = _status; return(userInformation); } } user.UserCode = Crypto.HashPassword(user.Password); user.Salt = EncryptionHelper.GenerateSalt(30, 50); user.Password = Crypto.GenerateSalt(16); user.IsFirstTimeLogin = true; user.UserProfileId = userProfile.UserProfileId; var addUser = _repository.Add(user); _uoWork.SaveChanges(); if (addUser.UserId < 1) { db.Rollback(); _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Error Occurred! Unable to add new user account"; userInformation.Status = _status; return(userInformation); } #endregion #region Default Admin Profiles var check = new UserRepository().GetUser("useradmin"); if (check == null || check.UserProfileId < 1) { superUserInfo.UserCode = Crypto.HashPassword(superUserInfo.Password); superUserInfo.Salt = EncryptionHelper.GenerateSalt(30, 50); superUserInfo.Password = Crypto.GenerateSalt(16); superUserInfo.IsFirstTimeLogin = false; var processSuperProfile = _userProfileRepository.Add(superUserProfileInfo); _uoWork.SaveChanges(); if (processSuperProfile.UserProfileId < 1) { db.Rollback(); _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Error Occurred! Unable to add new user account"; userInformation.Status = _status; return(userInformation); } superUserInfo.UserProfileId = processSuperProfile.UserProfileId; var processSuperUser = _repository.Add(superUserInfo); _uoWork.SaveChanges(); if (processSuperUser.UserId < 1) { db.Rollback(); _status.Message.FriendlyMessage = _status.Message.TechnicalMessage = "Error Occurred! Unable to add new user account"; userInformation.Status = _status; return(userInformation); } } #endregion db.Commit(); user.UserProfile = userProfile; _status.IsSuccessful = true; userInformation.Status = _status; userInformation.UserInfo = user; userInformation.StationInfo = stationInfo; return(userInformation); } catch (DbEntityValidationException ex) { ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message); _status.Message.FriendlyMessage = "Login Failed! Reason: " + ex.Message; _status.Message.TechnicalMessage = "Error: " + ex.Message; userInformation.Status = _status; return(userInformation); } catch (Exception ex) { db.Rollback(); ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message); _status.Message.FriendlyMessage = "Login Failed! Reason: " + ex.Message; _status.Message.TechnicalMessage = "Error: " + ex.Message; userInformation.Status = _status; return(userInformation); } } }