示例#1
0
        public void Should_not_throw_exception_if_MaxAmountPerTransaction_zero_in_update_paymentSettings()
        {
            // Arrange
            Container.Resolve <SecurityTestHelper>().SignInAdmin(new Core.Security.Data.Users.Admin()
            {
                Username = "******"
            });
            var settings = new PaymentSettings();

            settings.Id = new Guid("84c60b9f-16ad-49e0-bb9a-0e7670054dd5");
            settings.MinAmountPerTransaction = 1;
            settings.MaxAmountPerTransaction = 1;
            settings.PaymentGatewayMethod    = PaymentMethod.Online;
            settings.PaymentMethod           = "XPAY";
            _paymentRepository.PaymentSettings.Add(settings);

            var saveSettingsCommand = new SavePaymentSettingsCommand();

            saveSettingsCommand.Id = settings.Id;
            saveSettingsCommand.MinAmountPerTransaction = 1;
            saveSettingsCommand.MaxAmountPerTransaction = 0;
            saveSettingsCommand.PaymentGatewayMethod    = PaymentMethod.Online;
            saveSettingsCommand.PaymentMethod           = "XPAY";
            // Act
            Action action = () => _commands.UpdateSettings(saveSettingsCommand);

            //Assert
            action.ShouldNotThrow();
        }
        public void Update_payment_settings_limits_test()
        {
            // Arrange
            var paymentSettings = new PaymentSettings {
                Id = new Guid("50797305-5320-4086-BA1C-9D062DDF53D9")
            };

            _paymentRepository.PaymentSettings.Add(paymentSettings);

            var savePaymentSettingsCommand = new SavePaymentSettingsCommand();

            savePaymentSettingsCommand.Id = paymentSettings.Id;
            savePaymentSettingsCommand.MinAmountPerTransaction = 10;
            savePaymentSettingsCommand.MaxAmountPerTransaction = 20;
            savePaymentSettingsCommand.MaxAmountPerDay         = 30;
            savePaymentSettingsCommand.MaxTransactionPerDay    = 40;
            savePaymentSettingsCommand.MaxTransactionPerWeek   = 50;
            savePaymentSettingsCommand.MaxTransactionPerMonth  = 60;
            savePaymentSettingsCommand.PaymentMethod           = "XPAY";
            savePaymentSettingsCommand.PaymentGatewayMethod    = PaymentMethod.Online;
            // Act
            _commands.UpdateSettings(savePaymentSettingsCommand);

            //Assert
            var settings = _paymentRepository.PaymentSettings.Single(x => x.Id == paymentSettings.Id);

            settings.MinAmountPerTransaction.ShouldBeEquivalentTo(10);
            settings.MaxAmountPerTransaction.ShouldBeEquivalentTo(20);
            settings.MaxAmountPerDay.ShouldBeEquivalentTo(30);
            settings.MaxTransactionPerDay.ShouldBeEquivalentTo(40);
            settings.MaxTransactionPerWeek.ShouldBeEquivalentTo(50);
            settings.MaxTransactionPerMonth.ShouldBeEquivalentTo(60);
            settings.UpdatedBy.ShouldBeEquivalentTo(_actorInfoProvider.Actor.UserName);
            settings.UpdatedDate.Should().BeCloseTo(DateTime.Now, 5000);
        }
示例#3
0
        public PaymentSettings CreatePaymentSettings(Core.Brand.Interface.Data.Brand brand, PaymentType type, string vipLevel, PaymentSettingsValues settings)
        {
            var model = new SavePaymentSettingsCommand
            {
                Id                      = Guid.NewGuid(),
                Licensee                = brand.Licensee.Id,
                Brand                   = brand.Id,
                PaymentType             = type,
                PaymentGatewayMethod    = PaymentMethod.OfflineBank,
                PaymentMethod           = PaymentMethodDto.OfflinePayMethod,
                Currency                = brand.BrandCurrencies.First().CurrencyCode,
                VipLevel                = vipLevel,
                MinAmountPerTransaction = settings.MinAmountPerTransaction,
                MaxAmountPerTransaction = settings.MaxAmountPerTransaction,
                MaxTransactionPerDay    = settings.MaxTransactionsPerDay,
                MaxTransactionPerWeek   = settings.MaxTransactionsPerWeek,
                MaxTransactionPerMonth  = settings.MaxTransactionsPerMonth
            };

            var paymentSettingsId = _paymentSettingsCommands.AddSettings(model);

            var ps =
                _paymentRepository.PaymentSettings
                .Single(x => x.Id == paymentSettingsId);

            _paymentSettingsCommands.Enable(ps.Id, "remark");
            return(ps);
        }
