public IActionResult MyExam(string id_cuoc_thi, string term, long ngay_thi_tu, long ngay_thi_den, string pass, List <int> thuoc_tinh = null, int page = 1)
        {
            try
            {
                ViewBag.ngay_thi_tu  = ngay_thi_tu;
                ViewBag.ngay_thi_den = ngay_thi_den;
                ViewBag.id_cuoc_thi  = id_cuoc_thi;
                ViewBag.Term         = term;
                ViewBag.PageSize     = page_size;
                ViewBag.Page         = page;
                if (!string.IsNullOrEmpty(pass))
                {
                    switch (pass)
                    {
                    case "wrong":
                        SetAlert("Mật khẩu bạn vừa nhập không chính xác, vui lòng nhập lại!", "error");
                        break;

                    default:
                        SetAlert("Lỗi xảy ra", "error");
                        return(View());
                    }
                }
                ViewBag.ten = user();
                List <CuocThi> lst_cuoc_thi    = new List <CuocThi>();
                var            ds_thi_cuoc_thi =
                    DanhSachThiRepository.Instance.GetAll(new List <string>(), new string[] { "id_cuoc_thi", "id_tai_khoan" }, user(), is_admin);
                foreach (var item in ds_thi_cuoc_thi)
                {
                    lst_cuoc_thi.Add(CuocThiRepository.Instance.GetById(item.id_cuoc_thi));
                }

                lst_cuoc_thi = lst_cuoc_thi.Where(xx => xx != null).ToList();

                ViewBag.cuoc_thi =
                    lst_cuoc_thi.Where(x => !string.IsNullOrEmpty(x.id)).Select(o => new SelectListItem {
                    Value = o.id, Text = o.ten
                }).ToList();

                List <DanhSachThiMap> lst_map = new List <DanhSachThiMap>();
                var list = DanhSachThiRepository.Instance.Search(term, id_cuoc_thi, ngay_thi_tu, ngay_thi_den, user(), thuoc_tinh, page, out var total_recs, out string msg, page_size, is_admin);
                var lst_thuoc_tinh_cuoc_thi = list.Where(x => x.thuoc_tinh != null).SelectMany(x => x.thuoc_tinh).ToList();
                var lst_tt_by_gia_tri       = ThuocTinhRepository.Instance.GetManyByGiaTri(lst_thuoc_tinh_cuoc_thi.Distinct(), LoaiThuocTinh.DANH_SACH_THI);

                var  current  = DateTime.Now.Date;
                long _current = XMedia.XUtil.TimeInEpoch(current);
                if (list.Count > 0)
                {
                    bool is_expired, exam, start;
                    var  hour          = (24 - DateTime.Now.Hour) - 2;
                    var  add_h         = DateTime.Now.AddHours(hour).AddMinutes(59).AddSeconds(59);
                    long ngay_hien_tai = XMedia.XUtil.TimeInEpoch(add_h);
                    var  day_now       = add_h.Day;

                    foreach (var item in list)
                    {
                        var cuoc_thi = CuocThiRepository.Instance.GetById(item.id_cuoc_thi);
                        start = _current < cuoc_thi.ngay_bat_dau;
                        var day_kt = XMedia.XUtil.EpochToTime(cuoc_thi.ngay_ket_thuc).Day;
                        is_expired = ngay_hien_tai > cuoc_thi.ngay_ket_thuc && day_now != day_kt;
                        var tai_khoan = TaiKhoanRepository.Instance.GetTaiKhoanByUsername(item.id_tai_khoan);
                        exam = KetQuaThiRepository.Instance.TimKetQuaThi(item.id_cuoc_thi, item.id_tai_khoan);
                        bool           het_luot_thi = KetQuaThiRepository.Instance.DemKetQuaThi(item.id_cuoc_thi, item.id_tai_khoan) >= cuoc_thi.so_lan_thi_lai;
                        DanhSachThiMap map          = new DanhSachThiMap(cuoc_thi, tai_khoan, item, lst_tt_by_gia_tri, exam, is_expired, start, het_luot_thi);
                        lst_map.Add(map);
                    }
                }
                ViewBag.Total = total_recs;
                return(View(lst_map.OrderByDescending(x => x.ngay_bat_dau)));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return(View());
        }
        public IActionResult Index(string id_cuoc_thi, long ngay_thi_tu, long ngay_thi_den, string term, int page = 1, List <int> thuoc_tinh = null)
        {
            if (is_admin || allow_create)
            {
                try
                {
                    //DanhSachThiRepository.Instance.dele();
                    long total_recs = 0;
                    ViewBag.ngay_thi_tu  = ngay_thi_tu;
                    ViewBag.ngay_thi_den = ngay_thi_den;
                    ViewBag.id_cuoc_thi  = id_cuoc_thi;
                    List <CuocThi> all_cuoc_thi = new List <CuocThi>();
                    if (is_admin)
                    {
                        all_cuoc_thi = CuocThiRepository.Instance.GetAll(new List <string>(), new string[] { "id", "ten" }, is_admin);
                    }
                    else
                    {
                        all_cuoc_thi = CuocThiRepository.Instance.GetAll(new List <string>(), new string[] { "id", "ten" }, user(), false);
                    }
                    ViewBag.cuoc_thi = all_cuoc_thi.Select(o => new SelectListItem {
                        Value = o.id, Text = o.ten
                    }).ToList();
                    var lst_thuoc_tinh = ThuocTinhRepository.Instance.GetThuocTinhByLoai(LoaiThuocTinh.DANH_SACH_THI, user(), is_admin);
                    ViewBag.thuoc_tinh        = BuildThuocTinh(lst_thuoc_tinh);
                    ViewBag.thuoc_tinh_search = BuildThuocTinhForSearch(lst_thuoc_tinh);
                    ViewBag.Term     = term;
                    ViewBag.PageSize = page_size;
                    ViewBag.Page     = page;
                    ViewBag.tt       = thuoc_tinh;
                    ViewBag.user     = user();
                    bool exam = false, is_expired;
                    List <DanhSachThi> lst_danh_sach_thi = new List <DanhSachThi>();
                    if (is_admin)
                    {
                        lst_danh_sach_thi = DanhSachThiRepository.Instance.Search(term, id_cuoc_thi, ngay_thi_tu, ngay_thi_den, user(), thuoc_tinh, page, out total_recs, out string msg, page_size, is_admin);
                    }
                    else
                    {
                        lst_danh_sach_thi = DanhSachThiRepository.Instance.Search(term, id_cuoc_thi, ngay_thi_tu, ngay_thi_den, "", thuoc_tinh, page, out total_recs, out string msg, page_size, false);
                    }

                    var lst_thuoc_tinh_cuoc_thi          = lst_danh_sach_thi.Where(x => x.thuoc_tinh != null).SelectMany(x => x.thuoc_tinh).ToList();
                    var lst_tt_by_gia_tri                = ThuocTinhRepository.Instance.GetManyByGiaTri(lst_thuoc_tinh_cuoc_thi.Distinct(), LoaiThuocTinh.DANH_SACH_THI);
                    List <DanhSachThiMap> lst_map        = new List <DanhSachThiMap>();
                    bool start                           = false;
                    if (lst_danh_sach_thi.Count > 0)
                    {
                        var  hour          = (24 - DateTime.Now.Hour) - 2;
                        var  add_h         = DateTime.Now.AddHours(hour).AddMinutes(59).AddSeconds(59);
                        long ngay_hien_tai = XMedia.XUtil.TimeInEpoch(add_h);
                        var  day_now       = add_h.Day;
                        foreach (var item in lst_danh_sach_thi)
                        {
                            var cuoc_thi = CuocThiRepository.Instance.GetById(item?.id_cuoc_thi);
                            var day_kt   = XMedia.XUtil.EpochToTime(cuoc_thi.ngay_ket_thuc).Day;
                            is_expired = ngay_hien_tai > cuoc_thi.ngay_ket_thuc && day_now != day_kt;
                            var tai_khoan = TaiKhoanRepository.Instance.GetTaiKhoanByUsername(item?.id_tai_khoan);
                            if (cuoc_thi != null && tai_khoan != null)
                            {
                                exam = KetQuaThiRepository.Instance.TimKetQuaThi(cuoc_thi.id, tai_khoan.username);
                            }
                            DanhSachThiMap map = new DanhSachThiMap(cuoc_thi, tai_khoan, item, lst_tt_by_gia_tri, exam, is_expired, start, false);
                            lst_map.Add(map);
                        }
                    }

                    ViewBag.Total = total_recs;
                    return(View(lst_map.OrderByDescending(x => x.ngay_bat_dau)));
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                return(View());
            }

            return(RedirectToAction("MyExam"));
        }