public virtual async Task CreateWithSpecifiedIdAsync(string id, Invoice item, CancellationToken token = default(CancellationToken))
 {
     ServiceContract.RequireNotNullOrWhiteSpace(id, nameof(id));
     ServiceContract.RequireNotNull(item, nameof(item));
     ServiceContract.RequireValidated(item, nameof(item));
     await CrudController.CreateWithSpecifiedIdAsync(id, item, token);
 }
        public async Task PublishAsync(Guid id, JObject content)
        {
            ServiceContract.RequireNotNull(id, nameof(id));
            ServiceContract.RequireNotDefaultValue(id, nameof(id));

            await new BusinessEvents(BusinessEventsBaseUrl, _tenant, _tokenRefresher.GetServiceClient()).PublishAsync(id, content);
        }
示例#3
0
        public async Task <string> Create([FromBody] User user)
        {
            ServiceContract.RequireNotNull(user, nameof(user));
            ServiceContract.RequireValidated(user, nameof(user));

            return(await _persistance.CreateAsync(user));
        }
 public async Task <string> CreateAsync(Applicant item, CancellationToken token = new CancellationToken())
 {
     ServiceContract.RequireNotNull(item, nameof(item));
     ServiceContract.RequireValidated(item, nameof(item));
     ServiceContract.Require(item.Id == null, $"The {nameof(item.Id)} field must be null.");
     return(await Capability.ApplicantService.CreateAsync(item, token));
 }
        public async Task <AccessToken> Token(AuthenticationCredentials credentials)
        {
            ServiceContract.RequireNotNull(credentials, nameof(credentials));
            ServiceContract.RequireNotNullOrWhitespace(credentials.ClientId, nameof(credentials.ClientId));
            ServiceContract.RequireNotNullOrWhitespace(credentials.ClientSecret, nameof(credentials.ClientSecret));

            return(await _authenticationService.GetTokenForTenant(credentials));
        }
示例#6
0
        public async Task UserCreatedAsync(UserCreatedEvent eventBody)
        {
            ServiceContract.RequireNotNull(eventBody, nameof(eventBody));

            await Task.Yield(); //Remove this line

            throw new FulcrumNotFoundException("Method POST /User/Created/1 is not yet implemented - Part of tutorial 4");
        }
        public async Task UserCreatedAsync(UserCreatedEvent eventBody)
        {
            ServiceContract.RequireNotNull(eventBody, nameof(eventBody));

            // TODO: implement

            await Task.Yield();
        }
示例#8
0
        public async Task <IHttpActionResult> LogAsync(LogInstanceInformation message)
        {
            ServiceContract.RequireNotNull(message, nameof(message));
            ServiceContract.RequireValidated(message, nameof(message));

            await FulcrumApplication.Setup.FullLogger.LogAsync(message);

            return(new StatusCodeResult(HttpStatusCode.Accepted, this));
        }
        public async Task <IPersonProfile> UpdateAsync(ServicePersonProfile item)
        {
            ServiceContract.RequireNotNull(item, nameof(item));
            ServiceContract.RequireValidated(item, nameof(item));
            var personProfile = await PersonProfilesFunctionality.UpdateAsync(item);

            FulcrumAssert.IsNotNull(personProfile, $"{Namespace}: 56B82634-89A6-4EE4-969D-B7FFB4F9C016");
            FulcrumAssert.IsValidated(personProfile, $"{Namespace}: 56B82634-89A6-4EE4-969D-B7FFB4F9C016");
            return(personProfile);
        }
示例#10
0
        public async Task <Location> GeocodeAsync(Address address)
        {
            ServiceContract.RequireNotNull(address, nameof(address));
            ServiceContract.RequireValidated(address, nameof(address));
            var location = await GeocodingFunctionality.GeocodeAsync(address);

            FulcrumAssert.IsNotNull(location, $"{Namespace}: 56B82634-89A6-4EE4-969D-B7FFB4F9C016");
            FulcrumAssert.IsValidated(location, $"{Namespace}: 56B82634-89A6-4EE4-969D-B7FFB4F9C016");
            return(location);
        }
        public async Task <string> Create([FromBody] User user)
        {
            ServiceContract.RequireNotNull(user, nameof(user));
            ServiceContract.RequireValidated(user, nameof(user));

            var id = await _persistance.CreateAsync(user);

            throw new FulcrumNotImplementedException("Method /Users is not yet implemented - Part of tutorial 3");
            return(id);
        }
