public IHttpActionResult XoaSinhVien(ThemXoaSinhVienDto xoaSinhVienDto) { //Check quyền IHttpActionResult status; if (CheckQuyenQuanLySinhVienLop(xoaSinhVienDto, out status)) { return(status); } //Tìm sinh viên var sinhVien = _context.SinhVien.Include(sv => sv.DanhSachLop).Include(sv => sv.ChucVuLop) .SingleOrDefault(sv => sv.Id == xoaSinhVienDto.SinhVienId); if (sinhVien == null) { return(NotFound()); } //Xóa tất cả các chức vụ sinh viên đang giữ tại lớp này var chucVuSinhVienGiu = sinhVien.ChucVuLop.Where(cvl => cvl.LopId == xoaSinhVienDto.LopId); _context.ChucVuLop.RemoveRange(chucVuSinhVienGiu); //Xóa lớp này khỏi danh sách lớp của sinh viên var lop = sinhVien.DanhSachLop.SingleOrDefault(svl => svl.LopId == xoaSinhVienDto.LopId); if (lop == null) { return(NotFound()); } sinhVien.DanhSachLop.Remove(lop); //Reset lại lớp sinh viên đang học sinhVien.ResetLopDangHoc(); _context.SaveChanges(); return(Ok()); }
public IHttpActionResult ThemSinhVien(ThemXoaSinhVienDto themSinhVienDto) { //Check quyền IHttpActionResult status; if (CheckQuyenQuanLySinhVienLop(themSinhVienDto, out status)) { return(status); } //Tìm sinh viên var sinhVien = _context.SinhVien.Include(sv => sv.DanhSachLop) .SingleOrDefault(sv => sv.Id == themSinhVienDto.SinhVienId); if (sinhVien == null) { return(NotFound()); } if (sinhVien.DanhSachLop.Any(svl => svl.LopId == themSinhVienDto.LopId)) { return(BadRequest("Sinh viên này đã có trong danh sách lớp.")); } //Để tính trường hợp chuyển lớp (một sinh viên có thể có nhiều lớp), nên mình đã comment(bỏ) phần dưới //if (sinhVien.DanhSachLop.Any(svl => svl.LopChuyenNganh == themSinhVienDto.LopChuyenNganh)) // return BadRequest("Sinh viên này đang thuộc một lớp khác."); var sinhVienLop = new SinhVienLop { LopChuyenNganh = themSinhVienDto.LopChuyenNganh, LopId = themSinhVienDto.LopId }; sinhVien.DanhSachLop.Add(sinhVienLop); sinhVien.SetLopDangHoc(themSinhVienDto.LopId); _context.SaveChanges(); return(Ok()); }
private bool CheckQuyenQuanLySinhVienLop(ThemXoaSinhVienDto themXoaSinhVienDto, out IHttpActionResult status) { //Kiểm tra xem coi có quyền không (chỉ có lớp trưởng (ChucVuId=1) và người có role Admin,QuanLyLop) var userSinhVienId = User.Identity.GetSinhVienId(); var giuChucLopTruong = _context.ChucVuLop.Any(cvl => cvl.ChucVuId == 1 && cvl.LopId == themXoaSinhVienDto.LopId && cvl.SinhVienId == userSinhVienId); if (!User.IsInRole("Admin") && !User.IsInRole("QuanLyLop") && !giuChucLopTruong) { status = BadRequest(); return(true); } status = Ok(); return(false); }