public IActionResult Index(string id, string id_cuoc_thi, string term, long ngay_thi_tu, long ngay_thi_den, int page = 1, List <int> thuoc_tinh = null)
 {
     try
     {
         ViewBag.ngay_thi_tu  = ngay_thi_tu;
         ViewBag.ngay_thi_den = ngay_thi_den;
         var lst_thuoc_tinh = ThuocTinhRepository.Instance.GetThuocTinhByLoai(LoaiThuocTinh.KET_QUA_THI, user(), is_admin);
         ViewBag.thuoc_tinh        = BuildThuocTinh(lst_thuoc_tinh);
         ViewBag.thuoc_tinh_search = BuildThuocTinhForSearch(lst_thuoc_tinh);
         ViewBag.Term        = term;
         ViewBag.id_cuoc_thi = id_cuoc_thi;
         var all_cuoc_thi = CuocThiRepository.Instance.GetAll(new List <string>(), new string[] { "id", "ten" }, is_admin);
         ViewBag.cuoc_thi = all_cuoc_thi.Select(o => new SelectListItem {
             Value = o.id, Text = o.ten
         }).ToList();
         ViewBag.PageSize = page_size;
         ViewBag.Page     = page;
         ViewBag.tt       = thuoc_tinh;
         var lst_ket_qua_thi = KetQuaThiRepository.Instance.Search(term, id_cuoc_thi, user(), ngay_thi_tu, ngay_thi_den, thuoc_tinh, page, out var total_recs,
                                                                   out string msg, page_size, is_admin);
         var lst_thuoc_tinh_kq_thi   = lst_ket_qua_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_kq_thi.Distinct(), LoaiThuocTinh.KET_QUA_THI);
         List <KetQuaThiMap> lst_map = new List <KetQuaThiMap>();
         if (!string.IsNullOrEmpty(id))
         {
             var ket_qua_thi_da_thi = KetQuaThiRepository.Instance.LayDanhSachKetQuaThi(id, user());
             foreach (var item in ket_qua_thi_da_thi)
             {
                 var          tai_khoan = TaiKhoanRepository.Instance.GetTaiKhoanByUsername(item?.id_tai_khoan);
                 var          cuoc_thi  = CuocThiRepository.Instance.GetById(item?.id_cuoc_thi);
                 KetQuaThiMap map       = new KetQuaThiMap(item, tai_khoan, cuoc_thi, lst_tt_by_gia_tri);
                 lst_map.Add(map);
             }
             ViewBag.Total = lst_map.Count;
             return(View(lst_map));
         }
         else
         {
             foreach (var item in lst_ket_qua_thi)
             {
                 var          tai_khoan = TaiKhoanRepository.Instance.GetTaiKhoanByUsername(item?.id_tai_khoan);
                 var          cuoc_thi  = CuocThiRepository.Instance.GetById(item?.id_cuoc_thi);
                 KetQuaThiMap map       = new KetQuaThiMap(item, tai_khoan, cuoc_thi, lst_tt_by_gia_tri);
                 lst_map.Add(map);
             }
             ViewBag.Total = total_recs;
             return(View(lst_map));
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
     return(View());
 }
 public IActionResult KetQuaCuocThi(string id, int page = 1)
 {
     try
     {
         long total_recs = 0;
         if (is_admin || allow_create)
         {
             ViewBag.id_cuoc_thi  = id;
             page_size            = 50;
             ViewBag.PageSize     = page_size;
             ViewBag.Page         = page;
             ViewBag.ten_cuoc_thi = CuocThiRepository.Instance.GetById(id)?.ten;
             List <KetQuaThi> lst_ket_qua_thi = new List <KetQuaThi>();
             if (is_admin)
             {
                 lst_ket_qua_thi = KetQuaThiRepository.Instance.Search("", id, user(), 0, 0, new List <int>(), page, out total_recs,
                                                                       out string msg, page_size, is_admin);
             }
             if (allow_create)
             {
                 lst_ket_qua_thi = KetQuaThiRepository.Instance.Search("", id, "", 0, 0, new List <int>(), page, out total_recs,
                                                                       out string msg, page_size, false);
             }
             var lst_thuoc_tinh_kq_thi   = lst_ket_qua_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_kq_thi.Distinct(), LoaiThuocTinh.KET_QUA_THI);
             List <KetQuaThiMap> lst_map = new List <KetQuaThiMap>();
             ViewBag.dem_thi_sinh = lst_ket_qua_thi.Select(x => x.id_tai_khoan).Distinct().ToList().Count;
             foreach (var item in lst_ket_qua_thi)
             {
                 var          tai_khoan = TaiKhoanRepository.Instance.GetTaiKhoanByUsername(item?.id_tai_khoan);
                 var          cuoc_thi  = CuocThiRepository.Instance.GetById(item?.id_cuoc_thi);
                 KetQuaThiMap map       = new KetQuaThiMap(item, tai_khoan, cuoc_thi, lst_tt_by_gia_tri);
                 lst_map.Add(map);
             }
             ViewBag.Total = total_recs;
             return(View(lst_map.OrderByDescending(x => x.diem_thi)));
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
     return(View());
 }