Пример #1
0
        public async Task <Training> SaveAsync(Training training, CancellationToken cancellationToken = default(CancellationToken))
        {
            training.Description  = StringHelpers.SanitizeHtmlInString(training.Description);
            training.TrainingText = StringHelpers.SanitizeHtmlInString(training.TrainingText);

            var saved = await _trainingRepository.SaveOrUpdateAsync(training, cancellationToken, true);

            if (saved.Questions != null && saved.Questions.Any())
            {
                var questions = saved.Questions.ToList();
                for (int i = 0; i < questions.Count; i++)
                {
                    questions[i].TrainingId = saved.TrainingId;
                    questions[i]            = await _trainingQuestionRepository.SaveOrUpdateAsync(questions[i], cancellationToken);
                }

                saved.Questions = questions;
            }

            if (saved.Attachments != null && saved.Attachments.Any())
            {
                var attachments = saved.Attachments.ToList();
                for (int i = 0; i < attachments.Count; i++)
                {
                    attachments[i].TrainingId = saved.TrainingId;
                    attachments[i]            = await _trainingAttachmentRepository.SaveOrUpdateAsync(attachments[i], cancellationToken);
                }

                saved.Attachments = attachments;
            }

            if (saved.Users != null && saved.Users.Any())
            {
                var users = saved.Users.ToList();
                for (int i = 0; i < users.Count; i++)
                {
                    users[i].TrainingId = saved.TrainingId;
                    users[i]            = await _trainingUserRepository.SaveOrUpdateAsync(users[i], cancellationToken);
                }

                saved.Users = users;
            }

            return(saved);
        }
Пример #2
0
        public async Task <TrainingUser> SetTrainingAsViewedAsync(int trainingId, string userId, CancellationToken cancellationToken = default(CancellationToken))
        {
            var trainingUser = await _trainingUserRepository.GetTrainingUserByTrainingIdAndUserIdAsync(trainingId, userId);

            if (trainingUser != null)
            {
                trainingUser.Training = await GetTrainingByIdAsync(trainingId);

                trainingUser.Viewed   = true;
                trainingUser.ViewedOn = DateTime.UtcNow;

                if (trainingUser.Training.Questions == null || trainingUser.Training.Questions.Count <= 0)
                {
                    trainingUser.Complete    = true;
                    trainingUser.CompletedOn = DateTime.UtcNow;
                }

                return(await _trainingUserRepository.SaveOrUpdateAsync(trainingUser, cancellationToken, true));
            }

            return(null);
        }