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