示例#4
0
        public PaymentSettings CreatePaymentSettings(Core.Brand.Interface.Data.Brand brand, PaymentType type, bool enable = true)
        {
            var model = new SavePaymentSettingsCommand
            {
                Id                      = Guid.NewGuid(),
                Licensee                = brand.Licensee.Id,
                Brand                   = brand.Id,
                PaymentType             = type,
                PaymentGatewayMethod    = PaymentMethod.OfflineBank,
                PaymentMethod           = PaymentMethodDto.OfflinePayMethod,
                Currency                = brand.BrandCurrencies.First().CurrencyCode,
                VipLevel                = brand.DefaultVipLevelId.ToString(),
                MinAmountPerTransaction = 10,
                MaxAmountPerTransaction = 200,
                MaxTransactionPerDay    = 10,
                MaxTransactionPerWeek   = 20,
                MaxTransactionPerMonth  = 30
            };

            var paymentSettingsId = _paymentSettingsCommands.AddSettings(model);

            var ps =
                _paymentRepository.PaymentSettings
                .Single(x => x.Id == paymentSettingsId);

            if (enable)
            {
                _paymentSettingsCommands.Enable(ps.Id, "remark");
            }

            return(ps);
        }
示例#5
0
        public void Cannot_save_payment_setting_with_invalid_brand()
        {
            // Arrange
            var brandTestHelper   = Container.Resolve <BrandTestHelper>();
            var paymentTestHelper = Container.Resolve <PaymentTestHelper>();

            var licensee = brandTestHelper.CreateLicensee();
            var brand    = brandTestHelper.CreateBrand(licensee, isActive: true);

            var brandBankAccount = paymentTestHelper.CreateBankAccount(brand.Id, brand.DefaultCurrency);

            var model = new SavePaymentSettingsCommand
            {
                Id                      = Guid.Empty,
                Licensee                = brand.Licensee.Id,
                Brand                   = brand.Id,
                PaymentType             = PaymentType.Deposit,
                PaymentMethod           = PaymentMethodDto.OfflinePayMethod,
                PaymentGatewayMethod    = PaymentMethod.OfflineBank,
                Currency                = brand.BrandCurrencies.First().CurrencyCode,
                VipLevel                = brand.DefaultVipLevelId.ToString(),
                MinAmountPerTransaction = 10,
                MaxAmountPerTransaction = 200,
                MaxTransactionPerDay    = 10,
                MaxTransactionPerWeek   = 20,
                MaxTransactionPerMonth  = 30
            };

            LogWithNewAdmin(Modules.PaymentSettings, Permissions.Create);

            // Act
            Assert.Throws <InsufficientPermissionsException>(() => _paymentSettingsQueries.SaveSetting(model));
        }
示例#6
0
        public void Should_throw_exception_if_negative_values_in_MaxTransactionPerWeek()
        {
            // Arrange
            var saveSettingsCommand = new SavePaymentSettingsCommand();

            saveSettingsCommand.MaxTransactionPerWeek = -1;

            // Act
            Action action = () => _commands.AddSettings(saveSettingsCommand);

            //Assert
            action.ShouldThrow <RegoException>().WithMessage("MaxTransactionPerWeekError");
        }
        public void Should_throw_exception_if_no_paymentMethod()
        {
            // Arrange
            var savePaymentSettingsCommand = new SavePaymentSettingsCommand();

            //Add to pass Validator
            savePaymentSettingsCommand.MaxAmountPerTransaction = 1;
            savePaymentSettingsCommand.PaymentGatewayMethod    = PaymentMethod.OfflineBank;
            // Act
            Action action = () => _commands.AddSettings(savePaymentSettingsCommand);

            //Assert
            action.ShouldThrow <Exception>().WithMessage("PaymentMethodIsRequired");
        }
示例#8
0
        public void Should_throw_exception_if_MaxTransactionsPerDay_greater_than_MaxTransactionsPerMonth_in_add_paymentSettings()
        {
            // Arrange
            var saveSettingsCommand = new SavePaymentSettingsCommand();

            saveSettingsCommand.MaxTransactionPerDay   = 2;
            saveSettingsCommand.MaxTransactionPerMonth = 1;

            // Act
            Action action = () => _commands.AddSettings(saveSettingsCommand);

            //Assert
            action.ShouldThrow <RegoException>().WithMessage("MaxTransactionPerMonthErrorPerDay");
        }
