public IHttpActionResult ResetDiem(DiemDto diemDto)
        {
            var diemSinhVien = _context.Diem.Include(diem => diem.DanhSachDiemBoSung).SingleOrDefault(d =>
                                                                                                      d.SinhVienId == diemDto.SinhVienId && d.MonHocId == diemDto.MonHocId);

            if (diemSinhVien == null)
            {
                return(NotFound());
            }
            diemSinhVien.HocLai();
            return(Ok());
        }
        public IHttpActionResult SetDiemThiLai(DiemDto diemDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            //phải Include MonHoc vì tí nữa func .TinhDiemTb(); sẽ sử dụng nó
            var diemSinhVien = _context.Diem.Include(diem => diem.DanhSachDiemBoSung).Include(diem => diem.MonHoc)
                               .SingleOrDefault(d => d.SinhVienId == diemDto.SinhVienId && d.MonHocId == diemDto.MonHocId);

            if (diemSinhVien == null)
            {
                return(NotFound());
            }
            if (diemDto.DiemThi != null)
            {
                diemSinhVien.SetDiemThi(diemDto.DiemThi);
            }
            if (diemDto.DanhSachDiemBoSung != null && diemDto.DanhSachDiemBoSung.Count != 0)
            {
                foreach (var diemBoSungDto in diemDto.DanhSachDiemBoSung)
                {
                    var diemBoSung = diemSinhVien.DanhSachDiemBoSung.SingleOrDefault(dbs => dbs.Id == diemBoSungDto.Id);
                    if (diemBoSung == null)
                    {
                        continue;
                    }
                    if (diemBoSungDto.Diem != null)
                    {
                        diemBoSung.SetDiem(diemBoSungDto.Diem);
                    }
                }
            }
            diemSinhVien.TinhDiemTb();
            _context.SaveChanges();
            return(Ok(new
            {
                diemSinhVien.DiemThi,
                DanhSachDiemBoSung = diemSinhVien.DanhSachDiemBoSung.OrderBy(dbs => dbs.LoaiDiem).ToList()
            }));
        }
        public IHttpActionResult ChinhSuaDiem(DiemDto diemDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            //phải Include MonHoc vì tí nữa func .TinhDiemTb(); sẽ sử dụng nó
            var diemSinhVien = _context.Diem.Include(diem => diem.MonHoc).Include(diem => diem.DanhSachDiemBoSung)
                               .SingleOrDefault(d => d.SinhVienId == diemDto.SinhVienId && d.MonHocId == diemDto.MonHocId);

            if (diemSinhVien == null)
            {
                return(NotFound());
            }
            if (diemDto.DiemChuyenCan != null)
            {
                diemSinhVien.SetDiemChuyenCan(diemDto.DiemChuyenCan);
            }
            if (diemDto.DiemDieuKien1 != null)
            {
                diemSinhVien.SetDiemDieuKien1(diemDto.DiemDieuKien1);
            }
            if (diemDto.DiemDieuKien2 != null)
            {
                diemSinhVien.SetDiemDieuKien2(diemDto.DiemDieuKien2);
            }
            if (diemDto.DiemThi != null)
            {
                diemSinhVien.SetDiemThi(diemDto.DiemThi);
            }
            if (diemDto.DanhSachDiemBoSung != null && diemDto.DanhSachDiemBoSung.Count != 0)
            {
                foreach (var diemBoSungDto in diemDto.DanhSachDiemBoSung)
                {
                    var diemBoSung = diemSinhVien.DanhSachDiemBoSung.SingleOrDefault(dbs => dbs.Id == diemBoSungDto.Id);
                    if (diemBoSung == null)
                    {
                        continue;
                    }
                    if (diemBoSungDto.Diem != null)
                    {
                        diemBoSung.SetDiem(diemBoSungDto.Diem);
                    }
                }
            }

            var diemTbMonHocCu = diemSinhVien.DiemTb.GetValueOrDefault();

            diemSinhVien.TinhDiemTb();
            if (diemSinhVien.DiemTb != null)
            {
                TinhDiemTrungBinhTheoMon(diemSinhVien.SinhVienId, diemSinhVien.HocKi, diemTbMonHocCu, (byte)diemSinhVien.DiemTb, diemSinhVien.MonHoc.SoHocPhan);
            }
            _context.SaveChanges();
            return(Ok(new
            {
                diemSinhVien.DiemChuyenCan,
                diemSinhVien.DiemDieuKien1,
                diemSinhVien.DiemDieuKien2,
                diemSinhVien.DiemThi,
                diemSinhVien.DiemTb,
                DanhSachDiemBoSung = diemSinhVien.DanhSachDiemBoSung.OrderBy(dbs => dbs.LoaiDiem).ToList()
            }));
        }