Пример #1
0
        public async Task <EntityDto <Guid> > CreateActivityFromActivityTemplate(CreateActivityFromActivityTemplateInput input)
        {
            var currentUser = await GetCurrentUserAsync();

            var activityTemplate = await _activityTemplateManager.GetAsync(input.ActivityTemplateId);

            var activity = await _activityManager.CreateAsync(Activity.Create(
                                                                  input.StartTime,
                                                                  input.EndTime,
                                                                  activityTemplate,
                                                                  currentUser
                                                                  ));

            foreach (var activityTemplateDescription in activityTemplate.Descriptions)
            {
                switch (activityTemplateDescription.Type)
                {
                case DescriptionType.Text:
                    await _descriptionManager.CreateAsync(TextDescription.Create(((TextDescription)activityTemplateDescription).Text, activity, currentUser.Id));

                    break;

                case DescriptionType.ExternalImage:
                    await _descriptionManager.CreateAsync(ExternalImageDescription.Create(((ExternalImageDescription)activityTemplateDescription).Path, activity, currentUser.Id));

                    break;

                case DescriptionType.InternalImage:
                    await _descriptionManager.CreateAsync(InternalImageDescription.Create(((InternalImageDescription)activityTemplateDescription).Image, activity, currentUser.Id));

                    break;

                case DescriptionType.Youtube:
                    await _descriptionManager.CreateAsync(YoutubeDescription.Create(((YoutubeDescription)activityTemplateDescription).YoutubeId, activity, currentUser.Id));

                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(new EntityDto <Guid>(activity.Id));
        }