Beispiel #1
0
        public async Task <UserDto> UpdateUser(EditUserDto input)
        {
            CheckUpdatePermission();

            if (string.IsNullOrEmpty(input.EmailAddress))
            {
                input.EmailAddress = RandomStringGeneratorUtil.GenerateFakeEmail();
            }

            var user = await _userManager.GetUserByIdAsync(input.Id);

            //MapEditUserDtoToEntity(input, user);
            user.EmailAddress = input.EmailAddress;
            user.Name         = input.Name;
            user.Surname      = input.Surname;
            user.UserName     = input.UserName;
            user.PhoneNumber  = input.PhoneNumber;
            user.IsActive     = input.IsActive;

            //Logger.Info("email for user: " + user.EmailAddress);
            CheckErrors(await _userManager.UpdateAsync(user));

            if (input.RoleNames != null)
            {
                CheckErrors(await _userManager.SetRoles(user, input.RoleNames));
            }

            return(await Get(input));
        }
Beispiel #2
0
        public async Task UpdatePersonalDetail(PersonalDetailDto input)
        {
            var user = await GetCurrentUserAsync();

            user.Name         = input.FirstName;
            user.Surname      = input.LastName;
            user.PhoneNumber  = input.PhoneNumber;
            user.EmailAddress = input.Email ?? RandomStringGeneratorUtil.GenerateFakeEmail();

            await _userManager.UpdateAsync(user);
        }
Beispiel #3
0
        public async Task <User> SignUpAsync(string name, string surname, string emailAddress, string phone, string userName, string plainPassword, bool isEmailConfirmed)
        {
            CheckForTenant();

            var tenant = await GetActiveTenantAsync();

            var user = new User
            {
                TenantId         = tenant.Id,
                Name             = name,
                Surname          = surname,
                EmailAddress     = emailAddress ?? RandomStringGeneratorUtil.GenerateFakeEmail(),
                PhoneNumber      = phone,
                IsActive         = true,
                UserName         = userName,
                IsEmailConfirmed = isEmailConfirmed,
                Roles            = new List <UserRole>()
            };

            user.SetNormalizedNames();

            foreach (var defaultRole in await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync())
            {
                user.Roles.Add(new UserRole(tenant.Id, user.Id, defaultRole.Id));
            }

            await _userManager.InitializeOptionsAsync(tenant.Id);

            try
            {
                Logger.Info("About to save new user...");
                CheckErrors(await _userManager.CreateAsync(user, plainPassword));
                Logger.Info("Created new user, and next is to save...");
                await CurrentUnitOfWork.SaveChangesAsync();

                Logger.Info("S|aved new user.");
            }
            catch (Exception exc)
            {
                Logger.Error($"Err Message: {exc.Message}");
                Logger.Error($"StackTrace: {exc.StackTrace}");
            }

            return(user);
        }
        public async Task <string> GenerateBankAccountTransferOtp(decimal amount, string comment, string phoneNumber)
        {
            var activityProperty = new Dictionary <string, string>();

            activityProperty.Add("Amount", amount.ToString());
            activityProperty.Add("Comment", comment);

            var otp = RandomStringGeneratorUtil.GenerateOtp();

            var otpSession = new OtpSession
            {
                User              = await GetCurrentUserAsync(),
                Id                = otp,
                ActionProperty    = activityProperty,
                PhoneNumberSentTo = phoneNumber
            };

            _otpRepository.Insert(otpSession);

            return(otp.ToString());
        }
