Пример #1
0
        /// <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 }));
        }
Пример #3
0
        /// <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);
        }