public async Task <EnumerableApiResponse <TransactionModel> > GetAccountTransactions(string accountNumber) { try { accountNumber = (accountNumber ?? string.Empty).Replace("-", ""); var baseStorageUrl = appSettings.Get("storage:BaseUrl"); var transactions = repository .Query(t => t.Account.Number == accountNumber) .OfType <Debit>() .Select(txn => new TransactionModel { TransactionId = txn.ID, Date = txn.CreatedDate, Amount = txn.Amount / 100m, Description = txn.Description, CardNumber = txn.PaymentCard.CardNumber, CardExpirationDate = txn.PaymentCard.ExpirationDate, MerchantName = txn.Merchant.Name, MerchantImageUrl = baseStorageUrl + "/images/" + txn.Merchant.ImagePath }) .ToList(); var response = new EnumerableApiResponse <TransactionModel>(transactions); return(response); } catch (Exception e) { return(HandleErrorAndReturnStatus <EnumerableApiResponse <TransactionModel> >(e)); } }
public async Task <EnumerableApiResponse <AccountModel> > GetAccounts(int ownerID) { try { var accounts = accountRepository .Query(acct => acct.Owner.ID == ownerID) .Select(acct => new { Number = acct.Number, AccountType = acct.AccountType, Balance = acct.Balance, OwnerFirstName = acct.Owner.FirstName, OwnerLastName = acct.Owner.LastName, //OwnerAddress = acct.Owner.Address, CreatedDate = acct.CreatedDate }) .AsEnumerable() .Select(acct => new AccountModel { AccountNumber = "XXXX-XXXX-XXXX-" + acct.Number.Remove(0, 12), AccountType = acct.AccountType.ToString(), AvailableBalance = acct.Balance / 100m, OwnerName = $"{acct.OwnerFirstName} {acct.OwnerLastName}", //OwnerAddress = acct.OwnerAddress, CustomerValue = "Gold", //TODO: ?? LastStatementDate = null, //TODO: ?? LastInteractionDate = null, //TODO: ?? CustomerSinceDate = acct.CreatedDate.ToString("MMMM d, yyyy") }); var response = new EnumerableApiResponse <AccountModel>(accounts); return(response); } catch (Exception e) { return(HandleErrorAndReturnStatus <EnumerableApiResponse <AccountModel> >(e)); } }
public async Task <EnumerableApiResponse <CaseModelLite> > GetAccountCases(int ownerID, int accountID, bool includeClosed = false) { try { var baseStorageUrl = appSettings.Get("storage:BaseUrl"); var defaultImagePath = appSettings.Get("storage:DefaultProfileImage"); var cases = caseRepository.Query() .Where(_case => _case.Account.ID == accountID) .Where(_case => includeClosed || _case.Status != CaseStatus.Closed) .Select(_case => new CaseModelLite { Id = _case.ID, AccountOwner = _case.Customer.FirstName + " " + _case.Customer.LastName, AccountOwnerImgUrl = _case.Customer.ImagePath == null ? baseStorageUrl + "/images/" + defaultImagePath : baseStorageUrl + "/images/" + _case.Customer.ImagePath, Summary = _case.Summary, OpenedDate = _case.CreatedDate, ClosedDate = _case.Status == CaseStatus.Closed ? _case.ModifiedDate : (DateTime?)null }) .ToList(); var response = new EnumerableApiResponse <CaseModelLite>(cases); return(response); } catch (Exception e) { return(HandleErrorAndReturnStatus <EnumerableApiResponse <CaseModelLite> >(e)); } }
public async Task <EnumerableApiResponse <TransactionModel> > GetAccountTransactions(string userID, int accountID) { try { var account = accountRepository.Get(accountID); var transactions = account.Transactions .Select(txn => new TransactionModel { Date = txn.EffectiveDate, Description = txn.Description, Amount = txn.Amount / 100m }); var response = new EnumerableApiResponse <TransactionModel>(transactions); return(response); } catch (Exception e) { return(HandleErrorAndReturnStatus <EnumerableApiResponse <TransactionModel> >(e)); } }
public async Task <EnumerableApiResponse <StatementModel> > GetAccountStatements(string userID, int accountID) { try { var account = accountRepository.Get(accountID); var statements = account.Statements .Select(statement => new StatementModel { Date = statement.CreatedDate, Month = statement.StartDate.ToString("MMMM"), StartBalance = statement.StartBalance / 100m, EndBalance = statement.EndBalance / 100m }); var response = new EnumerableApiResponse <StatementModel>(statements); return(response); } catch (Exception e) { return(HandleErrorAndReturnStatus <EnumerableApiResponse <StatementModel> >(e)); } }
public async Task <EnumerableApiResponse <AccountEventModel> > GetAccountEvents(int ownerID, int accountID) { try { var events = accountRepository.Query() .Where(acct => acct.ID == accountID) .SelectMany(acct => acct.Events) .Select(_event => new AccountEventModel { Date = _event.CreatedDate, Summary = _event.Summary }) .ToList(); var response = new EnumerableApiResponse <AccountEventModel>(events); return(response); } catch (Exception e) { return(HandleErrorAndReturnStatus <EnumerableApiResponse <AccountEventModel> >(e)); } }
public async Task <EnumerableApiResponse <MerchantModel> > GetMerchants() { try { var baseStorageUrl = this.appSettings.Get("storage:BaseUrl"); var merchants = this.repository .Query() .Select(merchant => new MerchantModel { Name = merchant.Name, Description = merchant.Description, ImageUrl = baseStorageUrl + "/images/" + merchant.ImagePath }) .ToList(); var response = new EnumerableApiResponse <MerchantModel>(merchants); return(response); } catch (Exception e) { return(HandleErrorAndReturnStatus <EnumerableApiResponse <MerchantModel> >(e)); } }
public async Task <EnumerableApiResponse <CaseMessageModel> > GetCaseMessages(int accountId) { try { var cases = caseRepository .Query() .Where(c => c.Account.ID == accountId) .Select(c => new CaseMessageModel { Id = c.ID, Summary = c.Summary, CaseEvents = c.Events }) .ToList(); foreach (var caseMessageModel in cases) { if (caseMessageModel.CaseEvents.Any()) { var latestCaseEvent = caseMessageModel .CaseEvents .OrderByDescending(e => e.CreatedDate) .FirstOrDefault(); caseMessageModel.LastCorrespondence = latestCaseEvent?.CreatedDate ?? DateTime.Now; } else { caseMessageModel.LastCorrespondence = DateTime.Now; } } var response = new EnumerableApiResponse <CaseMessageModel>(cases); return(response); } catch (Exception e) { return(HandleErrorAndReturnStatus <EnumerableApiResponse <CaseMessageModel> >(e)); } }