Beispiel #1
0
 public static Meetup Extend(this Meetup original, MeetupVm meetup)
 => new Meetup
 {
     Id          = original.Id,
     Name        = meetup.Name,
     CommunityId = meetup.CommunityId.ToString(),
     FriendIds   = meetup.FriendIds.Select(x => x.FriendId).ToList(),
     VenueId     = meetup.VenueId,
     Sessions    = meetup.Sessions.Select(x => new Session
     {
         TalkId = x.TalkId,
         // todo: extract as helper method
         StartTime = DateTime.ParseExact(
             $"{x.StartTime}Z",
             "yyyy-MM-ddTHH:mm:ssZ",
             CultureInfo.InvariantCulture,
             DateTimeStyles.AdjustToUniversal)
                     .Subtract(meetup.VenueId.GetCity().GetTimeZone()),
         EndTime = DateTime.ParseExact(
             $"{x.EndTime}Z",
             "yyyy-MM-ddTHH:mm:ssZ",
             CultureInfo.InvariantCulture,
             DateTimeStyles.AdjustToUniversal)
                   .Subtract(meetup.VenueId.GetCity().GetTimeZone())
     }).ToList(),
 };
Beispiel #2
0
        public async Task <CompositeModel> SaveMeetup([FromRoute] string meetupId, [FromBody] RandomConcatModel descriptor = null)
        {
            var oldMeetup = await _meetupService.GetMeetupAsync(meetupId).ConfigureAwait(true);

            if (oldMeetup != null)
            {
                Extend(oldMeetup, descriptor);
                var savedMeetup = await _meetupService.UpdateMeetupAsync(oldMeetup).ConfigureAwait(true);

                meetupId = savedMeetup.Id;
            }
            else
            {
                var newMeetup = new MeetupVm {
                    Id = meetupId
                };
                Extend(newMeetup, descriptor);

                var savedMeetup = await _meetupService.AddMeetupAsync(newMeetup).ConfigureAwait(true);

                meetupId = savedMeetup.Id;
            }

            return(await GetMeetup(meetupId).ConfigureAwait(true));
        }
Beispiel #3
0
        public static MeetupVm EnsureIsValid(this MeetupVm meetup)
        {
            // todo: implement full validation
            if (string.IsNullOrWhiteSpace(meetup.Name))
            {
                throw new FormatException(nameof(meetup.Name));
            }

            if (meetup.FriendIds == null || meetup.FriendIds.Count == 0 ||
                meetup.FriendIds.Any(x => string.IsNullOrWhiteSpace(x.FriendId)))
            {
                throw new FormatException(nameof(meetup.FriendIds));
            }

            if (string.IsNullOrWhiteSpace(meetup.VenueId))
            {
                throw new FormatException(nameof(meetup.VenueId));
            }

            if (meetup.Sessions == null || meetup.Sessions.Count == 0 ||
                meetup.Sessions.Any(x => string.IsNullOrWhiteSpace(x.TalkId)))
            {
                throw new FormatException(nameof(meetup.Sessions));
            }

            return(meetup);
        }
Beispiel #4
0
        private static void Extend(MeetupVm meetup, RandomConcatModel descriptor)
        {
            if (descriptor != null)
            {
                if (!string.IsNullOrWhiteSpace(descriptor.Name))
                {
                    meetup.Name = descriptor.Name;
                }

                if (!string.IsNullOrWhiteSpace(descriptor.CommunityId))
                {
                    meetup.CommunityId = descriptor.CommunityId.GetCommunity();
                }

                if (descriptor.FriendIds != null && descriptor.FriendIds.Count != 0)
                {
                    meetup.FriendIds = descriptor.FriendIds.Select(x => new FriendReference {
                        FriendId = x
                    }).ToList();
                }

                if (!string.IsNullOrWhiteSpace(descriptor.VenueId))
                {
                    meetup.VenueId = descriptor.VenueId;
                }

                if (descriptor.Sessions != null && descriptor.Sessions.Count != 0)
                {
                    meetup.Sessions = descriptor.Sessions;
                }
            }
        }
Beispiel #5
0
        private static void Extend(MeetupVm meetup, RandomConcatModel descriptor)
        {
            if (descriptor != null)
            {
                if (!string.IsNullOrWhiteSpace(descriptor.Name))
                {
                    meetup.Name = descriptor.Name;
                }
                if (!string.IsNullOrWhiteSpace(descriptor.CommunityId))
                {
                    meetup.CommunityId = descriptor.CommunityId;
                }


                if (descriptor.FriendIds != null && descriptor.FriendIds.Count != 0)
                {
                    meetup.FriendIds = descriptor.FriendIds;
                }

                if (!string.IsNullOrWhiteSpace(descriptor.VenueId))
                {
                    meetup.VenueId = descriptor.VenueId;
                }

                if (descriptor.Sessions != null && descriptor.Sessions.Count != 0)
                {
                    meetup.Sessions = descriptor.Sessions;
                }
            }
        }
Beispiel #6
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());
        }
        public async Task <MeetupVm> AddMeetupAsync(MeetupVm meetup)
        {
            var result = await _meetupService.AddMeetupAsync(meetup).ConfigureAwait(false);

            _cache.Remove(nameof(GetAllMeetupsAsync));

            return(result);
        }
Beispiel #8
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());
        }
        public async Task <MeetupVm> UpdateMeetupAsync(MeetupVm meetup)
        {
            var result = await _meetupService.UpdateMeetupAsync(meetup).ConfigureAwait(false);

            _cache.Remove(nameof(GetAllMeetupsAsync));
            if (_cache.TryGetValue <List <AutocompleteRow> >(nameof(GetAllMeetupsAsync), out var meetups))
            {
                meetups.ForEach(x => _cache.Remove($"{nameof(GetMeetupAsync)}_{x.Id}"));
            }

            return(result);
        }
Beispiel #10
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());
        }
Beispiel #11
0
 public static Meetup Extend(this Meetup original, MeetupVm meetup)
 => new Meetup
 {
     Id          = original.Id,
     Name        = meetup.Name,
     CommunityId = meetup.CommunityId.ToString(),
     FriendIds   = meetup.FriendIds.Select(x => x.FriendId).ToList(),
     VenueId     = meetup.VenueId,
     Sessions    = meetup.Sessions.Select(x => new Session
     {
         TalkId    = x.TalkId,
         StartTime = x.StartTime,
         EndTime   = x.EndTime
     }).ToList(),
     TalkIds = meetup.Sessions.Select(x => x.TalkId).ToList(),
 };
Beispiel #12
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());
        }
Beispiel #13
0
 public Task <MeetupVm> UpdateMeetup([FromBody] MeetupVm meetup)
 => _meetupService.UpdateMeetupAsync(meetup);
Beispiel #14
0
 public Task <MeetupVm> AddMeetup([FromBody] MeetupVm meetup)
 => _meetupService.AddMeetupAsync(meetup);