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