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()); }
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()); }