public static BusinessSummaryListViewModel GetBusinessSummaryByUser(string username) { Entities entities = new Entities(); BusinessSummaryListViewModel result = new BusinessSummaryListViewModel(); DateTime current = DateTime.Now; var businesss = entities.Assets.Include("Incomes").Include("Liabilities").Where(x => x.Username.Equals(username) && x.AssetType == (int)Constants.Constants.ASSET_TYPE.BUSINESS && !x.DisabledDate.HasValue); foreach (var business in businesss) { BusinessSummaryViewModel businessViewModel = new BusinessSummaryViewModel(); businessViewModel.Name = business.AssetName; businessViewModel.Value = business.Value; if (business.Incomes1.Where(x => !x.DisabledDate.HasValue).Any()) { businessViewModel.Income = business.Incomes1.FirstOrDefault().Value; } else { businessViewModel.Income = 0; } businessViewModel.AnnualIncome = businessViewModel.Income * 12; businessViewModel.RentYield = businessViewModel.Value > 0 ? businessViewModel.AnnualIncome / businessViewModel.Value : 0; foreach (var liability in business.Liabilities.Where(x => !x.DisabledDate.HasValue)) { BusinessLiabilityViewModel liabilityViewModel = BusinessLiabilityQueries.CreateViewModel(liability); if (liabilityViewModel.StartDate <= current && liabilityViewModel.EndDate >= current) { businessViewModel.LiabilityValue += liabilityViewModel.Value.Value; businessViewModel.InterestRate += liabilityViewModel.InterestRate.Value; businessViewModel.OriginalInterestPayment += liabilityViewModel.OriginalInterestPayment; businessViewModel.MonthlyInterestPayment += liabilityViewModel.MonthlyInterestPayment; businessViewModel.MonthlyPayment += liabilityViewModel.TotalMonthlyPayment; businessViewModel.AnnualPayment += liabilityViewModel.TotalPayment; businessViewModel.RemainedValue += liabilityViewModel.RemainedValue; } } result.BusinessSummaries.Add(businessViewModel); } result.TotalIncome = result.BusinessSummaries.Sum(x => x.Income); result.TotalAnnualIncome = result.BusinessSummaries.Sum(x => x.AnnualIncome); result.TotalValue = result.BusinessSummaries.Sum(x => x.Value); result.TotalRentYield = result.TotalValue > 0 ? result.BusinessSummaries.Sum(x => x.AnnualIncome) / result.TotalValue : 0; result.TotalLiabilityValue = result.BusinessSummaries.Sum(x => x.LiabilityValue); result.TotalInterestRate = result.TotalLiabilityValue > 0 ? result.BusinessSummaries.Sum(x => x.OriginalInterestPayment) / result.TotalLiabilityValue * 12 : 0; result.TotalMonthlyPayment = result.BusinessSummaries.Sum(x => x.MonthlyPayment); result.TotalAnnualPayment = result.BusinessSummaries.Sum(x => x.AnnualPayment); result.TotalRemainedValue = result.BusinessSummaries.Sum(x => x.RemainedValue); return(result); }
public JsonNetResult GetOrderTotals() { var model = new BusinessSummaryViewModel(); // Get the data dynamic ordertotals; using (var context = Exigo.Sql()) { var query = context.QueryMultiple(@" -- Orders Summary SELECT o.OrderStatusID, OrderCount = count(*), OrderTotal = COALESCE(sum(o.SubTotal), 0) FROM Orders o WHERE o.OrderDate >= @startdate AND o.OrderDate < @enddate GROUP BY o.OrderStatusID -- Pending Autoship Totals SELECT OrderTotal = COALESCE(sum(o.SubTotal), 0) FROM Orders o WHERE o.AutoOrderID IS NOT NULL AND o.OrderStatusID IN (1, 5, 6) AND o.OrderDate >= @startdate AND o.OrderDate < @enddate OPTION(MAXDOP 8) ", new { startdate = DateTime.Now.BeginningOfMonth(), enddate = DateTime.Now.AddMonths(1).BeginningOfMonth() }); ordertotals = query.Read().ToList(); model.PendingAutoshipsTotal = query.Read <decimal>().FirstOrDefault(); } // Process the data foreach (var row in ordertotals) { switch ((int)row.OrderStatusID) { case OrderStatuses.Accepted: model.AcceptedOrdersTotal += row.OrderTotal; model.AcceptedOrdersCount = row.OrderCount; break; case OrderStatuses.ACHDeclined: model.DeclinedOrdersTotal += row.OrderTotal; model.ACHDeclinedOrdersCount = row.OrderCount; break; case OrderStatuses.ACHPending: model.ACHPendingOrdersTotal += row.OrderTotal; model.ACHPendingOrdersCount = row.OrderCount; break; case OrderStatuses.Cancelled: model.CancelledOrdersTotal += row.OrderTotal; model.CancelledOrdersCount = row.OrderCount; break; case OrderStatuses.CCDeclined: model.DeclinedOrdersTotal += row.OrderTotal; model.CCDeclinedOrdersCount = row.OrderCount; break; case OrderStatuses.CCPending: model.CCPendingOrdersTotal += row.OrderTotal; model.CCPendingOrdersCount = row.OrderCount; break; case OrderStatuses.Incomplete: model.DeclinedOrdersTotal += row.OrderTotal; model.IncompleteOrdersCount = row.OrderCount; break; case OrderStatuses.Pending: model.CCPendingOrdersTotal += row.OrderTotal; model.PendingOrdersCount = row.OrderCount; break; case OrderStatuses.Printed: model.AcceptedOrdersTotal += row.OrderTotal; model.PrintedOrdersCount = row.OrderCount; break; case OrderStatuses.Shipped: model.AcceptedOrdersTotal += row.OrderTotal; model.ShippedOrdersCount = row.OrderCount; break; case OrderStatuses.PendingInventory: default: break; } } // Return the data return(new JsonNetResult(new { data = model })); }