public async Task CreateAsync_Fail_When_Null() { CreditCardEntity cc = null; var creditCardRepository = this.serviceProvider.GetService <ICreditCardRepository>(); await creditCardRepository.CreateAsync(cc); }
public Task CreateAsync(CreditCardEntity creditCard) { if (creditCard == null) { throw new ArgumentNullException(nameof(creditCard)); } // Intentionally missing CC already exist check as there were no requirement creditCardStorage.Add(creditCard); return(Task.CompletedTask); }
private CreditCardEntity[] generateCreditCards(int startWith, int length) { int count = 4; CreditCardEntity[] arrCreditCards = new CreditCardEntity[count]; for (int i = 0; i < count; i++) { var genToken = generateCreditCardNumber(startWith, length); arrCreditCards[i] = new CreditCardEntity { Number = genToken }; } return(arrCreditCards); }
/// <summary> /// Edit and existing credit card and update CIM. /// </summary> /// <param name="creditcardid"></param> /// <returns></returns> public ActionResult EditCard(int creditcardid) { var card = new CreditCardEntity(creditcardid); if (card.IsNew) { throw new HttpException(404, SharedRes.Error.NotFound_CreditCard); } if (!Permissions.UserHasPermission("Edit", card)) { throw new HttpException(401, SharedRes.Error.Unauthorized_CreditCard); } // populate the model with the card data loaded from authorize.net try { CustomerGateway cg; var customer = RoleUtils.IsUserServiceAdmin() ? EnsureProfile(out cg, card.UserCreditCards.First().User) : EnsureProfile(out cg); var profile = customer.PaymentProfiles.First(x => x.ProfileID == card.AuthorizeId); var addressLines = profile.BillingAddress.Street.Split('\n'); var model = new EditCard { AddressLine1 = addressLines[0], AddressLine2 = addressLines.Length > 1 ? addressLines[1] : "", City = profile.BillingAddress.City, Country = profile.BillingAddress.Country, FirstName = profile.BillingAddress.First, LastName = profile.BillingAddress.Last, State = profile.BillingAddress.State, Zip = profile.BillingAddress.Zip, }; return(PartialView(model)); } catch (Exception ex) { ModelState.AddModelError("", Purchase.EditCard_Error); Log.Error(Purchase.EditCard_Error, ex); } return(PartialView()); }
/// <summary> /// This is called in the special condition where a card is already added to Authorize.Net CIM but apparently not in the list of cards. /// This is not expected to happen usually, but could during testing or if we have to manually add cards. /// </summary> /// <returns></returns> public ActionResult ForceResync() { var transaction = new Transaction(IsolationLevel.ReadCommitted, "sync cards"); try { CustomerGateway cg; var customer = EnsureProfile(out cg); foreach (var cardProfile in customer.PaymentProfiles) { var creditCard = new CreditCardEntity { AuthorizeId = cardProfile.ProfileID, FirstName = cardProfile.BillingAddress.First, LastName = cardProfile.BillingAddress.Last, AccountNumber = cardProfile.CardNumber.Replace("X", ""), Address = cardProfile.BillingAddress.Street }; transaction.Add(creditCard); creditCard.Save(); var userCard = new UserCreditCardEntity { UserId = Membership.GetUser().GetUserEntity().UserId, CreditCardId = creditCard.CreditCardId }; transaction.Add(userCard); userCard.Save(); } transaction.Commit(); } catch (Exception exc) { transaction.Rollback(); ModelState.AddModelError("", Purchase.AddCard_Error); Log.Error(Purchase.SyncError, exc); } finally { transaction.Dispose(); } return(new EmptyResult()); }
public async Task CreateAsync_Success() { var cc = new CreditCardEntity() { CreditCardNumber = "9876-6534-1234-5249", Name = "Micheal Smith", CVC = 534, Expiry = DateTime.Parse("2023-05-01") }; // Here I am testing actual repository as this is already dummy var creditCardRepository = this.serviceProvider.GetService <ICreditCardRepository>(); await creditCardRepository.CreateAsync(cc); var allCC = await creditCardRepository.GetAllAsync(); Assert.IsTrue(1 == allCC.Count()); }
public async Task GetAllAsync_Success() { var cc1 = new CreditCardEntity() { CreditCardNumber = "9876-6534-1234-5249", Name = "Micheal Smith", CVC = 534, Expiry = DateTime.Parse("2023-05-01") }; var cc2 = new CreditCardEntity() { CreditCardNumber = "9876-6534-1234-1234", Name = "Micheal", CVC = 514, Expiry = DateTime.Parse("2021-05-01") }; var cc3 = new CreditCardEntity() { CreditCardNumber = "9876-6534-1234-3214", Name = "Smith", CVC = 025, Expiry = DateTime.Parse("2022-05-01") }; // Here I am testing actual repository as this is already dummy var creditCardRepository = this.serviceProvider.GetService <ICreditCardRepository>(); await creditCardRepository.CreateAsync(cc1); await creditCardRepository.CreateAsync(cc2); await creditCardRepository.CreateAsync(cc3); // act var result = await creditCardRepository.GetAllAsync(); Assert.IsTrue(result.Any()); Assert.AreEqual(3, result.Count()); }
/// <inheritdoc/> public async Task <CreditCardEntity> Insert(CreditCardEntity creditCardEntity) { if (creditCardEntity is null) { throw new ArgumentNullException(nameof(creditCardEntity)); } var lookupCreditCard = await GetCreditCard(creditCardEntity.CardNumber); if (lookupCreditCard == null) { creditCardEntity.CardHash = Helper.HashString(creditCardEntity.CardNumber, _configuration["Secret"]); creditCardEntity.CardNumber = Helper.Encrypt(creditCardEntity.CardNumber); _context.CreditCards.Add(creditCardEntity); await _context.SaveChangesAsync(); return(creditCardEntity); } return(lookupCreditCard); }
public async Task GetAsync_Success() { var cc = new CreditCardEntity() { CreditCardNumber = "9876-6534-1234-5249", Name = "Micheal Smith", CVC = 534, Expiry = DateTime.Parse("2023-05-01") }; var ccNumber = "9876-6534-1234-5249"; // Here I am testing actual repository as this is already dummy var creditCardRepository = this.serviceProvider.GetService <ICreditCardRepository>(); await creditCardRepository.CreateAsync(cc); // act var result = await creditCardRepository.GetAsync(ccNumber); Assert.IsNotNull(result); Assert.AreEqual(ccNumber, result.CreditCardNumber); }
public string ReadyForTransfer(CreditCardEntity entity) { return("داتیس آرین قشم"); }
protected override IEnumerable <FileParserInput> DownloadTransactions() { var downloadResults = new List <FileParserInput>(); var valueParser = ComponentContext.ResolveKeyed <IValueParser>(Constants.UniqueContainerKeys.ValueParserGermanDecimal); //bankaccount var iban = GetAccounts()[0].FindElement(By.ClassName("iban")).Text.CleanString(); var balance = (decimal)valueParser.Parse( GetAccounts()[0].FindElement(new ByChained(By.ClassName("amount"), By.TagName("span"))).Text); GetAccounts()[0].FindElement(By.ClassName("evt-paymentTransaction")).Click(); var bankAccount = BankAccountRepository.GetByIban(iban); if (bankAccount == null) { bankAccount = new BankAccountEntity { AccountNumber = iban, Iban = iban, BankName = Constants.DownloadHandler.BankNameDkb, AccountName = Constants.DownloadHandler.AccountNameGiro }; BankAccountRepository.Insert(bankAccount); } var resultingFile = DownloadAndScreenshot(iban, "[id*=transactionDate]", "[id*=toTransactionDate]"); downloadResults.Add(new FileParserInput { OwningEntity = bankAccount, FileParser = ComponentContext.ResolveKeyed <IFileParser>(Constants.UniqueContainerKeys.FileParserDkbGiro), FilePath = resultingFile, TargetEntity = typeof(DkbTransactionEntity), UniqueIdGroupingFunc = entity => ((DkbTransactionEntity)entity).AvailabilityDate.Date, OrderingFuncs = new List <Func <object, object> > { o => ((DkbTransactionEntity)o).AvailabilityDate.Date, o => ((DkbTransactionEntity)o).Text, o => ((DkbTransactionEntity)o).Amount }, Balance = balance, BalanceSelectorFunc = () => BankTransactionRepository.TransactionSumForAccountId(bankAccount.Id) }); NavigateHome(); //credit card var creditCardNumberMasked = GetAccounts()[1].FindElement(By.XPath("td[1]/div[2]")).Text.CleanString(); var creditBalance = (decimal)valueParser.Parse( GetAccounts()[1].FindElement(new ByChained(By.ClassName("amount"), By.TagName("span"))).Text); GetAccounts()[1].FindElement(By.ClassName("evt-paymentTransaction")).Click(); var creditCardAccount = CreditCardAccountRepository.GetByAccountNumberAndBankName(creditCardNumberMasked, Constants.DownloadHandler.BankNameDkb); if (creditCardAccount == null) { creditCardAccount = new CreditCardEntity { AccountNumber = creditCardNumberMasked, CreditCardNumber = null, BankName = Constants.DownloadHandler.BankNameDkb, AccountName = Constants.DownloadHandler.AccountNameVisa }; CreditCardAccountRepository.Insert(creditCardAccount); } resultingFile = DownloadAndScreenshot(creditCardNumberMasked, "[id*=postingDate]", "[id*=toPostingDate]"); downloadResults.Add(new FileParserInput { OwningEntity = creditCardAccount, FileParser = ComponentContext.ResolveKeyed <IFileParser>(Constants.UniqueContainerKeys.FileParserDkbCredit), FilePath = resultingFile, TargetEntity = typeof(DkbCreditTransactionEntity), UniqueIdGroupingFunc = entity => ((DkbCreditTransactionEntity)entity).AvailabilityDate.Date, OrderingFuncs = new List <Func <object, object> > { o => ((DkbCreditTransactionEntity)o).AvailabilityDate.Date, o => ((DkbCreditTransactionEntity)o).Text, o => ((DkbCreditTransactionEntity)o).Amount }, Balance = creditBalance, BalanceSelectorFunc = () => BankTransactionRepository.TransactionSumForAccountId(creditCardAccount.Id) }); return(downloadResults); }
protected override IEnumerable <FileParserInput> DownloadTransactions() { var valueParserDe = ComponentContext.ResolveKeyed <IValueParser>(Constants.UniqueContainerKeys.ValueParserGermanDecimal); var valueParserEn = ComponentContext.ResolveKeyed <IValueParser>(Constants.UniqueContainerKeys.ValueParserEnglishDecimal); Browser.WaitForJavaScript(7500); //settings Browser.FindElement(By.XPath("//*[@class='UIMenu']/ul/li[4]/a")).Click(); Browser.WaitForJavaScript(5000); var iban = Browser.FindElements(By.ClassName("iban-split")).Select(element => element.Text).Aggregate("", (s, s1) => s + s1).CleanString(); var balanceString = Browser.FindElement(By.ClassName("UIHeader__account-balance")).Text.ExtractDecimalNumberString(); decimal balance; if (balanceString.IndexOf(",", StringComparison.Ordinal) < balanceString.IndexOf(".", StringComparison.Ordinal)) { balance = (decimal)valueParserEn.Parse(balanceString); } else { balance = (decimal)valueParserDe.Parse(balanceString); } var bankAccount = CreditCardAccountRepository.GetByAccountNumberAndBankName(iban, Constants.DownloadHandler.BankNameNumber26); if (bankAccount == null) { bankAccount = CreditCardAccountRepository.Query() .First( entity => entity.BankName == Constants.DownloadHandler.BankNameNumber26 && entity.AccountName == Constants.DownloadHandler.AccountNameMasterCard); if (bankAccount == null) { bankAccount = new CreditCardEntity { AccountNumber = iban, BankName = Constants.DownloadHandler.BankNameNumber26, AccountName = Constants.DownloadHandler.AccountNameMasterCard }; CreditCardAccountRepository.Insert(bankAccount); } } NavigateHome(); TakeScreenshot(iban); //Click download button Browser.FindElement(By.ClassName("csv")).Click(); Browser.WaitForJavaScript(); //Click previous a few times Browser.FindElement(By.ClassName("ui-datepicker-today")).Click(); Browser.WaitForJavaScript(100); for (int i = 0; i < 6; i++) { Browser.FindElement(By.ClassName("ui-datepicker-prev")).Click(); Browser.WaitForJavaScript(100); } //Click first day of month Browser.FindElement(new ByChained(By.ClassName("ui-datepicker-calendar"), By.XPath("//*[@data-handler='selectDay']"))).Click(); var resultingFile = DownloadFromWebElement(Browser.FindElement(By.ClassName("ok")), iban); yield return(new FileParserInput { OwningEntity = bankAccount, FileParser = ComponentContext.ResolveKeyed <IFileParser>(Constants.UniqueContainerKeys.FileParserNumber26), FilePath = resultingFile, TargetEntity = typeof(Number26TransactionEntity), Balance = balance, BalanceSelectorFunc = () => BankTransactionRepository.TransactionSumForAccountId(bankAccount.Id) }); }
/// <summary> /// The seed. /// </summary> /// <param name="context"> /// The context. /// </param> protected override void Seed(BankingDbContext context) { var format = Constants.DayFormat; var provider = CultureInfo.InvariantCulture; var bankMilleniumGuid = Guid.Parse("{1496DD29-14BF-4753-AACC-35203E3947B7}"); var bankBcpGuid = Guid.Parse("{740ED738-D34C-4918-9CD9-9EC280F3C093}"); var bankMontepioGuid = Guid.Parse("F8C95B7D-A8EA-4FE6-95B5-930122E9A5A2"); var bankCaixaGuid = Guid.Parse("752ABB7E-FECE-4673-B561-690C56FC44D2"); var bankMillenium = new BankEntity { Code = bankMilleniumGuid, Name = "Bank Millennium", Country = "Pl", Swift = "BIGBPLPW", Url = "http://www.bankmillennium.pl" }; var bankBcp = new BankEntity { Code = bankBcpGuid, Name = "Millennium BCP", Country = "Pt", Swift = "MillePt", Url = "http://www.millenniumbcp.pt" }; var bankMontepio = new BankEntity { Code = bankMontepioGuid, Name = "Montepio Geral", Country = "Pt", Swift = "MPIOPTPL", Url = "http://www.montepio.pt" }; var bankCaixa = new BankEntity { Code = bankCaixaGuid, Name = "Caixa Geral de Depositos", Country = "Pt", Swift = "caixa", Url = "http://www.cgd.pt" }; var euro = new CurrencyEntity { Currency = Constants.Eur, Order = 1, Name = "Euro", ReasonToOneEuro = 0 }; var pln = new CurrencyEntity { Currency = "Pln", Order = 2, Name = "Zloty", ReasonToOneEuro = 4.20m }; context.SeedAddOrUpdate( p => p.Code, p => new { p.Country, p.Name, p.Swift, p.Url, p.ChangeAt }, bankMillenium, bankBcp, bankMontepio, bankCaixa); context.SeedAddOrUpdate( p => p.Currency, p => new { p.ReasonToOneEuro, p.Order, p.ChangeAt }, euro, pln, new CurrencyEntity { Currency = "USD", Name = "Dollar", Order = 3, ReasonToOneEuro = 1.20m }); var goncaloGuid = Guid.Parse("9B8B32D1-A950-4C11-B77D-6FEFFAA4C17B"); var guiGuid = Guid.Parse("AF47E41B-344A-42AA-AEFF-07FE41E5D53C"); var vascoGuid = Guid.Parse("C7EC913C-95A7-4BAC-9C2E-96A5E5B9C420"); var isildaGuid = Guid.Parse("99B84DE3-2D7F-4D56-9592-092CEBA834B8"); var filipaGuid = Guid.Parse("43E1428A-454B-4E6F-B83E-5E44BD28346D"); var goncaloUser = new UserEntity { Code = goncaloGuid, Name = "Goncalo", Surname = "Gaspar", Email = "*****@*****.**", IdNumber = "xxxxx", IdNumberExpirationDate = DateTime.Today.AddYears(2), Nif = "xxxYYyyyx", HealthCare = "xxxxx", HealthCareExpirationDate = DateTime.Today.AddMonths(-5).AddDays(5), SocialSecurity = "xxxxxx", }; context.SeedAddOrUpdate( p => p.Code, p => new { p.Name, p.Surname, p.Email, p.IdNumber, p.IdNumberExpirationDate, p.Passport, p.PassportExpirationDate, p.Nif, p.HealthCare, p.HealthCareExpirationDate, p.SocialSecurity, p.ChangeAt }, goncaloUser); var goncaloPerson = new PersonEntity { Code = goncaloGuid, Name = "Goncalo", Surname = "Gaspar", Email = "*****@*****.**", IsArchived = false, OwnerCode = goncaloGuid }; var guilhermePerson = new PersonEntity { Code = guiGuid, Name = "Guilherme", Surname = "Gaspar", Email = "*****@*****.**", IsArchived = false, OwnerCode = goncaloGuid }; var vascoPerson = new PersonEntity { Code = vascoGuid, Name = "Vasco", Surname = "Gaspar", Email = "*****@*****.**", IsArchived = false, OwnerCode = goncaloGuid }; var isildaPerson = new PersonEntity { Code = isildaGuid, Name = "Isilda", Surname = "Gaspar", Email = "*****@*****.**", IsArchived = false, OwnerCode = goncaloGuid }; var filipaPerson = new PersonEntity { Code = filipaGuid, Name = "Filipa", Surname = "Viegas", Email = "*****@*****.**", IsArchived = false, OwnerCode = goncaloGuid }; context.SeedAddOrUpdate( p => p.Code, p => new { p.Name, p.Surname, p.Email, p.IsArchived, p.IsMe, p.ChangeAt }, goncaloPerson, guilhermePerson, vascoPerson, isildaPerson, filipaPerson); var currentGoncaloGuid = Guid.Parse("303B2432-C710-4DD6-A034-17EB10793CEB"); var currentGoncalo = new CurrentAccountEntity { Code = currentGoncaloGuid, Description = "Conta ordenado", Number = "029.10.012311-5", Iban = "PT50.0036.0029.99100123115.13", Currency = Constants.Eur, Amount = 462.52m, StartDate = DateTime.ParseExact("01/02/2008", format, provider), Holder = goncaloGuid, Owner = goncaloGuid, Bank = bankMontepioGuid, IsArchived = false }; var currentPlGoncaloGuid = Guid.Parse("28244669-e675-4f28-bfeb-3074eb556c40"); var currentPlGoncalo = new CurrentAccountEntity { Code = currentPlGoncaloGuid, Description = "Conta Polonia", Number = "0247914561", Iban = "PL92.1160.2202.00000002479145.61", Currency = "PLN", Amount = 1000.55m, StartDate = DateTime.ParseExact("04/10/2013", format, provider), Holder = goncaloGuid, Owner = goncaloGuid, Bank = bankMilleniumGuid, IsArchived = false }; var currentPlEuroGoncalo = new CurrentAccountEntity { Code = Guid.Parse("BFC9DF65-8650-4925-AEFF-31BC2062C357"), Description = "Conta Polonia Euros", Number = "0248923401", Iban = "PL79.1160.2202.00000002489234.01", Currency = Constants.Eur, Amount = 0m, StartDate = DateTime.ParseExact("21/10/2013", format, provider), Holder = goncaloGuid, Owner = goncaloGuid, Bank = bankMilleniumGuid, IsArchived = false }; var currentGuiGuid = Guid.Parse("9D73C73A-7E1F-40A9-A52E-460010566B4F"); var currentGuilherme = new CurrentAccountEntity { Code = currentGuiGuid, Description = "Conta fun", Number = "029.10.013309-8", Iban = "PT50.0036.0029.99100133098.37", Currency = Constants.Eur, Amount = 707.93m, StartDate = DateTime.ParseExact("01/01/2015", format, provider), Holder = guiGuid, Owner = goncaloGuid, Bank = bankMontepioGuid, IsArchived = false }; var currentVasco = new CurrentAccountEntity { Code = Guid.Parse("4F248CC3-73FC-47D8-B772-49EF64E35D4D"), Description = "Conta Corrente", Number = "63566423095", Iban = "PT50.0035.0995.00635664230.95", Currency = Constants.Eur, Amount = 0, StartDate = DateTime.Today.AddYears(-2), Holder = vascoGuid, Owner = goncaloGuid, Bank = bankCaixaGuid, IsArchived = false }; var currentFilipa = new CurrentAccountEntity { Code = Guid.Parse("DF756217-78C0-4877-BB7B-E210A88603C0"), Description = "Conta Corrente", Number = "4956598449", Iban = "PT50.0033.0000.00049565984.49", Currency = Constants.Eur, Amount = 0m, StartDate = DateTime.Today.AddYears(-2), Holder = filipaGuid, Owner = goncaloGuid, Bank = bankBcpGuid, IsArchived = false }; var loanGoncalo = new LoanAccountEntity { Code = Guid.Parse("f03f8057-e33e-4ebd-8b50-7005d8bd2188"), Description = "Conta Casa", Number = "029.21.100472-5", Currency = Constants.Eur, Amount = 47580.38m, StartDate = DateTime.ParseExact("23/07/2008", format, provider), Holder = goncaloGuid, Owner = goncaloGuid, Bank = bankMontepioGuid, InitialAmount = 70000, PremiumPercentage = 0, InterestNetRate = 0.189m, LoanEndDate = DateTime.ParseExact("28/07/2033", format, provider), LoanInterestRate = 5.441m, LoanRelatedAccount = currentGoncaloGuid, IsArchived = false }; var loan2Goncalo = new LoanAccountEntity { Code = Guid.Parse("5e919e86-0d5a-4eca-b805-0a22471443cb"), Description = "Conta Carro", Number = "029.27.100168-6", Currency = Constants.Eur, Amount = 23618.64m, StartDate = DateTime.ParseExact("16/07/2010", format, provider), Holder = goncaloGuid, Owner = goncaloGuid, Bank = bankMontepioGuid, InitialAmount = 38500, PremiumPercentage = 0, InterestNetRate = 3.298m, LoanEndDate = DateTime.ParseExact("16/07/2033", format, provider), LoanInterestRate = 4.328m, LoanRelatedAccount = currentGoncaloGuid, IsArchived = false }; var savingGoncalo = new SavingAccountEntity { Code = Guid.Parse("ec7bdd2c-a3fe-42f0-9e91-b2e4333b9ae9"), Description = "Poupanca Activa", Number = "732.15.420299-6", Currency = Constants.Eur, Amount = 1058.38m, StartDate = DateTime.ParseExact("03/08/2016", format, provider), Holder = goncaloGuid, Owner = goncaloGuid, Bank = bankMontepioGuid, AutomaticRenovation = AutomaticRenovation.No, InterestCapitalization = true, InterestPayment = Cadence.Yearly, SavingEndDate = DateTime.ParseExact("03/08/2017", format, provider), SavingInterestRate = 0.8m, SavingRelatedAccount = currentGoncaloGuid, IsArchived = false }; var savingGui = new SavingAccountEntity { Code = Guid.Parse("AA111116-70F2-47CC-9C21-01A161D10D92"), Description = "Poupanca Bue", Number = "732.15.417187-8", Currency = Constants.Eur, Amount = 400.00m, StartDate = DateTime.ParseExact("08/07/2015", format, provider), Holder = guiGuid, Owner = goncaloGuid, Bank = bankMontepioGuid, AutomaticRenovation = AutomaticRenovation.YesSamePeriod, InterestCapitalization = false, InterestPayment = Cadence.Yearly, SavingEndDate = DateTime.ParseExact("08/07/2016", format, provider), SavingInterestRate = 1.0m, SavingRelatedAccount = currentGuiGuid, IsArchived = false }; var saving2Gui = new SavingAccountEntity { Code = Guid.Parse("7D2E570A-BBC3-41D6-B2E3-B47BB491D60C"), Description = "Poupanca Bue", Number = "732.15.430705-0", Currency = Constants.Eur, Amount = 250.00m, StartDate = DateTime.ParseExact("13/11/2015", format, provider), Holder = guiGuid, Owner = goncaloGuid, Bank = bankMontepioGuid, AutomaticRenovation = AutomaticRenovation.YesSamePeriod, InterestCapitalization = false, InterestPayment = Cadence.Yearly, SavingEndDate = DateTime.ParseExact("13/11/2017", format, provider), SavingInterestRate = 1.0m, SavingRelatedAccount = currentGuiGuid, IsArchived = false }; context.SeedAddOrUpdate( p => p.Code, p => new { p.Description, p.Number, p.Iban, p.Amount, p.ChangeAt, p.IsArchived }, currentGoncalo, currentGuilherme, currentVasco, currentFilipa, currentPlGoncalo, currentPlEuroGoncalo); context.SeedAddOrUpdate( p => p.Code, p => new { p.Description, p.Number, p.Amount, p.ChangeAt, InicialAmount = p.InitialAmount, p.InterestNetRate, p.LoanEndDate, p.LoanInterestRate, p.PremiumPercentage, p.LoanRelatedAccount, p.IsArchived }, loanGoncalo, loan2Goncalo); context.SeedAddOrUpdate( p => p.Code, p => new { p.Description, p.Number, p.Amount, p.ChangeAt, p.InterestCapitalization, p.SavingEndDate, p.SavingInterestRate, p.SavingRelatedAccount, p.IsArchived }, savingGoncalo, savingGui, saving2Gui); var visa = new CreditCardEntity { Code = Guid.Parse("951C4C66-EA1C-4285-B122-308CDF0243D5"), CardNumber = "5731", CardProvider = CardProvider.Visa, Description = "Visa Cinza", PaymentDay = 7, Limit = 1000, UsedLimit = 300, Expire = DateTime.ParseExact("31/01/2020", format, provider), Account = currentGoncaloGuid, Bank = bankMontepioGuid, Currency = Constants.Eur, Holder = goncaloGuid, Owner = goncaloGuid, IsArchived = false }; context.SeedAddOrUpdate( p => p.Code, p => new { p.Description, p.Code, p.CardNumber, p.PaymentDay, p.Limit, p.UsedLimit, p.Expire, p.Account, p.Bank, p.Currency, p.Holder, p.Owner, p.ChangeAt }, visa); var currentMontepio = new DebitCardEntity { Code = Guid.Parse("B22056AC-91FD-4769-9056-E235F2757A43"), CardNumber = "5594", CardProvider = CardProvider.VisaElectron, Description = "Debito Amarelo", Expire = DateTime.ParseExact("30/09/2019", format, provider), Account = currentGoncaloGuid, Bank = bankMontepioGuid, Currency = Constants.Eur, Holder = goncaloGuid, Owner = goncaloGuid, IsArchived = false }; var currentMille = new DebitCardEntity { Code = Guid.Parse("1C3E3692-1AD9-401D-B4AA-C06A31967A95"), CardNumber = "5505", CardProvider = CardProvider.Visa, Description = "Debito Cinza", Expire = DateTime.ParseExact("30/09/2019", format, provider), Account = currentPlGoncaloGuid, Bank = bankMilleniumGuid, Currency = "PLN", Holder = goncaloGuid, Owner = goncaloGuid, IsArchived = false }; context.SeedAddOrUpdate( p => p.Code, p => new { p.Description, p.Code, p.CardNumber, p.Expire, p.Account, p.Bank, p.Currency, p.Holder, p.Owner, p.ChangeAt, p.IsArchived }, currentMontepio, currentMille); var preMille = new PrePaidCardEntity { Code = Guid.Parse("283FBB3A-B988-42A7-95F6-8A377D0C9CC1"), CardNumber = "9102", CardProvider = CardProvider.Maestro, Description = "PrePago Preto", Expire = DateTime.ParseExact("31/05/2019", format, provider), Account = currentPlGoncaloGuid, Bank = bankMilleniumGuid, Currency = "PLN", Holder = goncaloGuid, Owner = goncaloGuid, AvailableAmount = 500, MaximumAmount = 500, IsArchived = false }; var preMontepio = new PrePaidCardEntity { Code = Guid.Parse("905FADBF-F44D-4DFC-850D-0368DA41CF58"), CardNumber = "5555", CardProvider = CardProvider.VisaElectron, Description = "PrePago Mae", Expire = DateTime.ParseExact("31/05/2019", format, provider), Account = currentGoncaloGuid, Bank = bankMilleniumGuid, Currency = Constants.Eur, Holder = isildaGuid, Owner = goncaloGuid, AvailableAmount = 50, MaximumAmount = 1500, IsArchived = false }; context.SeedAddOrUpdate( p => p.Code, p => new { p.Description, p.Code, p.CardNumber, p.AvailableAmount, p.MaximumAmount, p.Expire, p.Account, p.Bank, p.Currency, p.Holder, p.Owner, p.ChangeAt, p.IsArchived }, preMontepio, preMille); context.SaveChanges(); }
public ActionResult EditCard(int creditcardid, EditCard model) { var card = new CreditCardEntity(creditcardid); if (card.IsNew) { throw new HttpException(404, SharedRes.Error.NotFound_CreditCard); } if (!Permissions.UserHasPermission("Edit", card)) { throw new HttpException(401, SharedRes.Error.Unauthorized_CreditCard); } if (ModelState.IsValid) { var transaction = new Transaction(IsolationLevel.ReadCommitted, "add card"); try { CustomerGateway cg; var customer = RoleUtils.IsUserServiceAdmin() ? EnsureProfile(out cg, card.UserCreditCards.First().User) : EnsureProfile(out cg); var profile = customer.PaymentProfiles.First(x => x.ProfileID == card.AuthorizeId); // update the card info if (!string.IsNullOrEmpty(model.CardNumber)) { profile.CardNumber = model.CardNumber; profile.CardCode = model.SecurityCode; profile.CardExpiration = model.CardMonth + "/" + model.CardYear; card.AccountNumber = model.CardNumber.Substring(model.CardNumber.Length - 4, 4); } // update the billing address profile.BillingAddress = new AuthorizeNet.Address { First = model.FirstName, Last = model.LastName, Street = model.AddressLine1 + Environment.NewLine + model.AddressLine2, State = model.State, Country = model.Country, City = model.City, Zip = model.Zip }; card.FirstName = model.FirstName; card.LastName = model.LastName; card.Address = model.AddressLine1; transaction.Add(card); card.Save(); cg.UpdatePaymentProfile(customer.ProfileID, profile); transaction.Commit(); return(new EmptyResult()); } catch (Exception ex) { transaction.Rollback(); ModelState.AddModelError("", Purchase.EditCard_Error); Log.Error(Purchase.EditCard_Error, ex); } finally { transaction.Dispose(); } } Response.StatusCode = 417; Response.TrySkipIisCustomErrors = true; return(PartialView(model)); }
public ActionResult AddCard(AddCard model) { if (ModelState.IsValid) { var transaction = new Transaction(IsolationLevel.ReadCommitted, "add card"); try { CustomerGateway cg; var customer = EnsureProfile(out cg); var addr = new AuthorizeNet.Address { First = model.FirstName, Last = model.LastName, Street = model.AddressLine1 + Environment.NewLine + model.AddressLine2, State = model.State, Country = model.Country, City = model.City, Zip = model.Zip }; // save the customer profile for the currently logged on user var creditCard = new CreditCardEntity() { FirstName = model.FirstName, LastName = model.LastName, AccountNumber = model.CardNumber.Substring(model.CardNumber.Length - 4, 4), Address = model.AddressLine1 }; creditCard.AuthorizeId = cg.AddCreditCard( customer.ProfileID, model.CardNumber, model.CardMonth, model.CardYear, model.SecurityCode, addr); transaction.Add(creditCard); creditCard.Save(); var userCard = new UserCreditCardEntity { UserId = Membership.GetUser().GetUserEntity().UserId, CreditCardId = creditCard.CreditCardId }; transaction.Add(userCard); userCard.Save(); transaction.Commit(); return(new EmptyResult()); } catch (Exception ex) { transaction.Rollback(); // try to get all profiles from authorize.net if (ex.Message.Contains("duplicate")) { ForceResync(); } else { ModelState.AddModelError("", Purchase.AddCard_Error); } Log.Error(Purchase.AddCard_Error, ex); } finally { transaction.Dispose(); } } Response.StatusCode = 417; Response.TrySkipIisCustomErrors = true; return(PartialView(model)); }