コード例 #1
0
        private void ValidatePaymentLevel()
        {
            RuleFor(x => x.Id)
            .Must(x => x != Guid.Empty)
            .WithMessage(DeactivatePaymentLevelErrors.Requred)
            .Must(x =>
            {
                _oldPaymentLevel = _paymentRepository.PaymentLevels.SingleOrDefault(y => y.Id == x);

                return(_oldPaymentLevel != null);
            })
            .WithMessage(DeactivatePaymentLevelErrors.NotFound)
            .Must(x => _oldPaymentLevel.Status == PaymentLevelStatus.Active)
            .WithMessage(DeactivatePaymentLevelErrors.NotActive)
            .Must((data, x) =>
            {
                var deactivatePaymentLevelStatus = _paymentLevelQueries.GetDeactivatePaymentLevelStatus(x);

                _newPaymentLevelRequired =
                    deactivatePaymentLevelStatus == DeactivatePaymentLevelStatus.CanDeactivateIsAssigned ||
                    deactivatePaymentLevelStatus == DeactivatePaymentLevelStatus.CanDeactivateIsDefault;

                return(!_newPaymentLevelRequired ||
                       (data.NewPaymentLevelId.HasValue && data.NewPaymentLevelId.Value != Guid.Empty));
            })
            .WithMessage(DeactivatePaymentLevelErrors.NewPaymentLevelRequired);
        }
コード例 #2
0
        private void ValidateNewPaymentLevel()
        {
            When(x => _newPaymentLevelRequired && x.NewPaymentLevelId.HasValue, () => RuleFor(x => x.NewPaymentLevelId)
                 .Must(x =>
            {
                _newPaymentLevel = _paymentRepository.PaymentLevels.SingleOrDefault(y => y.Id == x.Value);

                return(_newPaymentLevel != null);
            })
                 .WithMessage(DeactivatePaymentLevelErrors.NewPaymentLevelNotFound)
                 .Must(x => _newPaymentLevel.Status == PaymentLevelStatus.Active)
                 .WithMessage(DeactivatePaymentLevelErrors.NewPaymentLevelNotActive));
        }
コード例 #3
0
        public ActivatePaymentLevelValidator(IPaymentRepository paymentRepository)
        {
            PaymentLevel paymentLevel = null;

            CascadeMode = CascadeMode.StopOnFirstFailure;

            RuleFor(x => x.Id)
            .Must(x =>
            {
                paymentLevel = paymentRepository.PaymentLevels.SingleOrDefault(y => y.Id == x);
                return(paymentLevel != null);
            })
            .WithMessage(ActivatePaymentLevelErrors.NotFound);

            When(x => paymentLevel != null, () =>
                 RuleFor(x => x.Id)
                 .Must(x => paymentLevel.Status == PaymentLevelStatus.Inactive)
                 .WithMessage(ActivatePaymentLevelErrors.AlreadyActive));
        }
コード例 #4
0
        public PaymentLevelSaveResult Save(EditPaymentLevel model)
        {
            Brand.Interface.Data.Brand brand = null;

            if (model.Brand.HasValue)
            {
                brand = _brandRepository.Brands.Include(b => b.BrandCurrencies).SingleOrDefault(b => b.Id == model.Brand);
            }

            ValidateCreatePaymentLevelModel(model, brand);

            var currency     = brand.BrandCurrencies.Single(c => c.CurrencyCode == model.Currency);
            var currencyCode = currency.CurrencyCode;

            var bankAccounts = GetBankAccounts(model);

            FillBankReceipts(model, GetBankAccounts(model));

            var paymentGatewaySettings = GetPaymentGatewaySettings(model);

            var now = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId);

            var paymentLevel = new PaymentLevel
            {
                Id                   = model.Id ?? Guid.NewGuid(),
                BrandId              = brand.Id,
                CurrencyCode         = currencyCode,
                Status               = PaymentLevelStatus.Active,
                CreatedBy            = _actorInfoProvider.Actor.UserName,
                DateCreated          = now,
                ActivatedBy          = _actorInfoProvider.Actor.UserName,
                DateActivated        = now,
                Code                 = model.Code,
                Name                 = model.Name,
                EnableOfflineDeposit = model.EnableOfflineDeposit,
                EnableOnlineDeposit  = model.EnableOnlineDeposit,
                BankFeeRatio         = model.BankFeeRatio,
                MaxBankFee           = model.MaxBankFee
            };

            _repository.PaymentLevels.Add(paymentLevel);

            if (model.IsDefault)
            {
                _brandCommands.MakePaymentLevelDefault(paymentLevel.Id, paymentLevel.BrandId, currencyCode);
            }

            paymentLevel.BankAccounts = new List <BankAccount>();

            if (bankAccounts != null)
            {
                foreach (var bankAccount in bankAccounts.Where(x => x.Status == BankAccountStatus.Active))
                {
                    paymentLevel.BankAccounts.Add(bankAccount);
                }
            }

            paymentLevel.PaymentGatewaySettings = new List <PaymentGatewaySettings>();
            if (paymentGatewaySettings != null)
            {
                foreach (var settings in paymentGatewaySettings)
                {
                    paymentLevel.PaymentGatewaySettings.Add(settings);
                }
            }

            _repository.SaveChanges();

            _eventBus.Publish(new PaymentLevelAdded(
                                  paymentLevel.Id,
                                  paymentLevel.Code,
                                  paymentLevel.Name,
                                  paymentLevel.BrandId,
                                  paymentLevel.CurrencyCode,
                                  paymentLevel.Status,
                                  paymentLevel.CreatedBy,
                                  paymentLevel.DateCreated)
            {
                EventCreated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId),
            });

            return(new PaymentLevelSaveResult
            {
                Message = "app:payment.levelCreated",
                PaymentLevelId = paymentLevel.Id
            });
        }