public async Task <IActionResult> CalculateExpensesByAdmin(string StartDate, string EndDate)
        {
            try
            {
                if (String.IsNullOrEmpty(StartDate) && String.IsNullOrEmpty(EndDate))
                {
                    var model = new CalculateExpensesVM()
                    {
                        _Expenses = null,
                        StartDate = null,
                        EndDate   = null
                    };
                    return(View("CalculateExpensesByAdmin", model));
                }

                else
                {
                    var result = new SearchExpenses()
                    {
                        StartDate = StartDate,
                        EndDate   = EndDate
                    };
                    var SearchExpenses = await Task.Run(() => _ExpensesServ.SearchExpenses(result));

                    var list = new List <CalculateExpensesVM_Expenses>();
                    foreach (var item in SearchExpenses._Expenses.ToList())
                    {
                        var temp = new CalculateExpensesVM_Expenses()
                        {
                            Id = item.Id,

                            Name            = item.Name,
                            Amount          = item.Amount,
                            Date            = item.Date,
                            ExpenseTypeId   = item.ExpenseTypeId,
                            ExpenseTypeName = item.ExpenseTypeName
                        };
                        list.Add(temp);
                    }
                    ;

                    var model = new CalculateExpensesVM()
                    {
                        _Expenses = list,
                        ammount   = SearchExpenses.DateRangeAmount,
                        StartDate = StartDate,
                        EndDate   = EndDate
                    };

                    return(View("CalculateExpensesByAdmin", model));
                }
            }
            catch
            {
                return(BadRequest());
            }
        }
        public SearchExpenses SearchExpenses(SearchExpenses obj)
        {
            var model = (dynamic)null;

            try
            {
                DateTime StartDate       = Convert.ToDateTime(obj.StartDate);
                DateTime EndDate         = Convert.ToDateTime(obj.EndDate);
                var      ExpensesList    = _ExpensesRepo.GetAll().ToList();
                var      ExpenseTypeList = _ExpenseTypesRepo.GetAll().ToList();

                var query = (from _Expenses in ExpensesList
                             join _ExpenseType in ExpenseTypeList on _Expenses?.ExpenseTypeId equals _ExpenseType?.Id
                             orderby _ExpenseType.Name ascending
                             where _Expenses.Date >= StartDate && _Expenses.Date <= EndDate
                             select new { _Expenses, _ExpenseType });
                var getAmount = (from p in ExpensesList
                                 where p.Date >= StartDate && p.Date <= EndDate
                                 select p.Amount);
                var allGetAmount = getAmount.Sum();
                var list         = new List <SearchExpenses_Expenses>();
                foreach (var item in query)
                {
                    var temp = new SearchExpenses_Expenses()
                    {
                        Id              = item._Expenses.Id,
                        Name            = item._Expenses.Name,
                        Amount          = item._Expenses.Amount,
                        Date            = item._Expenses.Date,
                        ExpenseTypeId   = item._Expenses.ExpenseTypeId,
                        ExpenseTypeName = item._ExpenseType.Name
                    };
                    list.Add(temp);
                }
                ;
                model = new SearchExpenses()
                {
                    _Expenses       = list,
                    DateRangeAmount = allGetAmount
                };
            }
            catch (Exception)
            {
            }
            return(model);
        }
        public async Task <IActionResult> CalculateExpenses(string StartDate, string EndDate, int pg = 1)
        {
            try
            {
                if (String.IsNullOrEmpty(StartDate) && String.IsNullOrEmpty(EndDate))
                {
                    var model = new CalculateExpensesVM()
                    {
                        _Expenses = null,
                        StartDate = null,
                        EndDate   = null
                    };
                    return(View("CalculateExpenses", model));
                }

                else
                {
                    var result = new SearchExpenses()
                    {
                        StartDate = StartDate,
                        EndDate   = EndDate
                    };
                    var SearchExpenses = await Task.Run(() => _ExpensesServ.SearchExpenses(result));

                    var list = new List <CalculateExpensesVM_Expenses>();
                    foreach (var item in SearchExpenses._Expenses.ToList())
                    {
                        var temp = new CalculateExpensesVM_Expenses()
                        {
                            Id = item.Id,

                            Name            = item.Name,
                            Amount          = item.Amount,
                            Date            = item.Date,
                            ExpenseTypeId   = item.ExpenseTypeId,
                            ExpenseTypeName = item.ExpenseTypeName
                        };
                        list.Add(temp);
                    }
                    ;

                    #region "Paging"
                    const int pageSize = 5;
                    if (pg < 1)
                    {
                        pg = 1;
                    }
                    int recsCount = list.Count();
                    var pager     = new Pager(recsCount, pg, pageSize);
                    int recSkip   = (pg - 1) * pageSize;
                    var data      = list.Skip(recSkip).Take(pager.PageSize).ToList();
                    this.ViewBag.Pager = pager;
                    var model = new CalculateExpensesVM()
                    {
                        _Expenses = data,
                        ammount   = SearchExpenses.DateRangeAmount,
                        StartDate = StartDate,
                        EndDate   = EndDate
                    };
                    #endregion "Paging"

                    return(View("CalculateExpenses", model));
                }
            }
            catch
            {
                return(BadRequest());
            }
        }