示例#9
0
        public void Should_throw_exception_if_MaxAmountPerTransaction_equal_MinAmountPerTransaction_in_add_paymentSettings()
        {
            // Arrange
            var saveSettingsCommand = new SavePaymentSettingsCommand();

            saveSettingsCommand.MinAmountPerTransaction = 1;
            saveSettingsCommand.MaxAmountPerTransaction = 1;

            // Act
            Action action = () => _commands.AddSettings(saveSettingsCommand);

            //Assert
            action.ShouldThrow <RegoException>().WithMessage("MaxminAmountPerTransactionError");
        }
        public Guid AddSettings(SavePaymentSettingsCommand model)
        {
            var validationResult = new SavePaymentSettingsValidator().Validate(model);

            if (!validationResult.IsValid)
            {
                throw new RegoException(validationResult.Errors.First().ErrorMessage);
            }

            if (_repository.PaymentSettings.Any(x => x.Id == model.Id))
            {
                throw new RegoException(PaymentSettingsErrors.AlreadyExistsError.ToString());
            }

            var paymentSettings = new PaymentSettings();

            paymentSettings.Id                      = model.Id == Guid.Empty ? Guid.NewGuid() : model.Id;
            paymentSettings.BrandId                 = model.Brand;
            paymentSettings.CurrencyCode            = model.Currency;
            paymentSettings.VipLevel                = model.VipLevel;
            paymentSettings.PaymentType             = model.PaymentType;
            paymentSettings.PaymentMethod           = model.PaymentMethod;
            paymentSettings.PaymentGatewayMethod    = model.PaymentGatewayMethod;
            paymentSettings.CreatedDate             = DateTime.Now;
            paymentSettings.CreatedBy               = _actorInfoProvider.Actor.UserName;
            paymentSettings.MinAmountPerTransaction = model.MinAmountPerTransaction;
            paymentSettings.MaxAmountPerTransaction = model.MaxAmountPerTransaction;
            paymentSettings.MaxAmountPerDay         = model.MaxAmountPerDay;
            paymentSettings.MaxTransactionPerDay    = model.MaxTransactionPerDay;
            paymentSettings.MaxTransactionPerWeek   = model.MaxTransactionPerWeek;
            paymentSettings.MaxTransactionPerMonth  = model.MaxTransactionPerMonth;

            paymentSettings.Enabled = Status.Inactive;

            _repository.PaymentSettings.Add(paymentSettings);
            _repository.SaveChanges();

            _eventBus.Publish(new PaymentSettingCreated
            {
                Id           = paymentSettings.Id,
                CreatedBy    = paymentSettings.CreatedBy,
                CreatedDate  = paymentSettings.CreatedDate,
                VipLevel     = paymentSettings.VipLevel,
                CurrencyCode = paymentSettings.CurrencyCode,
                BrandId      = paymentSettings.BrandId
            });

            return(paymentSettings.Id);
        }
示例#11
0
        public void Should_not_throw_exception_if_MaxAmountPerTransaction_zero_in_add_paymentSettings()
        {
            // Arrange
            var saveSettingsCommand = new SavePaymentSettingsCommand();

            saveSettingsCommand.MinAmountPerTransaction = 1;
            saveSettingsCommand.MaxAmountPerTransaction = 0;

            // Act
            Action action = () => _commands.AddSettings(saveSettingsCommand);

            //Assert
            action.ShouldThrow <RegoException>().Where(x =>
                                                       !x.Message.Contains("MaxminAmountPerTransactionError"));
        }
        public PaymentSettingSaveResult SaveSetting(SavePaymentSettingsCommand model)
        {
            string message;
            var    paymentSettingsId = model.Id;

            if (model.Id == Guid.Empty)
            {
                paymentSettingsId = _settingsCommands.AddSettings(model);
                message           = "CreatedSuccessfully";
            }
            else
            {
                _settingsCommands.UpdateSettings(model);
                message = "UpdatedSuccessfully";
            }

            return(new PaymentSettingSaveResult
            {
                Message = message,
                PaymentSettingsId = paymentSettingsId
            });
        }
        public void UpdateSettings(SavePaymentSettingsCommand model)
        {
            var validationResult = new SavePaymentSettingsValidator().Validate(model);

            if (!validationResult.IsValid)
            {
                throw new RegoException(validationResult.Errors.First().ErrorMessage);
            }

            var paymentSettings = _repository.PaymentSettings
                                  .SingleOrDefault(x => x.Id == model.Id);

            if (paymentSettings == null)
            {
                throw new RegoException(string.Format("Payment settings with id '{0}' were not found", model.Id));
            }

            paymentSettings.MinAmountPerTransaction = model.MinAmountPerTransaction;
            paymentSettings.MaxAmountPerTransaction = model.MaxAmountPerTransaction;
            paymentSettings.MaxAmountPerDay         = model.MaxAmountPerDay;
            paymentSettings.MaxTransactionPerDay    = model.MaxTransactionPerDay;
            paymentSettings.MaxTransactionPerWeek   = model.MaxTransactionPerWeek;
            paymentSettings.MaxTransactionPerMonth  = model.MaxTransactionPerMonth;
            paymentSettings.UpdatedDate             = DateTime.Now;
            paymentSettings.UpdatedBy = _actorInfoProvider.Actor.UserName;

            _eventBus.Publish(new PaymentSettingUpdated
            {
                Id           = paymentSettings.Id,
                UpdatedBy    = paymentSettings.UpdatedBy,
                UpdatedDate  = paymentSettings.UpdatedDate.GetValueOrDefault(),
                VipLevel     = paymentSettings.VipLevel,
                CurrencyCode = paymentSettings.CurrencyCode,
                BrandId      = paymentSettings.BrandId
            });

            _repository.SaveChanges();
        }
        public string Save(SavePaymentSettingsCommand model)
        {
            try
            {
                var result = _paymentSettingsQueries
                             .SaveSetting(model);

                return(SerializeJson(new
                {
                    Result = "success",
                    Data = result.Message,
                    Id = result.PaymentSettingsId
                }));
            }
            catch (RegoException regoEx)
            {
                return(SerializeJson(new { Result = "failed", Data = regoEx.Message }));
            }
            catch (ValidationError e)
            {
                return(SerializeJson(new { Result = "failed", Data = e.ErrorMessage }));
            }
        }