public async Task <IActionResult> CreateContact([FromBody] ContactDetailsRequestObject contactRequest)
        {
            var token = _tokenFactory.Create(_httpContextWrapper.GetContextRequestHeaders(HttpContext));

            var result = await _createContactUseCase.ExecuteAsync(contactRequest, token).ConfigureAwait(false);

            return(Created("api/v1/contactDetails", result));
        }
        public void SourceServiceAreaShouldErrorWhenNull()
        {
            var model = new ContactDetailsRequestObject()
            {
                SourceServiceArea = null
            };
            var result = _sut.TestValidate(model);

            result.ShouldHaveValidationErrorFor(x => x.SourceServiceArea);
        }
        public void ContactInformationShouldErrorWhenNull()
        {
            var model = new ContactDetailsRequestObject()
            {
                ContactInformation = null
            };
            var result = _sut.TestValidate(model);

            result.ShouldHaveValidationErrorFor(x => x.ContactInformation);
        }
        public void TargetTypeShouldNotErrorWithValidValue(TargetType valid)
        {
            var model = new ContactDetailsRequestObject()
            {
                TargetType = valid
            };
            var result = _sut.TestValidate(model);

            result.ShouldNotHaveValidationErrorFor(x => x.TargetType);
        }
        public void ContactTypeShouldErrorWithInvalidValue(int?val)
        {
            var model = new ContactDetailsRequestObject()
            {
                TargetType = (TargetType)val
            };
            var result = _sut.TestValidate(model);

            result.ShouldHaveValidationErrorFor(x => x.TargetType);
        }
        public void ShouldErrorWithEmptyTargetId()
        {
            var model = new ContactDetailsRequestObject()
            {
                TargetId = Guid.Empty
            };
            var result = _sut.TestValidate(model);

            result.ShouldHaveValidationErrorFor(x => x.TargetId);
        }
        public void RecordValidUntilShouldErrorWithInvalidValue()
        {
            var model = new ContactDetailsRequestObject()
            {
                RecordValidUntil = default(DateTime)
            };
            var result = _sut.TestValidate(model);

            result.ShouldHaveValidationErrorFor(x => x.RecordValidUntil);
        }
        public void ContactInformationShouldErrorWithInvalidValue()
        {
            var invalid = new ContactInformation();
            var model   = new ContactDetailsRequestObject()
            {
                ContactInformation = invalid
            };
            var result = _sut.TestValidate(model);

            result.ShouldHaveValidationErrorFor(x => x.ContactInformation.Value);
        }
        public void RecordValidUntilShouldNotErrorValidValue(string valid)
        {
            var model = new ContactDetailsRequestObject();

            if (valid != null)
            {
                model.RecordValidUntil = DateTime.Parse(valid);
            }

            var result = _sut.TestValidate(model);

            result.ShouldNotHaveValidationErrorFor(x => x.RecordValidUntil);
        }
 public static ContactDetails ToDomain(this ContactDetailsRequestObject entity, Token token)
 {
     return(new ContactDetails
     {
         Id = entity.Id == Guid.Empty ? Guid.NewGuid() : entity.Id,
         TargetId = entity.TargetId,
         TargetType = entity.TargetType,
         ContactInformation = entity.ContactInformation,
         SourceServiceArea = entity.SourceServiceArea,
         CreatedBy = token.ToCreatedBy(),
         IsActive = true,
         RecordValidUntil = entity.RecordValidUntil
     });
 }
        public async Task <ContactDetailsResponseObject> ExecuteAsync(ContactDetailsRequestObject contactRequest,
                                                                      Token token)
        {
            var dbObject = contactRequest.ToDomain(token).ToDatabase();
            var contact  = await _gateway.CreateContact(dbObject).ConfigureAwait(false);

            var contactTopicArn = Environment.GetEnvironmentVariable("CONTACT_DETAILS_SNS_ARN");

            var createContactDetailsSnsMessage = _snsFactory.Create(contact, token, EventConstants.CREATED);

            await _snsGateway.Publish(createContactDetailsSnsMessage, contactTopicArn).ConfigureAwait(false);

            return(contact.ToResponse());
        }
        public void SourceServiceAreaShouldErrorWithInvalidValue()
        {
            var invalid = new SourceServiceArea()
            {
                Area = "Some<tag>value"
            };
            var model = new ContactDetailsRequestObject()
            {
                SourceServiceArea = invalid
            };
            var result = _sut.TestValidate(model);

            result.ShouldHaveValidationErrorFor(x => x.SourceServiceArea.Area);
        }
        public async Task WhenTheCreateContactEndpointIsCalled(ContactDetailsRequestObject requestObject)
        {
            var route = $"api/v2/contactDetails";

            var uri = new Uri(route, UriKind.Relative);

            var message = new HttpRequestMessage(HttpMethod.Post, uri);

            message.Content = new StringContent(JsonConvert.SerializeObject(requestObject), Encoding.UTF8, "application/json");
            message.Method  = HttpMethod.Post;
            message.Headers.Add("Authorization", Jwt);

            _httpClient.DefaultRequestHeaders
            .Accept
            .Add(new MediaTypeWithQualityHeaderValue("application/json"));

            _lastResponse = await _httpClient.SendAsync(message).ConfigureAwait(false);
        }
Ejemplo n.º 14
0
        private async Task CheckMaximumsNotReached(ContactDetailsRequestObject contactRequest)
        {
            var getExistingRequest = new V1.Boundary.Request.ContactQueryParameter()
            {
                TargetId        = contactRequest.TargetId,
                IncludeHistoric = false
            };
            var existingContacts = await _gateway.GetContactDetailsByTargetId(getExistingRequest).ConfigureAwait(false);

            if (existingContacts != null)
            {
                var testObject = new CanCreateContactRequest()
                {
                    ExistingContacts = existingContacts, Request = contactRequest
                };
                var validator        = new CanCreateContactValidator();
                var validationResult = validator.Validate(testObject);
                if (!validationResult.IsValid)
                {
                    throw new ValidationException(validationResult.Errors);
                }
            }
        }
Ejemplo n.º 15
0
 public void GivenAnInvalidNewContactRequest()
 {
     Contact = new ContactDetailsRequestObject();
 }