コード例 #1
0
        public void NoSavedToStorage_Success()
        {
            //Arrange
            var validator = new NoSavedToStorage(true, "Test");
            //Act
            var result = validator.Process();

            //Assert
            Assert.AreEqual(result.StatusCode, StatusCode.Success);
            Assert.IsTrue(string.IsNullOrEmpty(result.StatusDetail));
        }
コード例 #2
0
        public void NoSavedToStorage_Failed()
        {
            //Arrange
            var validator = new NoSavedToStorage(false, "Test");
            //Act
            var result = validator.Process();

            //Assert
            Assert.AreEqual(result.StatusCode, StatusCode.Failed);
            Assert.AreEqual(result.ErrorCode, ErrorCode.DataBaseError);
            Assert.IsTrue(!string.IsNullOrEmpty(result.StatusDetail));
        }
コード例 #3
0
        public async Task <object> ProcessAction(object value)
        {
            var payment = value as Model.Payment ?? throw new ArgumentNullException(value.GetType().ToString(), "The value is not implemented.");

            _log.LogInformation($"[Started] Payment process for Payment: {payment.PaymentId} - User: {payment.UserId}");
            var mapper = MapperModelFactory <Model.Payment, payment_gateway_repository.Model.Payment> .GetMapper();

            var model = mapper.MapToDestination(payment);

            var validator = await _validationService.ProcessValidation(_validator, model);

            var result = validator as Result;

            if (result?.StatusCode == StatusCode.Failed)
            {
                _log.LogError(result.ErrorCode.ConvertToInt(), GetMessage(result, model));
                return(result);
            }

            //Process the bank payment
            result = new ProcessPayment(_bankProcessor, model).Process();
            if (result?.StatusCode == StatusCode.Failed)
            {
                _log.LogError(result.ErrorCode.ConvertToInt(), GetMessage(result, model));
                return(result);
            }

            //Save the transaction in DB
            var saved = await _repository.AddItemAsync(model);

            result = new NoSavedToStorage(saved, "Payment").Process();
            if (result?.StatusCode == StatusCode.Failed)
            {
                _log.LogCritical(result.ErrorCode.ConvertToInt(), GetMessage(result, model));
                return(result);
            }

            _log.LogInformation($"[Finished] Payment process for Payment: {payment.PaymentId} - User: {payment.UserId}");

            return(model);
        }
コード例 #4
0
        public async Task <object> ProcessAction(object value)
        {
            var model = value as Model.UserLogin ?? throw new ArgumentNullException(value.GetType().ToString(), "The value is not implemented.");

            _log.LogInformation($"[Started] User Login for: Username: {model.Username}");

            //The User/Merchant will log in order to process a payment and/or make requests for other actions
            var user = await _userRepository.GetItemAsync(u => u.UserLogin.Username == model.Username && u.UserLogin.Password == model.Password);

            var validation = await _validationService.ProcessValidation(_validator, user);

            var result = validation as Result;

            if (result?.StatusCode == StatusCode.Failed)
            {
                _log.LogError(result.ErrorCode.ConvertToInt(), $"User Error Details: {result.StatusDetail} - User: {user.UserId} - Username: {user.UserLogin.Username}");
                return(result);
            }

            //Validates Auth Token
            var token = _userService.Authenticate(user, true);

            if (token != user.UserLogin.Token)
            {
                user.UserLogin.Token = token;
                var saved = await _userRepository.UpdateItemAsync(user, u => u.UserLogin.Token, token);

                result = new NoSavedToStorage(saved, "User").Process();
                if (result?.StatusCode == StatusCode.Failed)
                {
                    _log.LogCritical(result.ErrorCode.ConvertToInt(), $"User Error Details: {result.StatusDetail} - User: {user.UserId} - Username: {user.UserLogin.Username}");
                }
                else
                {
                    _log.LogInformation($"Token updated for User: {model.Username}");
                }
            }

            _log.LogInformation($"[Finished] User Login for: Username: {model.Username}");
            return(user);
        }
コード例 #5
0
        public async Task <object> ProcessAction(object value)
        {
            var model = value as Model.User ?? throw new ArgumentNullException(value.GetType().ToString(), "The value is not implemented.");

            _log.LogInformation($"[Started] User Registration for: UserId: {model.UserId} - Username: {model.UserLogin.Username}");

            var mapper = MapperModelFactory <Model.User, payment_gateway_repository.Model.User> .GetMapper();

            var modelMap = mapper.MapToDestination(model);

            //For a User and in order to make a payment has to be registered in the system so we can process the data
            var token = _userService.Authenticate(modelMap, false);

            modelMap.UserLogin.Token = token;

            var validation = await _validationService.ProcessValidation(_validator, modelMap);

            var result = validation as Result;

            if (result?.StatusCode == StatusCode.Failed)
            {
                _log.LogError(result.ErrorCode.ConvertToInt(), GetMessage(result, modelMap));
                return(result);
            }

            var saved = await _userRepository.AddItemAsync(modelMap);

            result = new NoSavedToStorage(saved, "User").Process();
            if (result?.StatusCode == StatusCode.Failed)
            {
                _log.LogCritical(result.ErrorCode.ConvertToInt(), GetMessage(result, modelMap));
                return(result);
            }

            _log.LogInformation($"[Finished] User Registration for: UserId: {model.UserId} - Username: {model.UserLogin.Username}");

            return(modelMap);
        }