Пример #1
0
        public async Task <TalkVm> UpdateTalkAsync(TalkVm talk)
        {
            talk.EnsureIsValid();

            var original = await _talkProvider.GetTalkOrDefaultExtendedAsync(talk.Id).ConfigureAwait(false);

            original.ExportId    = talk.Id;
            original.Title       = talk.Title;
            original.Description = talk.Description;
            original.CodeUrl     = talk.CodeUrl;
            original.SlidesUrl   = talk.SlidesUrl;
            original.VideoUrl    = talk.VideoUrl;

            var speakers =
                await _speakerProvider.GetSpeakersByIdsAsync(talk.SpeakerIds.Select(x => x.SpeakerId).ToList());

            foreach (var oldSpeaker in original.Speakers)
            {
                _talkProvider.RemoveSpeaker(original, oldSpeaker.SpeakerId);
            }
            foreach (var speaker in speakers)
            {
                original.Speakers.Add(new SpeakerTalk
                {
                    Speaker = speaker,
                    Talk    = original
                });
            }

            await _unitOfWork.SaveChangesAsync();

            return(original.ToVm());
        }
Пример #2
0
        public async Task <TalkVm> AddTalkAsync(TalkVm talk)
        {
            talk.EnsureIsValid();
            var original = await _talkProvider.GetTalkOrDefaultAsync(talk.Id).ConfigureAwait(false);

            if (original != null)
            {
                throw new FormatException($"Данный {nameof(talk.Id)} \"{talk.Id}\" уже занят");
            }

            var speakers =
                await _speakerProvider.GetSpeakersByIdsAsync(talk.SpeakerIds.Select(x => x.SpeakerId).ToList());

            var entity = new Talk {
                ExportId = talk.Id, Speakers = new List <SpeakerTalk>()
            }.Extend(talk);

            foreach (var speaker in speakers)
            {
                entity.Speakers.Add(new SpeakerTalk
                {
                    Speaker = speaker,
                    Talk    = entity
                });
            }


            var res = await _talkProvider.SaveTalkAsync(entity).ConfigureAwait(false);

            return(res.ToVm());
        }
Пример #3
0
        public async Task <TalkVm> UpdateTalkAsync(TalkVm talk)
        {
            var result = await _talkService.UpdateTalkAsync(talk).ConfigureAwait(false);

            _cache.Remove(nameof(GetAllTalksAsync));

            return(result);
        }
Пример #4
0
        public async Task <TalkVm> UpdateTalkAsync(TalkVm talk)
        {
            talk.EnsureIsValid();
            var original = await _talkProvider.GetTalkOrDefaultAsync(talk.Id).ConfigureAwait(false);

            var res = await _talkProvider.SaveTalkAsync(original.Extend(talk)).ConfigureAwait(false);

            return(res.ToVm());
        }
Пример #5
0
 public static Talk Extend(this Talk original, TalkVm talk)
 => new Talk
 {
     Id          = original.Id,
     SpeakerIds  = talk.SpeakerIds.Select(x => x.SpeakerId).ToList(),
     Title       = talk.Title,
     Description = talk.Description,
     CodeUrl     = talk.CodeUrl,
     SlidesUrl   = talk.SlidesUrl,
     VideoUrl    = talk.VideoUrl
 };
Пример #6
0
 public static Talk Extend(this Talk original, TalkVm talk)
 => new Talk
 {
     Id           = original.Id,
     ExportId     = talk.Id,
     Title        = talk.Title,
     Description  = talk.Description,
     CodeUrl      = talk.CodeUrl,
     SlidesUrl    = talk.SlidesUrl,
     VideoUrl     = talk.VideoUrl,
     Speakers     = original.Speakers,
     SeeAlsoTalks = original.SeeAlsoTalks
 };
Пример #7
0
        public async Task <TalkVm> AddTalkAsync(TalkVm talk)
        {
            talk.EnsureIsValid();
            var original = await _talkProvider.GetTalkOrDefaultAsync(talk.Id).ConfigureAwait(false);

            if (original != null)
            {
                throw new FormatException($"Данный {nameof(talk.Id)} \"{talk.Id}\" уже занят");
            }

            var entity = new Talk {
                Id = talk.Id
            }.Extend(talk);
            var res = await _talkProvider.SaveTalkAsync(entity).ConfigureAwait(false);

            return(res.ToVm());
        }
Пример #8
0
        public static TalkVm EnsureIsValid(this TalkVm talk)
        {
            // todo: implement full validation
            if (string.IsNullOrWhiteSpace(talk.Title))
            {
                throw new FormatException(nameof(talk.Title));
            }

            if (string.IsNullOrWhiteSpace(talk.Description))
            {
                throw new FormatException(nameof(talk.Description));
            }

            if (talk.SpeakerIds == null || talk.SpeakerIds.Count == 0 ||
                talk.SpeakerIds.Any(x => string.IsNullOrWhiteSpace(x.SpeakerId)))
            {
                throw new FormatException(nameof(talk.SpeakerIds));
            }

            return(talk);
        }
Пример #9
0
 public Task <TalkVm> UpdateTalk([FromBody] TalkVm talk)
 => _talkService.UpdateTalkAsync(talk);
Пример #10
0
 public Task <TalkVm> AddTalk([FromBody] TalkVm talk)
 => _talkService.AddTalkAsync(talk);