public AddBillPayResult AddBillPay(AddBillPayRequest model, long memberId) { var payeeId = _dbContext.Payees .Where(p => p.Guid == model.PayeeGuid) .Select(p => p.Id) .SingleOrDefault(); if (payeeId == 0) { return(new AddBillPayResult(AddBillPayResultType.PayeeNotFound, null)); } var billPay = new BillPay { Amount = model.Amount.GetValueOrDefault(), Frequency = model.Frequency, IsRecurring = model.IsRecurring, MemberId = memberId, NextPaymentDate = model.FirstPaymentDate, PayeeId = payeeId, }; _dbContext.Add(billPay); _dbContext.SaveChanges(); return(new AddBillPayResult(AddBillPayResultType.Successful, billPay)); }
private void PostPendingTrades(SansCreditUnionDbContext dbContext) { var pendingTrade = dbContext.BrokerageTrades .Where(t => t.PostedDateTime == null) .Include(t => t.BrokerageAccount) .ToList(); foreach (var trade in pendingTrade) { var account = dbContext.Accounts .Where(e => e.Id == trade.AccountId) .Single(); if (trade.BrokerageTradeType == BrokerageTradeTypes.Buy) { account.Balance -= trade.Price * trade.Quantity; } else // Must be a sell { account.Balance += trade.Price * trade.Quantity; } trade.PostedDateTime = DateTime.UtcNow; dbContext.SaveChanges(); } }
private static void AddRandomStockPriceHistory(SansCreditUnionDbContext context) { List <long> stockIdsInDb = context.BrokerageStocks .Select(a => a.Id) .ToList(); List <BrokerageStock> stocks = BrokerageStocks.All; var random = new Random(); foreach (var stock in stocks) { var within10Percent = Convert.ToInt32(stock.PreviousDayClose * 0.1m); var stockPriceHistory = new BrokerageStockPriceHistory { Price = stock.PreviousDayClose * random.Next(within10Percent * -1, within10Percent), StockId = stock.Id, Timestamp = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, random.Next(8, 17), random.Next(0, 59), random.Next(0, 59)) }; context.BrokerageStockPriceHistory.Add(stockPriceHistory); } context.SaveChanges(); }
public TransferFundsResult TransferFunds(TransferFundsRequest model) { var receivingAccountId = _dbContext.Accounts .Where(a => a.Member.User.Email == model.ReceiverEmail) .Select(a => a.Id) .SingleOrDefault(); if (receivingAccountId == 0) { return(TransferFundsResult.ReceiverEmailNotFound); } var senderAccountId = _dbContext.Accounts .Where(a => a.Member.User.Id == model.SenderUserId) .Select(a => a.Id) .Single(); var transaction = new Transaction { Amount = model.Amount, Description = model.Description, ReceivingAccountId = receivingAccountId, SendingAccountId = senderAccountId, }; _dbContext.Transactions.Add(transaction); _dbContext.SaveChanges(); return(TransferFundsResult.Successful); }
public TradeStockResult TradeStock(TradeStockRequest request, long memberId) { if (request.TradeType != BrokerageTradeTypes.Buy && request.TradeType != BrokerageTradeTypes.Sell) { return(new TradeStockResult(TradeStockType.InvalidTradeType, null)); } long?brokerageAccountId = _dbContext.BrokerageAccounts .Where(a => a.Guid == request.BrokerageAccountGuid && a.MemberId == memberId) .Select(a => a.Id) .SingleOrDefault(); if (brokerageAccountId == null) { return(new TradeStockResult(TradeStockType.BrokerageAccountNotFoundForMember, null)); } // This is the account they're drawing from to Buy a stock or depositing into if they're Selling a stock long?accountId = _dbContext.Accounts .Where(a => a.Guid == request.AccountGuid && a.MemberId == memberId) .Select(a => a.Id) .SingleOrDefault(); if (accountId == null) { return(new TradeStockResult(TradeStockType.AccountNotFoundForMember, null)); } var stock = _dbContext.BrokerageStocks .Where(s => s.Id == request.StockId) .SingleOrDefault(); if (stock == null) { return(new TradeStockResult(TradeStockType.StockNotFound, null)); } var mostRecentPrice = _dbContext.BrokerageStockPriceHistory .Where(b => b.StockId == stock.Id) .OrderByDescending(b => b.Timestamp) .FirstOrDefault(); var trade = new BrokerageTrade { BrokerageAccountId = brokerageAccountId.Value, StockId = stock.Id, Price = mostRecentPrice.Price, Quantity = request.Quantity, BrokerageTradeType = request.TradeType }; _dbContext.BrokerageTrades.Add(trade); _dbContext.SaveChanges(); return(new TradeStockResult(TradeStockType.Successful, trade)); }
private void PostPendingTransactions(SansCreditUnionDbContext dbContext) { var pendingPayments = dbContext.Transactions .Where(t => t.PostedDateTime == null) .Include(t => t.Account) .ToList(); foreach (var payment in pendingPayments) { payment.Account.Balance += payment.Amount; payment.PostedDateTime = DateTime.UtcNow; dbContext.SaveChanges(); } }
public Payee AddPayee(AddPayeeRequest model) { var payee = new Payee { City = model.City, Name = model.Name, State = model.State, Street1 = model.Street1, Street2 = model.Street2, Zip4 = model.Zip4, Zip5 = model.Zip5 }; _dbContext.Payees.Add(payee); _dbContext.SaveChanges(); return(payee); }
public UpdateTravelAbroadResult UpdateTravelAbroad(UpdateTravelAbroadRequest model, long memberId) { var result = new UpdateTravelAbroadResult(); if (model.EndDate.Value < model.StartDate.Value) { result.ValidationErrors.Add(new ValidationError(nameof(model.EndDate), "End Date must be after Start Date.")); return(result); } Member member = GetByMemberId(memberId); member.TravelingAbroadStart = model.StartDate; member.TravelingAbroadEnd = model.EndDate; _dbContext.SaveChanges(); return(result); }
public OrderChecksResult OrderChecks(OrderChecksRequest model) { var accountId = _dbContext.Accounts .Where(a => a.Guid == model.AccountGuid) .Select(a => a.Id) .SingleOrDefault(); if (accountId == 0) { return(new OrderChecksResult(OrderChecksResultType.AccountNotFound, null)); } var checkOrder = new CheckOrder { AccountId = accountId, }; _dbContext.CheckOrders.Add(checkOrder); _dbContext.SaveChanges(); return(new OrderChecksResult(OrderChecksResultType.Successful, checkOrder)); }