public IHttpActionResult XoaChucVu(ChucVuDonViDto chucVuDonViDto) { //Check quyền var userSinhVienId = User.Identity.GetSinhVienId(); var coQuyenQuanLyChucVu = _context.DanhSachChucVuDonVi.Any(cvdv => cvdv.SinhVienId == userSinhVienId && cvdv.DonViId == chucVuDonViDto.DonViId && (cvdv.QuanLyChucVu || cvdv.ChucVuId == 10)); if (!coQuyenQuanLyChucVu && !User.IsInRole("Admin") && !User.IsInRole("QuanLyDonVi")) { return(BadRequest()); } //Nếu chức vụ là Trưởng ban (Chức vụ Id = 10) thì phải có ít nhất 1 trưởng ban khác trong danh sách chức vụ if (chucVuDonViDto.ChucVuId == 10) { var chucVuTruongBan = _context.DanhSachChucVuDonVi.Where(cv => cv.DonViId == chucVuDonViDto.DonViId && cv.ChucVuId == 10); if (chucVuTruongBan.Count() <= 1) { return(BadRequest("Không thể xóa chức vụ trưởng ban duy nhất.")); } var chucVuDonVi = chucVuTruongBan.SingleOrDefault(cv => cv.SinhVienId == chucVuDonViDto.SinhVienId); if (chucVuDonVi == null) { return(NotFound()); } _context.DanhSachChucVuDonVi.Remove(chucVuDonVi); } //Nếu là chức vụ khác thì cứ xóa else { //Tìm chức vụ var chucVuDonVi = _context.DanhSachChucVuDonVi.SingleOrDefault(cv => cv.DonViId == chucVuDonViDto.DonViId && cv.SinhVienId == chucVuDonViDto.SinhVienId && cv.ChucVuId == chucVuDonViDto.ChucVuId); if (chucVuDonVi == null) { return(NotFound()); } _context.DanhSachChucVuDonVi.Remove(chucVuDonVi); } _context.SaveChanges(); return(Ok()); }
public IHttpActionResult SaveChucVu(ChucVuDonViDto chucVuDonViDto) { //Nếu không phải thành viên chính thức của đơn vị thì không được giữ chức vụ var thanhVien = _context.DanhSachThanhVienDonVi .Include(tv => tv.DanhSachChucVuDonVi) .SingleOrDefault(tv => tv.SinhVienId == chucVuDonViDto.SinhVienId && tv.DonViId == chucVuDonViDto.DonViId && tv.DuocPheDuyet); if (thanhVien == null) { return(BadRequest("Chỉ thành viên chính thức của đơn vị mới được giữ chức vụ.")); } //Check quyền var userSinhVienId = User.Identity.GetSinhVienId(); var coQuyenQuanLyChucVu = _context.DanhSachChucVuDonVi.Any(cvdv => cvdv.SinhVienId == userSinhVienId && cvdv.DonViId == chucVuDonViDto.DonViId && (cvdv.QuanLyChucVu || cvdv.ChucVuId == 10)); if (!coQuyenQuanLyChucVu && !User.IsInRole("Admin") && !User.IsInRole("QuanLyDonVi")) { return(BadRequest()); } //Nếu sinh viên đã giữ chức vụ này (trùng SinhVienId, ChucVuId) nghĩa là muốn sửa thông tin chức vụ var chucVu = thanhVien.DanhSachChucVuDonVi.SingleOrDefault(cvl => cvl.ChucVuId == chucVuDonViDto.ChucVuId); //Tạo chức vụ mới if (chucVu == null) { chucVu = new ChucVuDonVi(); chucVu.TaoMoiChucVu(chucVuDonViDto); thanhVien.DanhSachChucVuDonVi.Add(chucVu); } //Chỉnh sửa thông tin chức vụ else { chucVu.ThayDoiChucVu(chucVuDonViDto); } _context.SaveChanges(); return(Ok()); }