Esempio n. 1
0
        public async Task <MeetupVm> AddMeetupAsync(MeetupVm meetup)
        {
            meetup.EnsureIsValid();

            var original = await _meetupProvider.GetMeetupOrDefaultExtendedAsync(meetup.Id).ConfigureAwait(false);

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

            var venue = await _venueProvider.GetVenueOrDefaultAsync(meetup.VenueId);

            var community = await _communityProvider.GetCommunityOrDefaultAsync(meetup.CommunityId);

            var entity = new Meetup
            {
                ExportId  = meetup.Id,
                Venue     = venue,
                Friends   = new List <FriendAtMeetup>(),
                Sessions  = new List <Session>(),
                Community = community,
                Name      = meetup.Name
            };

            foreach (var meetupFriendId in meetup.FriendIds)
            {
                var friend = await _friendProvider.GetFriendOrDefaultAsync(meetupFriendId);

                entity.Friends.Add(new FriendAtMeetup()
                {
                    Friend = friend,
                    Meetup = entity
                });
            }

            foreach (var meetupSession in meetup.Sessions)
            {
                var talk = await _talkProvider.GetTalkOrDefaultAsync(meetupSession.TalkId);

                entity.Sessions.Add(new Session()
                {
                    Talk      = talk,
                    Meetup    = entity,
                    StartTime = DateTime.Parse(
                        meetupSession.StartTime,
                        CultureInfo.InvariantCulture,
                        DateTimeStyles.AdjustToUniversal),
                    EndTime = DateTime.Parse(
                        meetupSession.EndTime,
                        CultureInfo.InvariantCulture,
                        DateTimeStyles.AdjustToUniversal)
                });
            }


            var res = await _meetupProvider.SaveMeetupAsync(entity).ConfigureAwait(false);

            return(res.ToVm());
        }
Esempio n. 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());
        }
Esempio n. 3
0
        public async Task <TalkVm> GetTalkAsync(string talkId)
        {
            var talk = await _talkProvider.GetTalkOrDefaultAsync(talkId).ConfigureAwait(false);

            return(talk.ToVm());
        }