Ejemplo n.º 1
0
 public OperationStatus InsertAccount(BrokerageAccount acct)
 {
     //simulate insert operation success
     return(new OperationStatus {
         Status = true
     });
 }
Ejemplo n.º 2
0
        private static void AddBrokerageAccounts(List <Security> securities, Customer cust)
        {
            string[] accountTitles = { "IRA", "Joint Brokerage", "Brokerage Account" };
            for (int i = 0; i < accountTitles.Length; i++)
            {
                var acct = new BrokerageAccount
                {
                    AccountNumber = "Z48573988" + i.ToString(),
                    AccountTitle  = accountTitles[i],
                    IsRetirement  = (i == 0) ? true : false,
                    CashTotal     = (i + 1) * 5000,
                    WatchList     = new WatchList {
                        Title = "My Watch Securities"
                    }
                };

                FillAccountSecurities(securities, acct, i);

                acct.PositionsTotal = acct.Positions.Sum(p => p.Total);
                acct.Total          = acct.PositionsTotal + acct.CashTotal;
                acct.MarginBalance  = (acct.IsRetirement) ? 0.00M : Math.Round(acct.Total / 3, 2);

                cust.BrokerageAccounts.Add(acct);
            }
        }
Ejemplo n.º 3
0
        private static void FillAccountSecurities(List <Security> securities, BrokerageAccount acct, int seed)
        {
            var rdm = new Random((int)DateTime.Now.Ticks + seed);

            for (int index = 0; index < 10; index++)
            {
                int pos = rdm.Next(securities.Count - 1);
                var sec = securities[pos];
                if (!acct.Positions.Any(p => p.Security.Symbol == sec.Symbol))
                {
                    var multiplier = (pos == 0) ? 1 : pos;
                    var shares     = multiplier * 100;
                    var total      = shares * sec.Last;
                    acct.Positions.Add(new Position {
                        Security = sec, Shares = shares, Total = total
                    });
                }
            }

            var watchListSecs = securities.Where(s => !acct.Positions.Any(p => p.SecurityId == s.Id));

            if (watchListSecs.Count() > 10)
            {
                watchListSecs = watchListSecs.Take(8);
            }

            foreach (var watchSec in watchListSecs)
            {
                acct.WatchList.Securities.Add(watchSec);
            }
        }
Ejemplo n.º 4
0
        public void PostAccount_ReturnsCreatedStatusCode()
        {
            // Arrange
            var bAcct = new BrokerageAccount {
                AccountNumber = "1234"
            };
            var acctStub = new StubIAccountRepository
            {
                InsertAccountBrokerageAccount = (ba) =>
                {
                    return(new OperationStatus {
                        Status = true
                    });
                }
            };
            var controller = GetDataServiceController(acct: acctStub);

            SetupController(controller);

            // Act
            var result = controller.PostAccount(bAcct) as CreatedAtRouteNegotiatedContentResult <BrokerageAccount>;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(bAcct.AccountNumber, result.Content.AccountNumber);
        }
Ejemplo n.º 5
0
        private List <BrokerageAccount> CreateBrokerageAccounts(Customer cust)
        {
            List <BrokerageAccount> accts = new List <BrokerageAccount>();

            string[] accountTitles = { "IRA", "Joint Brokerage", "Brokerage Account" };
            for (int i = 0; i < accountTitles.Length; i++)
            {
                var acct = new BrokerageAccount
                {
                    AccountNumber = "Z48573988" + i.ToString(),
                    AccountTitle  = accountTitles[i],
                    IsRetirement  = (i == 0) ? true : false,
                    CashTotal     = (i + 1) * 5000,
                    CustomerId    = cust.Id,
                    Customer      = cust
                };

                //FillAccountSecurities(securities, acct, i);

                acct.PositionsTotal = acct.Positions.Sum(p => p.Total);
                acct.Total          = acct.PositionsTotal + acct.CashTotal;
                acct.MarginBalance  = (acct.IsRetirement) ? 0.00M : Math.Round(acct.Total / 3, 2);
                accts.Add(acct);
            }

            return(accts);
        }
Ejemplo n.º 6
0
        public void DataServiceController_AccountReturnedWithoutModification()
        {
            //Ensure that Web API method doesn't modify the brokerage account object
            //Arrange
            var acctNumber       = "1234";
            var brokerageAccount = new BrokerageAccount {
                AccountNumber = "1234"
            };
            var acctRepo = new StubIAccountRepository
            {
                GetAccountString = (an) =>
                {
                    brokerageAccount.AccountNumber = an;
                    return(brokerageAccount);
                }
            };

            var controller = GetDataServiceController(acct: acctRepo);

            //Act
            var result = controller.Account(acctNumber);

            //Assert
            Assert.AreSame(brokerageAccount, result);
            Assert.AreSame(acctNumber, result.AccountNumber);
        }
