public async Task <IActionResult> PutCourseSpecialization(int id, CourseSpecialization courseSpecialization) { if (id != courseSpecialization.CourseSpecializationId) { return(BadRequest()); } _context.Entry(courseSpecialization).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CourseSpecializationExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public override async Task ReassignCourseSpecializationsAsync(UpdateDbContext context, bool useArchiveData = false) { if (!IsInitialized) { throw new InvalidOperationException(Resources.InvalidOperation_PluralsightCatalog_InitializeMethodInvokeRequired); } if (context == null) { throw new ArgumentNullException("context"); } var allCourses = await context.Courses .Where(x => x.TrainingProviderId == TrainingProviderId && !x.IsDeleted) .Select(x => new { x.Id, x.UrlName, CourseSpecializations = x.CourseSpecializations.ToList() }) .AsNoTracking() .ToListAsync(); var courseSpecializationsContainer = await GetCourseSpecializationsContainerAsync(useArchiveData); try { context.Configuration.AutoDetectChangesEnabled = false; foreach (var dbCourse in allCourses) { Specializations specializationsForCourse; if (courseSpecializationsContainer.TryGetValue(dbCourse.UrlName, out specializationsForCourse)) { var currentSpecializations = specializationsForCourse.GetFlags <Specializations>().ToList(); foreach (var dbCourseSpecialization in dbCourse.CourseSpecializations) { if (currentSpecializations.Contains(dbCourseSpecialization.Specialization)) { currentSpecializations.Remove(dbCourseSpecialization.Specialization); } else { context.SetStateToDeleted(dbCourseSpecialization); } } foreach (var specialization in currentSpecializations) { var courseSpecialization = new CourseSpecialization { CourseId = dbCourse.Id, Specialization = specialization }; context.SetStateToAdded(courseSpecialization); } } } } finally { context.Configuration.AutoDetectChangesEnabled = true; } await context.SaveChangesAsync(); }
public async Task <ActionResult <CourseSpecialization> > PostCourseSpecialization(CourseSpecialization courseSpecialization) { _context.Specializations.Add(courseSpecialization); await _context.SaveChangesAsync(); return(CreatedAtAction("GetCourseSpecialization", new { id = courseSpecialization.CourseSpecializationId }, courseSpecialization)); }