예제 #1
0
        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());
        }
예제 #2
0
        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());
        }