示例#12
0
        public Task CatchAllEventsAsync(string entityName, string eventName, int majorVersion, dynamic eventBody)
        {
            ServiceContract.RequireNotNullOrWhitespace(entityName, nameof(entityName));
            ServiceContract.RequireNotNullOrWhitespace(eventName, nameof(eventName));
            ServiceContract.RequireGreaterThanOrEqualTo(1, majorVersion, nameof(majorVersion));
            ServiceContract.RequireNotNull(eventBody, nameof(eventBody));


            throw new FulcrumNotImplementedException($"The event {entityName}.{eventName} version {majorVersion} is not yet supported.");
        }
        public async Task <string> PostAsync(User user)
        {
            ServiceContract.RequireNotNull(user, nameof(user));
            ServiceContract.RequireValidated(user, nameof(user));

            await new BatchTranslate(_translateClient, "mobile-app", "customer-master")
            .Add("user.type", user.Type, translatedValue => user.Type = translatedValue)
            .ExecuteAsync();

            return(await _customerMasterClient.AddUser(user));
        }
        public async Task <User> PutAsync(string id, User user)
        {
            ServiceContract.RequireNotNullOrWhitespace(id, nameof(id));
            ServiceContract.RequireNotNull(user, nameof(user));
            ServiceContract.RequireValidated(user, nameof(user));

            await new BatchTranslate(_translateClient, "mobile-app", "customer-master")
            .Add("user.type", user.Type, translatedValue => user.Type = translatedValue)
            .ExecuteAsync();

            throw new FulcrumNotImplementedException("Method PUT /Users/{id} is not yet implemented - Part of tutorial 1");
        }
        public async Task <HealthResponse> ServiceHealthAsync()
        {
            ServiceContract.RequireNotNull(_tenant, nameof(_tenant));
            ServiceContract.RequireValidated(_tenant, nameof(_tenant));

            var aggregator = new ResourceHealthAggregator(_tenant, "Api");

            aggregator.AddHealthResponse(await CheckAuthentication());
            aggregator.AddHealthResponse(await CheckLogging());
            aggregator.AddHealthResponse(await CheckValueTranslation());
            aggregator.AddHealthResponse(await CheckVisualNotificationCapability());
            aggregator.AddHealthResponse(await CheckCustomerMasterCapability());
            aggregator.AddHealthResponse(await CheckStatisticsCapability());
            return(aggregator.GetAggregatedHealthResponse());
        }
        public async Task <Product> UpdateProduct(Product product)
        {
            ServiceContract.RequireNotNull(product, nameof(product));
            ServiceContract.RequireValidated(product, nameof(product));

            var bllProduct = ToBll(product);

            bllProduct = await _productFunctionality.Update(bllProduct);

            var result = FromBll(bllProduct);

            FulcrumAssert.IsNotNull(result, nameof(result));
            FulcrumAssert.IsValidated(result, $"{Namespace}: 27A74E83-C31A-4A87-B8C6-1FE5A7FF9F85");

            return(result);
        }
        public async Task <Product> CreateProduct(Product product)
        {
            ServiceContract.RequireNotNull(product, nameof(product));
            ServiceContract.RequireValidated(product, nameof(product));

            var bllProduct = ToBll(product);

            bllProduct = await _productFunctionality.CreateAsync(bllProduct);

            var result = FromBll(bllProduct);

            FulcrumAssert.IsNotNull(result, nameof(result));
            FulcrumAssert.IsValidated(result, $"{Namespace}: 41042A82-2D71-427F-BBBF-9CDC7545E590");

            return(result);
        }
示例#18
0
        public void NullObject()
        {
            const string parameterName = "parameterName";

            try
            {
                object nullObject = null;
                // ReSharper disable once ExpressionIsAlwaysNull
                ServiceContract.RequireNotNull(nullObject, parameterName);
                Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Fail("An exception should have been thrown");
            }
            catch (FulcrumServiceContractException fulcrumException)
            {
                Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(fulcrumException.TechnicalMessage.Contains(parameterName));
            }
            catch (Exception e)
            {
                Microsoft.VisualStudio.TestTools.UnitTesting.Assert.Fail($"Expected a specific FulcrumException but got {e.GetType().FullName}.");
            }
        }
示例#19
0
        public async Task Publish(string entityName, string eventName, int major, int minor, JObject content)
        {
            ServiceContract.RequireNotNull(entityName, nameof(entityName));
            ServiceContract.RequireNotNull(eventName, nameof(eventName));
            ServiceContract.RequireGreaterThan(0, major, nameof(major));
            ServiceContract.RequireGreaterThanOrEqualTo(0, minor, nameof(minor));
            ServiceContract.RequireNotNull(content, nameof(content));

            var correlationId = FulcrumApplication.Context.CorrelationId;
            var test          = await _testLogic.GetAsync(correlationId);

            if (test != null)
            {
                try
                {
                    var client  = FulcrumApplication.Context.CallingClientName;
                    var payload = JObject.FromObject(content);
                    var result  = await _integrationApiClient.TestBenchPublish(entityName, eventName, major, minor, client, payload);

                    if (result.Verified)
                    {
                        await _integrationApiClient.PublishEvent(entityName, eventName, major, minor, client, payload);

                        await _testLogic.SetStateAsync(test, StateEnum.Ok, "Event intercepted and verified with BE Test bench");
                    }
                    else
                    {
                        var message = string.Join(", ", result.Errors) +
                                      $" | Contract: {JsonConvert.SerializeObject(result.Contract)}" +
                                      $" | Payload: {JsonConvert.SerializeObject(result.Payload)}";
                        await _testLogic.SetStateAsync(test, StateEnum.Failed, message);
                    }
                }
                catch (Exception e)
                {
                    await _testLogic.SetStateAsync(test, StateEnum.Failed, e.Message);
                }
            }
        }