/// <summary> /// Creates a new activity for a scenario with a given id with data /// passed in a learning activity binding model /// </summary> /// <param name="scenarioId"></param> /// <param name="model"></param> /// <returns>Id of newly created learning activity</returns> public async Task <int> CreateActivity(int scenarioId, LaBM model) { var ls = await context.Ls.FindAsync(scenarioId); if (ls == null) { throw new NotFoundException("Learning scenario not found."); } if (ls.UserId.ToString() != httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value) { logger.LogError($"Not authorized to view scenario with id { scenarioId }"); throw new NotAuthorizedException($"You are not authorized to view this resource."); } var la = mapper.Map <La>(model); la.Lsid = ls.Idls; la.Lagrade = ls.Lsgrade; la.Laduration = TimeSpan.FromMinutes(model.LadurationMinute); ls.Lsduration += la.Laduration; context.Update(ls); context.Add(la); await context.SaveChangesAsync(); foreach (var strategyMethod in model.StrategyMethods) { var strategyMethodId = await strategyMethodRepository.CreateStrategyMethod(strategyMethod); await laStrategyMethodRepository.CreateLaStrategyMethod(la.Idla, strategyMethodId); } foreach (var teachingAid in model.LaTeachingAidUser) { var taId = await teachingAidRepository.CreateTeachingAid(teachingAid); await laTeachingAidRepository.CreateLaTeachingAid(la.Idla, taId, true); } foreach (var teachingAid in model.LaTeachingAidTeacher) { var taId = await teachingAidRepository.CreateTeachingAid(teachingAid); await laTeachingAidRepository.CreateLaTeachingAid(la.Idla, taId, false); } await lsLaRepository.CreateLsLa(ls.Idls, la.Idla); return(la.Idla); }
public async Task <IActionResult> UpdateActivity([FromRoute] int scenarioId, [FromRoute] int activityId, [FromBody] LaBM model) { var result = await activitiesService.UpdateActivity(scenarioId, activityId, model); return(Ok(new { activityId = result })); }
/// <summary> /// Updates a new activity for a given scenario with provided data in Update activity /// binding model. /// </summary> /// <param name="scenarioId"></param> /// <param name="activityId"></param> /// <param name="model"></param> /// <returns>Id of newly updated activity</returns> public async Task <int> UpdateActivity(int scenarioId, int activityId, LaBM model) { var ls = await context.Ls.FindAsync(scenarioId); if (ls == null) { throw new NotFoundException($"Scenario {scenarioId} does not exist."); } if (ls.UserId.ToString() != httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value) { logger.LogError($"Not authorized to view scenario with id { scenarioId }"); throw new NotAuthorizedException($"You are not authorized to view this resource."); } var la = await context.La.FindAsync(activityId); if (la == null) { throw new NotFoundException($"Scenario {scenarioId} does not exist."); } await laStrategyMethodRepository.RemoveLaStrategyMethods(activityId); foreach (var strategyMethod in model.StrategyMethods) { var strategyMethodId = await strategyMethodRepository.CreateStrategyMethod(strategyMethod); await laStrategyMethodRepository.CreateLaStrategyMethod(la.Idla, strategyMethodId); } await laTeachingAidRepository.RemoveLaTeachingAids(activityId); foreach (var teachingAid in model.LaTeachingAidUser) { var taId = await teachingAidRepository.CreateTeachingAid(teachingAid); await laTeachingAidRepository.CreateLaTeachingAid(la.Idla, taId, true); } foreach (var teachingAid in model.LaTeachingAidTeacher) { var taId = await teachingAidRepository.CreateTeachingAid(teachingAid); await laTeachingAidRepository.CreateLaTeachingAid(la.Idla, taId, false); } if (model.LadurationMinute != 0) { ls.Lsduration -= la.Laduration; ls.Lsduration += TimeSpan.FromMinutes(model.LadurationMinute); } la.Laduration = TimeSpan.FromMinutes(model.LadurationMinute); la.Lagrade = ls.Lsgrade; la.Lsid = ls.Idls; la.CooperationId = model.CooperationId; la.DigitalTechnology = model.DigitalTechnology; la.LatypeId = model.LatypeId; la.Laname = model.Laname; la.OrdinalNumber = model.OrdinalNumber; la.Ladescription = model.Ladescription; la.PerformanceId = model.PerformanceId; logger.LogInformation($"Activity {la.Idla} successfully updated."); context.Update(la); context.Update(ls); await context.SaveChangesAsync(); return(la.Idla); }