示例#1
0
        public Guid Add(AddBankAccountData data)
        {
            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                var validationResult = new AddBankAccountValidator(_repository, _brandRepository).Validate(data);

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

                var brand = _repository.Brands.Single(x => x.Id == new Guid(data.BrandId));

                var bankAccount = new BankAccount
                {
                    Id            = data.Id ?? Guid.NewGuid(),
                    Bank          = _repository.Banks.Single(x => x.Id == data.Bank),
                    CurrencyCode  = data.Currency,
                    AccountId     = data.AccountId,
                    AccountName   = data.AccountName,
                    AccountNumber = data.AccountNumber,
                    //AccountType = data.AccountType,
                    AccountType   = _repository.BankAccountTypes.Single(x => x.Id == data.AccountType),
                    Province      = data.Province,
                    Branch        = data.Branch,
                    SupplierName  = data.SupplierName,
                    ContactNumber = data.ContactNumber,
                    USBCode       = data.USBCode,
                    //Temporrary solution for Bank Account seeding
                    PurchasedDate = DateTime.UtcNow,
                    Remarks       = data.Remarks,
                    Status        = BankAccountStatus.Pending,
                    Created       = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId),
                    CreatedBy     = _actorInfoProvider.Actor.UserName
                };

                _repository.BankAccounts.Add(bankAccount);
                _repository.SaveChanges();

                var bankAccountAdded = new BankAccountAdded
                {
                    Id                = bankAccount.Id,
                    AccountId         = bankAccount.AccountId,
                    BankId            = bankAccount.Bank.Id,
                    BankAccountStatus = bankAccount.Status,
                    CreatedBy         = bankAccount.CreatedBy,
                    CreatedDate       = bankAccount.Created,
                    EventCreated      = bankAccount.Created,
                };

                _eventBus.Publish(bankAccountAdded);

                scope.Complete();

                return(bankAccount.Id);
            }
        }
示例#2
0
        public BankAccount CreateBankAccount(Guid brandId, string currencyCode, bool activate = true)
        {
            var bank            = _paymentRepository.Banks.FirstOrDefault(b => b.BrandId == brandId);
            var bankAccountType = _paymentRepository.BankAccountTypes.FirstOrDefault();

            if (bankAccountType == null)
            {
                bankAccountType = CreateBankAccountType(Guid.NewGuid(), "Test Type");
            }

            var data = new AddBankAccountData
            {
                BrandId       = brandId.ToString(),
                AccountId     = TestDataGenerator.GetRandomString(10),
                AccountName   = TestDataGenerator.GetRandomString(10),
                AccountNumber = TestDataGenerator.GetRandomString(10, "1234567890"),
                Bank          = bank.Id,
                AccountType   = bankAccountType.Id,
                //AccountType = Guid.NewGuid(),
                Branch        = "Branch",
                Currency      = currencyCode,
                Province      = "Province",
                SupplierName  = "Supplier Name",
                ContactNumber = "911",
                USBCode       = "USB001"
            };

            var bankAccountId = _bankAccountCommands.Add(data);

            if (activate)
            {
                _bankAccountCommands.Activate(bankAccountId, "remark");
            }
            var bankAccount = _paymentRepository.BankAccounts.FirstOrDefault(x => x.Id == bankAccountId);

            return(bankAccount);
        }
示例#3
0
        public Guid AddWithFiles(AddBankAccountData data, byte[] idFrontImage, byte[] idBackImage,
                                 byte[] atmCardImage)
        {
            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                //Server Validation
                //var validationResult = new AddBankAccountValidator(_repository, _brandRepository).Validate(data);
                //if (!validationResult.IsValid)
                //{
                //    throw new RegoException(validationResult.Errors.First().ErrorMessage);
                //    //throw validationResult.GetValidationError();
                //}

                //var bank = _repository.Banks.Single(x => x.Id == data.Bank);
                var id         = Guid.NewGuid();
                var brandId    = Guid.Parse(data.BrandId);
                var licenseeId = Guid.Parse(data.LicenseeId);

                var frontImageId   = SaveFile(data.IdFrontImage, idFrontImage, id, brandId, licenseeId);
                var backImageId    = SaveFile(data.IdBackImage, idBackImage, id, brandId, licenseeId);
                var atmCardImageId = SaveFile(data.AtmCardImage, atmCardImage, id, brandId, licenseeId);

                var brand = _repository.Brands.Single(x => x.Id == new Guid(data.BrandId));

                var bankAccount = new BankAccount
                {
                    Id              = id,
                    Bank            = _repository.Banks.Single(x => x.Id == data.Bank),
                    CurrencyCode    = data.Currency,
                    AccountId       = data.AccountId,
                    AccountName     = data.AccountName,
                    AccountNumber   = data.AccountNumber,
                    AccountType     = _repository.BankAccountTypes.Single(x => x.Id == data.AccountType),
                    Province        = data.Province,
                    Branch          = data.Branch,
                    Remarks         = data.Remarks,
                    SupplierName    = data.SupplierName,
                    ContactNumber   = data.ContactNumber,
                    USBCode         = data.USBCode,
                    PurchasedDate   = DateTime.Parse(data.PurchasedDate),
                    UtilizationDate = DateTime.Parse(data.UtilizationDate),
                    ExpirationDate  = DateTime.Parse(data.ExpirationDate),
                    IdFrontImage    = frontImageId,
                    IdBackImage     = backImageId,
                    ATMCardImage    = atmCardImageId,
                    Status          = BankAccountStatus.Pending,
                    Created         = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId),
                    CreatedBy       = _actorInfoProvider.Actor.UserName
                };

                _repository.BankAccounts.Add(bankAccount);
                _repository.SaveChanges();

                var bankAccountAdded = new BankAccountAdded
                {
                    Id                = bankAccount.Id,
                    AccountId         = bankAccount.AccountId,
                    BankId            = bankAccount.Bank.Id,
                    BankAccountStatus = bankAccount.Status,
                    CreatedBy         = bankAccount.CreatedBy,
                    CreatedDate       = bankAccount.Created,
                    EventCreated      = bankAccount.Created,
                    Remarks           = bankAccount.Remarks
                };

                _eventBus.Publish(bankAccountAdded);

                scope.Complete();

                return(bankAccount.Id);
            }
        }