// GET: TrialBalance
        public ActionResult Index()
        {
            var m = _glpostingRepository.GetAll()
                    .GroupBy(i => new { i.GLAccountToDebit, i.GLAccountToCredit, i.PostAmount })
                    .Select(i => new TrialBalance
            {
                Total           = i.Sum(j => j.PostAmount),
                GLAccountDebit  = i.Key.GLAccountToDebit.GLAccountName.ToString(),
                GLAccountCredit = i.Key.GLAccountToCredit.GLAccountName.ToString(),
                CreditPost      = i.Key.PostAmount.ToString()
            }).ToList();

            return(View(m));
        }
        // GET: GLPosting

        public ActionResult Index(string sortOrder, string searchString, string currentFilter, int?page)
        {
            ViewBag.IdSortParm    = string.IsNullOrEmpty(sortOrder) ? "id_desc1" : "";
            ViewBag.NameSortParm  = sortOrder == "Name" ? "name_desc1" : "Name";
            ViewBag.NameSortParm2 = sortOrder == "Name" ? "name_desc2" : "Name";
            ViewBag.IdSortParm2   = sortOrder == "Id" ? "id_desc2" : "Id";
            ViewBag.DateSortParm  = sortOrder == "Date" ? "date_desc" : "Date";

            // ViewBag.IdSortParm = sortOrder == "Id" ? "id_desc" : "Id";

            if (searchString != null)
            {
                page = 1;
            }
            else
            {
                searchString = currentFilter;
            }
            ViewBag.CurrentFilter = searchString;

            var glPostings = _glPostingRepository.GetAll();

            try
            {
                using (ISession session = NHibernateHelper.Session)
                {
                    if (!string.IsNullOrEmpty(searchString))
                    {
                        glPostings = session.Query <GLPosting>().Where(u => u.GLAccountToDebit.GLAccountName.ToUpper().Contains(searchString.ToUpper()) ||
                                                                       u.GLAccountToCredit.GLAccountName.ToUpper().Contains(searchString.ToUpper()) ||
                                                                       u.GLAccountToCredit.GLCode.Contains(searchString.ToUpper())).ToList();
                    }

                    switch (sortOrder)
                    {
                    case "name_desc1":
                        glPostings = glPostings.OrderByDescending(a => a.GLAccountToDebit.GLAccountName).ToList();
                        break;

                    case "id_desc1":
                        glPostings = glPostings.OrderByDescending(a => a.GLAccountToDebit.GLCode).ToList();
                        break;

                    case "name_desc2":
                        glPostings = glPostings.OrderByDescending(a => a.GLAccountToCredit.GLAccountName).ToList();
                        break;

                    case "id_desc2":
                        glPostings = glPostings.OrderByDescending(a => a.GLAccountToCredit.GLCode).ToList();
                        break;

                    case "date_desc":
                        glPostings = glPostings.OrderByDescending(a => a.TransactionDate).ToList();
                        break;

                    default:
                        glPostings = glPostings.OrderByDescending(u => u.Id).ToList();
                        break;
                    }
                    int pageSize   = 3;
                    int pageNumber = (page ?? 1);
                    return(View(glPostings.ToPagedList(pageNumber, pageSize)));
                }

                //return View(customers.ToList());
            }
            catch (Exception exception)
            {
                ViewBag.Exception = exception.Message;
            }

            return(View(new GLPosting()));
        }