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); }
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)); }
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)); }
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 }); }