Ejemplo n.º 7
0
        public void InValidAccountNumber_ReturnsModelStateError()
        {
            string accountNum = "12345";
            var    account    = new BrokerageAccount {
                AccountNumber = accountNum
            };
            var errors = GetModelValidationErrors(account);

            Assert.AreEqual(1, errors.Count);
        }
Ejemplo n.º 8
0
        public IHttpActionResult PostAccount(BrokerageAccount acct)
        {
            var opStatus = _AccountRepository.InsertAccount(acct);

            if (!opStatus.Status)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
            }

            //Generate success response
            return(CreatedAtRoute("DefaultApi", new { id = acct.AccountNumber }, acct));
        }
Ejemplo n.º 9
0
        private BrokerageAccount UpdateAccount(string acctNumber)
        {
            //Force update of security values
            ISecurityRepository securityRepo = new SecurityRepository();

            securityRepo.UpdateSecurities();

            BrokerageAccount acct = null;

            acct = DataContext.BrokerageAccounts
                   .Include("Orders")
                   .Include("WatchList")
                   .Include("WatchList.Securities")
                   .Include("Positions")
                   .Include("Positions.Security")
                   .Where(ba => ba.AccountNumber == acctNumber).SingleOrDefault();

            if (acct != null && acct.Positions != null && !_LocalDataOnly)
            {
                acct.Positions = acct.Positions.OrderBy(p => p.Total).ToList();

                //Get account position securities
                var securities = acct.Positions.Select(p => p.Security).Distinct().ToList();

                var positions = acct.Positions;
                foreach (var pos in positions)
                {
                    pos.Total = pos.Shares * pos.Security.Last;
                    DataContext.Entry(pos).State = System.Data.EntityState.Modified;
                }
                acct.PositionsTotal = acct.Positions.Sum(p => p.Total);
                acct.Total          = acct.PositionsTotal + acct.CashTotal;

                DataContext.Entry(acct).State = System.Data.EntityState.Modified;

                try
                {
                    DataContext.SaveChanges();
                }
                catch
                {
                    //If we fail simply continue for sample app
                }
            }

            return(acct);
        }
Ejemplo n.º 10
0
        public int CreateBrokerageAccount(AddBrokerageAccountVm addBrokerageAccountVm)
        {
            var brokerageAccount = new BrokerageAccount
            {
                Title         = addBrokerageAccountVm.Title,
                IsRetirement  = addBrokerageAccountVm.IsRetirement,
                AccountNumber = addBrokerageAccountVm.AccountNumber,
                UserId        = ActiveUserService.GetUserId(),
                BrokerageId   = addBrokerageAccountVm.BrokerageId
            };

            DbOperationStatus opStatus = BrokerageAccountRepository.InsertBrokerageAccount(brokerageAccount);

            if (opStatus.OperationSuccessStatus)
            {
                return(opStatus.AffectedIndices.First());
            }
            return(-1);
        }
        public DbOperationStatus InsertBrokerageAccount(BrokerageAccount brokerageAccount)
        {
            var opStatus = new DbOperationStatus
            {
                OperationSuccessStatus = false,
                AffectedIndices        = new List <int>()
            };

            try
            {
                DataContext.Set <BrokerageAccount>().Add(brokerageAccount);
                opStatus.OperationSuccessStatus = DataContext.SaveChanges() > 0;
                if (opStatus.OperationSuccessStatus)
                {
                    opStatus.AffectedIndices.Add(brokerageAccount.Id);
                }
            }
            catch (Exception ex)
            {
                opStatus = DbOperationStatus.CreateFromException("Error inserting " + brokerageAccount.GetType(), ex);
            }
            return(opStatus);
        }
Ejemplo n.º 12
0
        public bool UpdateBrokerageAccount(EditBrokerageAccountVm editBrokerageAccountVm, BrokerageAccount brokerageAccount)
        {
            if (editBrokerageAccountVm.UserId == brokerageAccount.UserId && editBrokerageAccountVm.Id == brokerageAccount.Id)
            {
                brokerageAccount.AccountNumber = editBrokerageAccountVm.AccountNumber;
                brokerageAccount.BrokerageId   = editBrokerageAccountVm.BrokerageId;
                brokerageAccount.IsRetirement  = editBrokerageAccountVm.IsRetirement;

                return(BrokerageAccountRepository.UpdateBrokerageAccount(brokerageAccount).OperationSuccessStatus);
            }

            return(false);
        }
Ejemplo n.º 13
0
 public async Task <OperationStatus> InsertAccountAsync(BrokerageAccount acct)
 {
     //simulate insert operation success
     return(await Task.Run(() => new OperationStatus { Status = true }));
 }
 public DbOperationStatus DeleteBrokerageAccount(BrokerageAccount brokerageAccount)
 {
     return(Delete(brokerageAccount));
 }
 public DbOperationStatus UpdateBrokerageAccount(BrokerageAccount brokerageAccount)
 {
     return(Update(brokerageAccount));
 }