Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
                }
            }
        }