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));
     }
 }
Exemple #2
0
 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));
     }
 }
Exemple #3
0
        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));
            }
        }
Exemple #4
0
 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));
     }
 }
Exemple #5
0
 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));
     }
 }
Exemple #6
0
 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));
     }
 }
Exemple #7
0
 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));
     }
 }
Exemple #8
0
        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));
            }
        }