Example #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());
        }
Example #2
0
        public async Task <MeetupVm> UpdateMeetupAsync(MeetupVm meetup)
        {
            meetup.EnsureIsValid();
            var original = await _meetupProvider.GetMeetupOrDefaultAsync(meetup.Id).ConfigureAwait(false);

            var res = await _meetupProvider.SaveMeetupAsync(original.Extend(meetup)).ConfigureAwait(false);

            return(res.ToVm());
        }
Example #3
0
        public async Task <MeetupVm> UpdateMeetupAsync(MeetupVm meetup)
        {
            meetup.EnsureIsValid();
            var original = await _meetupProvider.GetMeetupOrDefaultExtendedAsync(meetup.Id).ConfigureAwait(false);

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

            var community = await _communityProvider.GetCommunityOrDefaultAsync(
                Enum.GetName(typeof(Communities), meetup.CommunityId)
                );

            original.Venue     = venue;
            original.Community = community;
            original.Name      = meetup.Name;
            original.Friends   = new List <FriendAtMeetup>();
            original.Sessions  = new List <Session>();
            foreach (var meetupFriendId in meetup.FriendIds)
            {
                var friend = await _friendProvider.GetFriendOrDefaultAsync(meetupFriendId.FriendId);

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

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

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


            return(original.ToVm());
        }
Example #4
0
        public async Task <MeetupVm> AddMeetupAsync(MeetupVm meetup)
        {
            meetup.EnsureIsValid();

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

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

            var entity = new Meetup {
                Id = meetup.Id
            }.Extend(meetup);
            var res = await _meetupProvider.SaveMeetupAsync(entity).ConfigureAwait(false);

            return(res.ToVm());
        }