Exemple #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());
        }
Exemple #2
0
        public async Task <VenueVm> GetVenueAsync(string venueId)
        {
            var venue = await _venueProvider.GetVenueOrDefaultAsync(venueId).ConfigureAwait(false);

            return(venue.ToVm());
        }