public IHttpActionResult ChinhSuaChucVu(ChinhSuaChucVuLopDto chucVuLopDto) { if (!ModelState.IsValid) { return(BadRequest()); } //Lấy chức vụ lớp var lop = _context.Lop.Include(l => l.ChucVuLop).Include(l => l.DanhSachSinhVien) .SingleOrDefault(l => l.Id == chucVuLopDto.LopId); if (lop == null) { return(NotFound()); } //Kiểm tra xem coi có quyền không IHttpActionResult httpActionResult; if (CheckQuyenChinhSuaChucVu(chucVuLopDto, lop, out httpActionResult)) { return(httpActionResult); } //Nếu không phải sinh viên lớp thì không được giữ chức vụ var sinhVien = lop.DanhSachSinhVien.Any(svl => svl.SinhVienId == chucVuLopDto.IdSinhVienGiuChucVuMoi); if (!sinhVien) { return(BadRequest()); } //Xóa chức vụ cũ (nếu có) var chucVuCu = lop.ChucVuLop.SingleOrDefault(cvl => cvl.ChucVuId == chucVuLopDto.ChucVuId && cvl.SinhVienId == chucVuLopDto.IdSinhVienGiuChucVuCu); if (chucVuCu != null) { lop.ChucVuLop.Remove(chucVuCu); } //Đối với chức vụ BCH Chi đoàn, chi hội (id =6,9) chỉ có 3 người được giữ chức vụ, các chức vụ còn lại chỉ 1 người if (chucVuLopDto.ChucVuId == 6 || chucVuLopDto.ChucVuId == 9) { if (lop.ChucVuLop.Count(cvl => cvl.ChucVuId == chucVuLopDto.ChucVuId) >= 3) { return(BadRequest()); } } else { if (lop.ChucVuLop.Count(cvl => cvl.ChucVuId == chucVuLopDto.ChucVuId) != 0) { return(BadRequest()); } } //Thêm chức vụ mới lop.ChucVuLop.Add(new ChucVuLop { ChucVuId = chucVuLopDto.ChucVuId, SinhVienId = chucVuLopDto.IdSinhVienGiuChucVuMoi }); _context.SaveChanges(); return(Ok()); }
public IHttpActionResult XoaChucVu(ChinhSuaChucVuLopDto chucVuLopDto) { if (!ModelState.IsValid) { return(BadRequest()); } //Lấy chức vụ lớp var lop = _context.Lop.Include(l => l.ChucVuLop).SingleOrDefault(l => l.Id == chucVuLopDto.LopId); if (lop == null) { return(NotFound()); } //Kiểm tra xem coi có quyền không IHttpActionResult httpActionResult; if (CheckQuyenChinhSuaChucVu(chucVuLopDto, lop, out httpActionResult)) { return(httpActionResult); } //Lấy chức vụ muốn xóa var chucVu = lop.ChucVuLop.SingleOrDefault(cvl => cvl.ChucVuId == chucVuLopDto.ChucVuId && cvl.SinhVienId == chucVuLopDto.IdSinhVienGiuChucVuCu); if (chucVu == null) { return(NotFound()); } lop.ChucVuLop.Remove(chucVu); _context.SaveChanges(); return(Ok()); }
private bool CheckQuyenChinhSuaChucVu(ChinhSuaChucVuLopDto chucVuLopDto, Lop lop, out IHttpActionResult httpActionResult) { //Kiểm tra xem coi có quyền không (chỉ có lớp trưởng,bí thư, chi hội trưởng và người có role Admin,QuanLyLop) var chucVuBanCanSu = new List <int> { 1, 2, 3 }.AsReadOnly(); var chucVuDoan = new List <int> { 4, 5, 6 }.AsReadOnly(); var chucVuHoi = new List <int> { 7, 8, 9 }.AsReadOnly(); var userSinhVienId = User.Identity.GetSinhVienId(); var roleQuanLyLop = User.IsInRole("Admin") || User.IsInRole("QuanLyLop"); var canEditBanCanSu = roleQuanLyLop || lop.ChucVuLop.Any(cvl => cvl.ChucVuId == 1 && cvl.SinhVienId == userSinhVienId); var canEditDoan = roleQuanLyLop || lop.ChucVuLop.Any(cvl => cvl.ChucVuId == 4 && cvl.SinhVienId == userSinhVienId); var canEditHoi = roleQuanLyLop || lop.ChucVuLop.Any(cvl => cvl.ChucVuId == 7 && cvl.SinhVienId == userSinhVienId); if (!canEditBanCanSu && !canEditDoan && !canEditHoi) { httpActionResult = BadRequest(); return(true); } if (chucVuBanCanSu.Contains(chucVuLopDto.ChucVuId) && !canEditBanCanSu) { httpActionResult = BadRequest(); return(true); } if (chucVuDoan.Contains(chucVuLopDto.ChucVuId) && !canEditDoan) { httpActionResult = BadRequest(); return(true); } if (chucVuHoi.Contains(chucVuLopDto.ChucVuId) && !canEditHoi) { httpActionResult = BadRequest(); return(true); } httpActionResult = Ok(); return(false); }