public static CouncilTaxDetailsModel MapTransactions( this List <Transaction> transactionResponse, CouncilTaxDetailsModel model) { model.TransactionHistory = transactionResponse .Where(t => t.TranType != "Charge" && t.TranType != "REFUNDS" && t.TranType != "PAYMENTS") .Select(transaction => new TransactionModelExtension { Date = DateTime.Parse(transaction.Date.Text), Amount = Math.Abs(transaction.DAmount), Method = Convert(transaction.SubCode), Type = IsCredit(transaction.DAmount, transaction.TranType) ? ETransactionType.Credit : ETransactionType.Debit, Description = GetDescription(transaction.TranType, Convert(transaction.SubCode), transaction.PlaceDetail?.PostCode) }).Distinct().ToList <TransactionModel>(); model.PreviousPayments = transactionResponse .Where(t => t.TranType == "PAYMENTS" || t.TranType == "REFUNDS") .Select(transaction => new TransactionModelExtension { Date = DateTime.Parse(transaction.Date.Text), Amount = Math.Abs(transaction.DAmount), Method = Convert(transaction.SubCode), Type = IsCredit(transaction.DAmount, transaction.TranType) ? ETransactionType.Credit : ETransactionType.Debit, Description = GetDescription(transaction.TranType, Convert(transaction.SubCode), transaction.PlaceDetail?.PostCode) }).Distinct().ToList <TransactionModel>(); return(model); }
//TODO: LiabilityPeriodStart && LiabilityPeriodEnd never set from civica service -- needs looking into public static CouncilTaxDetailsModel MapCurrentProperty( this Place propertyResponse, CouncilTaxDetailsModel model) { //model.LiabilityPeriodStart = propertyResponse.ChargeDetails?.Dates?.Start; //model.LiabilityPeriodEnd = propertyResponse.ChargeDetails?.Dates?.End; model.TaxBand = propertyResponse.Band.Text; model.Property = $"{propertyResponse.Address1}, {propertyResponse.Address2}"; return(model); }
public void MapTransactions_ShouldReturnTransactionHistory_WithDate() { // Arrange var result = new CouncilTaxDetailsModel(); // Act result = model.MapTransactions(result); // Assert Assert.Equal(DateTime.Parse(model[0].Date.Text), result.TransactionHistory[0].Date); }
public static CouncilTaxDetailsModel MapPayments( this List <Installment> paymentResponse, CouncilTaxDetailsModel model) { model.UpcomingPayments = paymentResponse.Select(_ => new InstallmentModel { Amount = Math.Abs(_.AmountDue), Date = DateTime.Parse(_.DateDue), IsDirectDebit = _.IsDirectDebit.Equals("Y") }).ToList(); return(model); }
public void MapTransactions_ShouldReturnTransactionHistory_WithMethod(string subCode, string expectedResult) { // Arrange var result = new CouncilTaxDetailsModel(); model[0].SubCode = subCode; // Act result = model.MapTransactions(result); // Assert Assert.Equal(expectedResult, result.TransactionHistory[0].Method); }
public void MapTransactions_ShouldReturnTransactionHistory_WithEmptyTransactionList(string type) { // Arrange var result = new CouncilTaxDetailsModel(); model[0].TranType = type; // Act result = model.MapTransactions(result); // Assert Assert.Empty(result.TransactionHistory); }
public void MapTransactions_ShouldReturnTransactionHistory_WithAmount(string amount, string expectedResult) { // Arrange var result = new CouncilTaxDetailsModel(); model[0].Amount = amount; // Act result = model.MapTransactions(result); // Assert Assert.Equal(decimal.Parse(expectedResult), result.TransactionHistory[0].Amount); }
public void MapTransactions_ShouldReturnTransactionHistory_WithDescription(string type, string expectedResult) { // Arrange var result = new CouncilTaxDetailsModel(); model[0].TranType = type; // Act result = model.MapTransactions(result); // Assert Assert.Equal(expectedResult, result.TransactionHistory[0].Description); }
public void MapCurrentProperty_ShouldReturnModel() { // Arrange var result = new CouncilTaxDetailsModel(); // Act result = model.MapCurrentProperty(result); // Assert Assert.Null(result.LiabilityPeriodStart); Assert.Null(result.LiabilityPeriodEnd); Assert.Equal("test", result.TaxBand); Assert.Equal("address1, address2", result.Property); }
public async Task <CouncilTaxDetailsModel> GetCouncilTaxDetails( string personReference, string accountReference, int year) { var key = $"{personReference}-{accountReference}-{year}-{CacheKeys.CouncilTaxDetails}"; var cacheResponse = await _cacheProvider.GetStringAsync(key); if (!string.IsNullOrEmpty(cacheResponse)) { var cachedResponse = JsonConvert.DeserializeObject <CouncilTaxDetailsModel>(cacheResponse); return(cachedResponse); } var model = new CouncilTaxDetailsModel(); var accountResponse = await _gateway.GetAccount(personReference, accountReference); model = accountResponse.Parse <CouncilTaxAccountResponse>().ResponseContent.MapAccount(model, year); var accountsResponse = await _gateway.GetAccounts(personReference); model = accountsResponse.Parse <List <CtaxActDetails> >().ResponseContent.MapAccounts(model); var transactionsResponse = await _gateway.GetAllTransactionsForYear(personReference, accountReference, year); model = transactionsResponse.Parse <List <Transaction> >().ResponseContent.MapTransactions(model); var paymentResponse = await _gateway.GetPaymentSchedule(personReference, year); model = paymentResponse.Parse <List <Installment> >().ResponseContent.MapPayments(model); var currentPropertyResponse = await _gateway.GetCurrentProperty(personReference, accountReference); model = currentPropertyResponse.Parse <Place>().ResponseContent.MapCurrentProperty(model); var documentsResponse = await _gateway.GetDocuments(personReference); model = documentsResponse.Parse <List <CouncilTaxDocumentReference> >().ResponseContent.DocumentsMapper(model, year); var isBenefitsResponse = await _gateway.IsBenefitsClaimant(personReference); model.HasBenefits = isBenefitsResponse.Parse <bool>().ResponseContent; _ = _cacheProvider.SetStringAsync(key, JsonConvert.SerializeObject(model)); return(model); }
public void MapPayments_ShouldReturnModel() { // Arrange var result = new CouncilTaxDetailsModel(); // Act result = _model.InstallmentList.MapPayments(result); // Assert Assert.Equal(DateTime.Parse("12-01-2019"), result.UpcomingPayments[0].Date); Assert.Equal(60.00M, result.UpcomingPayments[0].Amount); Assert.False(result.UpcomingPayments[0].IsDirectDebit); Assert.Equal(DateTime.Parse("12-12-2018"), result.UpcomingPayments[1].Date); Assert.Equal(100.00M, result.UpcomingPayments[1].Amount); Assert.True(result.UpcomingPayments[1].IsDirectDebit); }
public void MapAccount_ShouldReturnMappedAccountFinalNoticeAndClosedWithPaymentSummary() { // Arrange var result = new CouncilTaxDetailsModel(); model.FinancialDetails.YearTotals[0].YearSummaries = new List <YearSummaryResponse> { new YearSummaryResponse { Stage = new StageResponse { StageCode = "test", StageDate = "12-12-2018" }, NextPayment = new PaymentSummaryResponse { NextPaymentDate = "12-12-2018", NextPaymentAmount = 80.00M } } }; model.CtxActClosed = "TRUE"; // Act result = model.MapAccount(result, 2018); var actualYearTotals = result.YearTotals.ToList(); // Assert Assert.Equal("Direct Debit", result.PaymentMethod); Assert.True(result.IsDirectDebitCustomer); Assert.Equal(120M, result.AmountOwing); Assert.Equal(2018, actualYearTotals[0].TaxYear); Assert.Equal("123", result.Reference); Assert.Equal(80.00M, result.PaymentSummary.NextPaymentAmount); Assert.Equal("12-12-2018", result.PaymentSummary.NextPaymentDate); Assert.Equal("5678", result.AccountNumber); Assert.Equal("testName", result.AccountName); Assert.True(result.IsFinalNotice); Assert.True(result.IsClosed); }
public void MapAccount_ShouldReturnMappedAccount() { // Arrange var result = new CouncilTaxDetailsModel(); // Act result = model.MapAccount(result, 2018); var actualYearTotals = result.YearTotals.ToList(); // Assert Assert.Equal("Direct Debit", result.PaymentMethod); Assert.True(result.IsDirectDebitCustomer); Assert.Equal(120M, result.AmountOwing); Assert.Equal(2018, actualYearTotals[0].TaxYear); Assert.Equal("123", result.Reference); Assert.Equal(0.00M, result.PaymentSummary.NextPaymentAmount); Assert.Null(result.PaymentSummary.NextPaymentDate); Assert.Equal("5678", result.AccountNumber); Assert.Equal("testName", result.AccountName); Assert.False(result.IsFinalNotice); Assert.False(result.IsClosed); }
public async Task <CouncilTaxDetailsModel> GetBaseCouncilTaxAccount(string personReference) { var key = $"{personReference}-{DateTime.Now.Year}-{CacheKeys.CouncilTaxDetails}"; var cacheResponse = await _cacheProvider.GetStringAsync(key); if (!string.IsNullOrEmpty(cacheResponse)) { var cachedResponse = JsonConvert.DeserializeObject <CouncilTaxDetailsModel>(cacheResponse); return(cachedResponse); } var accountsResponse = await _gateway.GetAccounts(personReference); var model = new CouncilTaxDetailsModel(); model = accountsResponse.Parse <List <CtaxActDetails> >().ResponseContent.MapAccounts(model); var account = await _gateway.GetAccount(personReference, model.Accounts.FirstOrDefault(_ => _.Status == "CURRENT").Reference); model = account.Parse <CouncilTaxAccountResponse>().ResponseContent.MapAccount(model, DateTime.Now.Year); _ = _cacheProvider.SetStringAsync(key, JsonConvert.SerializeObject(model)); return(model); }