public JsonResult GetAllExpenses(int userId, string expenseDate, string expenseMonth, List <int> expenseTypes, int currentPage = 1)
        {
            try
            {
                if (userId == 0)
                {
                    throw new ArgumentException("user id cannot be zero");
                }

                var filters = new ExpenseFilterViewModel()
                {
                    ExpenseDate  = expenseDate,
                    ExpenseTypes = expenseTypes,
                    ExpenseMonth = expenseMonth
                };

                var expenseSummaryViewModel = new ExpenseControllerHelper().MapExpenseDTOListToExpenseSummaryViewModel(
                    _expenseService.GetAll(userId,
                                           new ExpenseControllerHelper().MapExpenseFilterViewModelToExpenseFilter(filters),
                                           currentPage,
                                           false),
                    currentPage);

                return(Json(expenseSummaryViewModel, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                throw;
            }
        }
 public IExpenseFilter MapExpenseFilterViewModelToExpenseFilter(ExpenseFilterViewModel expenseFilterViewModel)
 {
     if (expenseFilterViewModel.ExpenseDate == null && expenseFilterViewModel.ExpenseTypes == null)
     {
         return(new MyDiary.Application.Services.DTO.ExpenseFilter()
         {
             ExpenseTypes = new List <int>()
         });
     }
     else
     {
         return(new MyDiary.Application.Services.DTO.ExpenseFilter()
         {
             // ExpenseTypes = this.MapStringArrayToIntegerList(expenseFilterViewModel.ExpenseTypes),
             ExpenseTypes = expenseFilterViewModel.ExpenseTypes,
             ExpenseDate = this.GetFormattedDate(expenseFilterViewModel.ExpenseDate),
             ExpenseMonth = expenseFilterViewModel.ExpenseMonth
         });
     }
 }
示例#3
0
        public GenericCollectionViewModel <ListExpenseLightViewModel> GetByFilter(ExpenseFilterViewModel model)
        {
            var lang = this._languageService.CurrentLanguage;
            ConditionFilter <Expense, long> condition = new ConditionFilter <Expense, long>()
            {
                Order = Order.Descending
            };

            if (model.Sort?.Count > 0)
            {
                if (model.Sort[0].Dir != "desc")
                {
                    condition.Order = Order.Ascending;
                }
            }

            //if (model.DateFrom.HasValue) model.DateFrom = model.DateFrom.SetTimeToNow();
            if (model.DateTo.HasValue)
            {
                model.DateTo = model.DateTo.SetTimeToMax();
            }

            // The IQueryable data to query.
            IQueryable <Expense> queryableData = this._ExpensesRepository.Get(condition);

            queryableData = queryableData.Where(x => x.Language == lang && x.ParentKeyExpense != null);

            if (model.DateFrom.HasValue)
            {
                queryableData = queryableData.Where(x => x.ParentKeyExpense.Date >= model.DateFrom);
            }

            if (model.DateTo.HasValue)
            {
                queryableData = queryableData.Where(x => x.ParentKeyExpense.Date <= model.DateTo);
            }


            if (model.AmountFrom.HasValue)
            {
                queryableData = queryableData.Where(x => x.ParentKeyExpense.Amount >= model.AmountFrom);
            }

            if (model.AmountTo.HasValue)
            {
                queryableData = queryableData.Where(x => x.ParentKeyExpense.Amount <= model.AmountTo);
            }


            if (model.AccountChartId.HasValue)
            {
                queryableData = queryableData.Where(x => x.ParentKeyExpense.AccountChartId == model.AccountChartId);
            }

            if (model.ExpensesTypeId.HasValue)
            {
                queryableData = queryableData.Where(x => x.ParentKeyExpense.ExpensesTypeId == model.ExpensesTypeId);
            }

            if (string.IsNullOrEmpty(model.Code) == false)
            {
                queryableData = queryableData.Where(x => x.ParentKeyExpense.Code.Contains(model.Code));
            }


            var entityCollection = queryableData.ToList();
            var dtoCollection    = entityCollection.Select(entity => entity.ToListModel()).ToList();

            //foreach (var item in entityCollection)
            //{
            //    var ViewModel = dtoCollection.Find(x => x.Id == item.ParentKeyExpenseId);

            //    //if (item.ParentKeyExpense != null)
            //    //{
            //    //    ViewModel.BankName = item.ParentKeyBank.ChildTranslatedBanks.First(x => x.Language == lang).Name;
            //    //}
            //}
            //if (model.Filters != null)
            //{
            //    foreach (var item in model.Filters)
            //    {
            //        switch (item.Field)
            //        {
            //            case "source":
            //                dtoCollection = dtoCollection.Where(x => x.Source.Contains(item.Value)).ToList();
            //                break;
            //            case "amount":
            //                dtoCollection = dtoCollection.Where(x => x.Amount.Equals(Convert.ToDecimal(item.Value))).ToList();
            //                break;
            //            default:
            //                break;
            //        }
            //    }
            //}
            var total = dtoCollection.Count();

            dtoCollection = dtoCollection.Skip(model.PageIndex * model.PageSize).Take(model.PageSize).ToList();
            var result = new GenericCollectionViewModel <ListExpenseLightViewModel>
            {
                Collection = dtoCollection,
                TotalCount = total,
                PageIndex  = model.PageIndex,
                PageSize   = model.PageSize
            };

            return(result);
        }