public async Task <OneOf <NotFound, Venue> > Execute( DocumentClient client, Configuration configuration, UpdateVenue request) { var documentUri = UriFactory.CreateDocumentUri( configuration.DatabaseId, configuration.VenuesCollectionName, request.VenueId.ToString()); Venue venue; try { var query = await client.ReadDocumentAsync <Venue>(documentUri); venue = query.Document; } catch (DocumentClientException dex) when(dex.StatusCode == HttpStatusCode.NotFound) { return(new NotFound()); } venue.VenueName = request.Name; venue.Email = request.Email; venue.PHONE = request.PhoneNumber; venue.Website = request.Website; venue.AddressLine1 = request.AddressLine1; venue.AddressLine2 = request.AddressLine2; venue.Town = request.Town; venue.County = request.County; venue.Postcode = request.Postcode; venue.Latitude = request.Latitude; venue.Longitude = request.Longitude; venue.UpdatedBy = request.UpdatedBy.UserId; venue.DateUpdated = request.UpdatedDate; await client.ReplaceDocumentAsync(documentUri, venue); await _sqlDataSync.SyncVenue(venue); return(venue); }
public Task <Venue> UpdateVenue( Guid venueId, UserInfo updatedBy, Action <Venue, UpdateVenue> updateCommand = null) => WithSqlQueryDispatcher(async dispatcher => { var venue = await dispatcher.ExecuteQuery(new GetVenue() { VenueId = venueId }); Assert.NotNull(venue); var command = new UpdateVenue() { AddressLine1 = venue.AddressLine1, AddressLine2 = venue.AddressLine2, County = venue.County, Email = venue.Email, Latitude = venue.Latitude, Longitude = venue.Longitude, Name = venue.VenueName, Postcode = venue.Postcode, Telephone = venue.Telephone, Town = venue.Town, UpdatedBy = updatedBy, UpdatedOn = _clock.UtcNow, VenueId = venueId, Website = venue.Website }; updateCommand?.Invoke(venue, command); await dispatcher.ExecuteQuery(command); venue = await dispatcher.ExecuteQuery(new GetVenue() { VenueId = venueId }); return(venue); });
public OneOf <NotFound, Success> Execute(InMemoryDocumentStore inMemoryDocumentStore, UpdateVenue request) { var venue = inMemoryDocumentStore.Venues.All.SingleOrDefault(venue => venue.Id == request.VenueId); if (venue == null) { return(new NotFound()); } venue.VenueName = request.Name; venue.Email = request.Email; venue.PHONE = request.PhoneNumber; venue.Website = request.Website; venue.AddressLine1 = request.AddressLine1; venue.AddressLine2 = request.AddressLine2; venue.Town = request.Town; venue.County = request.County; venue.Postcode = request.Postcode; venue.Latitude = request.Latitude; venue.Longitude = request.Longitude; venue.UpdatedBy = request.UpdatedBy.Email; venue.DateUpdated = request.UpdatedDate; inMemoryDocumentStore.Venues.Save(venue); return(new Success()); }
public async Task <OneOf <NotFound, Success> > Execute(SqlTransaction transaction, UpdateVenue query) { var sql = $@" UPDATE Pttcd.Venues SET ProviderVenueRef = @ProviderVenueRef, VenueName = @Name, Email = @Email, Telephone = @Telephone, Website = @Website, AddressLine1 = @AddressLine1, AddressLine2 = @AddressLine2, Town = @Town, County = @County, Postcode = @Postcode, Position = geography::Point(@Latitude, @Longitude, 4326), UpdatedOn = @UpdatedOn, UpdatedBy = @UpdatedByUserId WHERE VenueId = @VenueId AND VenueStatus = {(int)VenueStatus.Live}"; var paramz = new { query.VenueId, query.ProviderVenueRef, query.Name, query.Email, query.Telephone, query.Website, query.AddressLine1, query.AddressLine2, query.Town, query.County, query.Postcode, query.Latitude, query.Longitude, query.UpdatedOn, UpdatedByUserId = query.UpdatedBy.UserId }; var updated = (await transaction.Connection.ExecuteAsync(sql, paramz, transaction)) == 1; if (updated) { await _updateFindACourseIndexHandler.Execute( transaction, new UpdateFindACourseIndexForVenues() { VenueIds = new[] { query.VenueId }, Now = query.UpdatedOn }); return(new Success()); } else { return(new NotFound()); } }