public void SaveProject(CourseProjectData projectData)
        {
            if (!projectData.LecturerId.HasValue)
            {
                throw new ApplicationException("LecturerId cant be empty!");
            }

            AuthorizationHelper.ValidateLecturerAccess(Context, projectData.LecturerId.Value);

            CourseProject project;

            if (projectData.Id.HasValue)
            {
                project = Context.CourseProjects
                          .Include(x => x.CourseProjectGroups)
                          .Single(x => x.CourseProjectId == projectData.Id);
                if (Context.CourseProjects.Any(x =>
                                               x.Theme == projectData.Theme && x.SubjectId == projectData.SubjectId &&
                                               x.CourseProjectId != projectData.Id))
                {
                    throw new ApplicationException("Тема с таким названием уже есть!");
                }
            }
            else
            {
                if (Context.CourseProjects.Any(
                        x => x.Theme == projectData.Theme && x.SubjectId == projectData.SubjectId))
                {
                    throw new ApplicationException("Тема с таким названием уже есть!");
                }
                project = new CourseProject();
                Context.CourseProjects.Add(project);
            }

            var currentGroups = project.CourseProjectGroups.ToList();
            var newGroups     = projectData.SelectedGroupsIds.Select(x => new CourseProjectGroup
            {
                GroupId = x, CourseProjectId = project.CourseProjectId
            }).ToList();

            var groupsToAdd    = newGroups.Except(currentGroups, grp => grp.GroupId);
            var groupsToDelete = currentGroups.Except(newGroups, grp => grp.GroupId);

            foreach (var projectGroup in groupsToAdd)
            {
                project.CourseProjectGroups.Add(projectGroup);
            }

            foreach (var projectGroup in groupsToDelete)
            {
                Context.CourseProjectGroups.Remove(projectGroup);
            }

            project.LecturerId = projectData.LecturerId.Value;
            project.Theme      = projectData.Theme;
            project.SubjectId  = projectData.SubjectId.Value;
            Context.SaveChanges();
        }
Пример #2
0
        private IActionResult SaveProject(CourseProjectData project)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            project.LecturerId = /*todo #auth WebSecurity.CurrentUserId*/ 2;

            CpManagementService.SaveProject(project);
            return(Ok());
        }
Пример #3
0
        private HttpResponseMessage SaveProject(CourseProjectData project)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }

            project.LecturerId = WebSecurity.CurrentUserId;

            CpManagementService.SaveProject(project);
            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
Пример #4
0
 public IActionResult Put([FromBody] CourseProjectData project)
 {
     return(SaveProject(project));
 }
Пример #5
0
 public HttpResponseMessage Put([FromBody] CourseProjectData project)
 {
     return(SaveProject(project));
 }