Beispiel #5
0
        private async Task GenerateHeaders(string tokenUrl)
        {
            //var oneCardProps = _config.GetSection("OneCardProperties");
            //Logger.Info($"Connection string: {oneCardProps.GetValue<string>("AgentCode")}");

            var timeStamp = (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;

            Logger.Info($"Timestamp component: {timeStamp}");
            var nonce = RandomStringGeneratorUtil.GenerateNonce();//.NewGuid().ToString().Replace("-", "");

            Logger.Info($"Nonce: {nonce}");
            const string clientId = "IKIA36A24822E7E30C61AAE5112A0F4608ADC2CA0997";

            Logger.Info($"ClientId: {clientId}");
            const string clientSecret = "i7BZAcxnUFNxmcP9FkOOVP3PpJSKcpeS3XsK6eYHHCQ=";

            Logger.Info($"ClientSecret: {clientSecret}");

            var authorization = Convert.ToBase64String(Encoding.UTF8.GetBytes(clientId));

            Logger.Info($"Authorization: Interswitch Auth {authorization}");
            //const string generateTokenUrl = "https://saturn.interswitchng.com/api/v1/pwm/subscribers/2348022901232/tokens";
            var encodedUrl = HttpUtility.UrlEncode(tokenUrl, Encoding.UTF8);

            var stringBuilder = new StringBuilder("Post");

            //stringBuilder.Append(HttpMethod.Post.Method);
            //stringBuilder.Append("Post");
            stringBuilder.Append("&");
            stringBuilder.Append(encodedUrl);
            stringBuilder.Append("&");
            stringBuilder.Append(timeStamp);
            stringBuilder.Append("&");
            stringBuilder.Append(nonce);
            stringBuilder.Append("&");
            stringBuilder.Append(clientId);
            stringBuilder.Append("&");
            stringBuilder.Append(clientSecret);

            var signatureCipher = stringBuilder.ToString();

            Logger.Info($"Signature Cipher: {signatureCipher}");
            var sha = new SHA1Managed();

            var signatureBytes = sha.ComputeHash(Encoding.UTF8.GetBytes(signatureCipher));
            var signature      = Convert.ToBase64String(signatureBytes);

            //var encodedSignature = Encoding.UTF8.GetBytes(signatureCipher);
            //var sha1Digest = new SHA1Managed();
            //sha1Digest.BlockUpdate(encodedSignature, 0, encodedSignature.Length);
            //var signatureByte = new byte[sha1Digest.GetDigestSize()];
            //var signature = Convert.ToBase64String(signatureByte);

            Logger.Info($"Signature: {signature}");
            Logger.Info("Signature Method: SHA1");
            Logger.Info("Terminal Id: 3NRX0001");
            Logger.Info("Frontend Partner: APEX");

            Logger.Info("After FrontEnd Apex...");
            var stringContent = JsonConvert.SerializeObject(new
            {
                scope      = "profile",
                grant_type = "client_credentials"
            });

            Logger.Info("About creating content");
            var httpContent = new StringContent(stringContent);
            var headers     = httpContent.Headers;

            httpContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
            Logger.Info("Preparing authorization header...");
            try
            {
                using (var httpClient = new HttpClient())
                {
                    httpClient.BaseAddress = new Uri("https://saturn.interswitchng.com/");
                    var basicAuthCredentials = $"{clientId}:{clientSecret}";
                    var basicAuthEnc         = Convert.ToBase64String(Encoding.UTF8.GetBytes(basicAuthCredentials));
                    var authValue            = $"Basic {basicAuthEnc}";
                    Logger.Info($"Auth value: {authValue}");
                    httpClient.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(authValue);

                    Logger.Info("Lets get into HttpClient section...");
                    var response = await httpClient.PostAsync("passport/oauth/token", httpContent);

                    Logger.Info("About to check status code");
                    Logger.Info($"status code: {response.StatusCode}");
                    Logger.Info($"response: {response.Content.ReadAsStringAsync()}");
                    if (response.IsSuccessStatusCode)
                    {
                        var responseStr = await response.Content.ReadAsStringAsync();

                        Logger.Info($"Access Token String: {responseStr}");
                    }
                    else
                    {
                        Logger.Info("This thing is false...");
                    }
                }
            }
            catch (Exception exc)
            {
                Logger.Error(exc.Message);
                Logger.Error(exc.StackTrace);
            }
        }
        public async Task <string> RedeemOneCardPin(string pinno, string comment, string requestPlatform, string platformSpecific)
        {
            var accountHolder = _accountHolderRepository.Single(p => p.UserId == AbpSession.UserId);

            var oneCardServiceClient = new EstelOneCardServicesClient();

            var config = _configuration.GetSection("OneCardProperties");

            var agentTransactionId = RandomStringGeneratorUtil.GenerateAgentTransactionId();

            var pinRedeemRequest = new PinRedeemRequest
            {
                pin          = "7F1359753577B274D717DC2E41BA1E51",
                agentcode    = "APEX_PINRDM",
                pinno        = pinno,
                agenttransid = agentTransactionId,
                serviceid    = PinRedeemServiceIds.SavingsTopUp,
                comments     = "just do it"
            };

            var pinRedeemResponse = await oneCardServiceClient.getPinRedeemAsync(pinRedeemRequest);

            var pinRedeemLog = new OneCardPinRedeemLog();

            try
            {
                //Log OneCardPinRedeem. Whether successful or not
                Logger.Info("About to prepare pin redeem log");
                pinRedeemLog.Amount             = decimal.Parse(string.IsNullOrEmpty(pinRedeemResponse.amount) ? decimal.Zero.ToString() : pinRedeemResponse.amount);
                pinRedeemLog.AccountHolder      = accountHolder;
                pinRedeemLog.Comments           = comment;
                pinRedeemLog.PinNo              = pinno;
                pinRedeemLog.SerialNo           = pinRedeemResponse.serialno;
                pinRedeemLog.ServiceId          = PinRedeemServiceIds.SavingsTopUp;
                pinRedeemLog.VendorCode         = pinRedeemResponse.vendorcode;
                pinRedeemLog.ProductCode        = pinRedeemResponse.productcode;
                pinRedeemLog.AgentTransactionId = agentTransactionId;
                pinRedeemLog.ResultCode         = pinRedeemResponse.resultcode;
                pinRedeemLog.ResultDescription  = pinRedeemResponse.resultdescription;

                pinRedeemLog = _pinRedeemLogRepository.Insert(pinRedeemLog);
                CurrentUnitOfWork.SaveChanges();
            }
            catch (Exception exc)
            {
                Logger.Error(exc.StackTrace);
                //Send an error log email to my inbox. For Monitoring.
            }

            if ("0".Trim().Equals(pinRedeemResponse.resultcode))
            {
                var pinAmount      = decimal.Parse(pinRedeemResponse.amount);
                var currentBalance = accountHolder.AvailableBalance + pinAmount;

                try
                {
                    //Update AccountHolders balance.
                    accountHolder.AvailableBalance = currentBalance;
                    _accountHolderRepository.Update(accountHolder);

                    //Log transaction
                    var transactionLog = new TransactionLog();
                    transactionLog.Amount = pinAmount;
                    transactionLog.BalanceAfterTransaction    = currentBalance;
                    transactionLog.AccountHolder              = accountHolder;
                    transactionLog.TransactionType            = TransactionLog.TransactionTypes.Credit;
                    transactionLog.TransactionService         = TransactionServiceNames.OneCardPinRedeem;
                    transactionLog.RequestOriginatingPlatform = requestPlatform;
                    transactionLog.PlatformSpecificDetail     = platformSpecific;
                    transactionLog.Description = comment ?? string.Empty;

                    transactionLog = _transactionLogRepository.Insert(transactionLog);

                    //Update OneCardPinRedeemLog with the successful transaction.
                    pinRedeemLog.TransactionLog = transactionLog;
                    _pinRedeemLogRepository.Update(pinRedeemLog);
                }
                catch (Exception exc)
                {
                    Logger.Error(exc.StackTrace);
                }

                //Send Sms Receipt
                //Send Email Receipt.
            }

            return(pinRedeemResponse.resultcode);
        }