public List <TotalFlowModel> GetMonthTotalFlow() { using (_unitOfWork = DIManager.UnitOfWork) { var financeOperationModel = _unitOfWork.PersonalAccountantContext.Set <Operation>().Select(x => new FinanceOperationModel { OperationId = x.Id.ToString(), CurrencyName = x.Currency.Name, SummDecimal = x.OperationTypeId == 1 ? x.Summ : -1 * x.Summ }).ToList(); return(_scriptor.SetOneCurrencyForAllOperations(financeOperationModel, "USD").Select(x => new TotalFlowModel { OpeartionType = x.Summ > 0?"Income":"Outcome", OperationSum = x.Summ > 0? x.SummDecimal: x.SummDecimal * -1 }).GroupBy(x => x.OpeartionType).Select(y => new TotalFlowModel { OpeartionType = y.Key, OperationSum = y.Sum(z => z.OperationSum) }).ToList()); } }
public DebtsTotalsModel GetTotals() { DebtsTotalsModel debtTotalModel = new DebtsTotalsModel(); using (_unitofWork = DIManager.UnitOfWork) { var CreditTotal = _unitofWork.PersonalAccountantContext.Set <debt_DebtOperations>().Where(x => x.DebtTypeId == 2 && x.IsInProgress)?.Select(x => new FinanceOperationModel { CurrencyName = x.Currency.Name, OperationId = x.Id.ToString(), Summ = x.StartSum + x.RewardSum }).ToList(); var DebitTotal = _unitofWork.PersonalAccountantContext.Set <debt_DebtOperations>().Where(x => x.DebtTypeId == 1 && x.IsInProgress)?.Select(x => new FinanceOperationModel { CurrencyName = x.Currency.Name, OperationId = x.Id.ToString(), Summ = x.StartSum + x.RewardSum }).ToList(); debtTotalModel.CreditTotal = _rateScriptor.SetOneCurrencyForAllOperations(CreditTotal, "USD").Sum(x => x.Summ); debtTotalModel.DebitTotal = _rateScriptor.SetOneCurrencyForAllOperations(DebitTotal, "USD").Sum(x => x.Summ); } return(debtTotalModel); }
public List <TotalFlowWithDateModel> GetPeriodFlow(PeriodModel periodParam = null) { using (_unitOfWork = DIManager.UnitOfWork) { bool hasPeriodParam = periodParam != null && periodParam.StartDate != new DateTime(1, 1, 1); DateTime?startPeriod = null; DateTime?endPeriod = null; if (hasPeriodParam) { startPeriod = periodParam.StartDate; endPeriod = periodParam.EndDate; } var financeOperationModel = _unitOfWork.PersonalAccountantContext.Set <Operation>(). Where(x => hasPeriodParam ? x.Date >= startPeriod.Value && x.Date <= endPeriod.Value : true) .Select(x => new FinanceOperationModel { OperationId = x.OperationCategory.Name, CurrencyName = x.Currency.Name, SummDecimal = x.OperationTypeId == 1 ? x.Summ : -1 * x.Summ }).ToList(); var on = _scriptor.SetOneCurrencyForAllOperations(financeOperationModel, "USD").Select(x => new TotalFlowWithDateModel { IdentifyData = x.OperationId, IncomeSum = x.Summ > 0 ? x.SummDecimal : 0, OutcomeSum = x.Summ < 0 ? x.SummDecimal : 0 }).GroupBy(x => x.IdentifyData).Select(y => new TotalFlowWithDateModel { IdentifyData = y.Key, IncomeSum = y.Sum(z => z.IncomeSum), OutcomeSum = y.Sum(z => z.OutcomeSum) * -1 }).Where(x => x.IncomeSum > 0 || x.OutcomeSum > 0).ToList(); return(on); } }