public async Task <OneOf <NotFound, AlreadyOnboarded, Success> > Execute(DocumentClient client, Configuration configuration, UpdateProviderOnboarded request) { var documentUri = UriFactory.CreateDocumentUri( configuration.DatabaseId, configuration.ProviderCollectionName, request.ProviderId.ToString()); try { var response = await client.ReadDocumentAsync <Provider>(documentUri); var provider = response.Document; if (provider.Status == ProviderStatus.Onboarded) { return(new AlreadyOnboarded()); } provider.Status = ProviderStatus.Onboarded; provider.DateOnboarded = request.UpdatedDateTime; provider.DateUpdated = request.UpdatedDateTime; provider.UpdatedBy = request.UpdatedBy.UserId; await client.ReplaceDocumentAsync(documentUri, provider); return(new Success()); } catch (DocumentClientException dex) when(dex.StatusCode == HttpStatusCode.NotFound) { return(new NotFound()); } }
public OneOf <NotFound, AlreadyOnboarded, Success> Execute(InMemoryDocumentStore inMemoryDocumentStore, UpdateProviderOnboarded request) { var provider = inMemoryDocumentStore.Providers.All.FirstOrDefault(p => p.Id == request.ProviderId); if (provider == null) { return(new NotFound()); } if (provider.Status == ProviderStatus.Onboarded) { return(new AlreadyOnboarded()); } provider.Status = ProviderStatus.Onboarded; provider.DateOnboarded = request.UpdatedDateTime; provider.DateUpdated = request.UpdatedDateTime; provider.UpdatedBy = request.UpdatedBy.UserId; inMemoryDocumentStore.Providers.Save(provider); return(new Success()); }