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);
        }
예제 #2
0
        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());
        }
예제 #4
0
        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());
            }
        }