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 }); } }
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); }