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(), };
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)); }
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); }
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; } } }
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; } } }
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); }
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); }
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()); }
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(), };
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()); }
public Task <MeetupVm> UpdateMeetup([FromBody] MeetupVm meetup) => _meetupService.UpdateMeetupAsync(meetup);
public Task <MeetupVm> AddMeetup([FromBody] MeetupVm meetup) => _meetupService.AddMeetupAsync(meetup);