コード例 #1
0
        public async Task <IActionResult> Create([FromBody] CreateContactInfoRequest contactInfoRequest)
        {
            var contactInfo = new ContactInfo
            {
                ContactId = contactInfoRequest.ContactId,
                Content   = contactInfoRequest.Content,
                Type      = contactInfoRequest.Type,
            };

            await _contactInfoService.CreateAsync(contactInfo);

            var baseUrl     = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}";
            var getLocation = $"{baseUrl}/{APIRoutes.ContactInfoControllerRoutes.Get.Replace("{contactInfoId}", contactInfo.Id.ToString())}";

            var contactInfoResponse = new ContactInfoResponse
            {
                Id        = contactInfo.Id,
                ContactId = contactInfo.ContactId,
                Content   = contactInfo.Content,
                Type      = contactInfo.Type,
            };

            await _redisCacheService
            .DeleteCachedResponseAsync(
                new string[]
            {
                HttpContext.Request.Path,
                APIRoutes.ContactInfoControllerRoutes.GetAll
            });

            return(Created(getLocation, contactInfoResponse));
        }
コード例 #2
0
        public async Task <IActionResult> Post([FromBody] CreateContactInfoRequest contactInfo)
        {
            (bool success, ContactInfoViewModel? vm, RequestError? error) = await new CreateContactInfo(_context).Do(contactInfo);

            if (!success && error != null)
            {
                return(StatusCode((int)error.StatusCode, error.Errors));
            }

            return(Ok(vm));
        }
コード例 #3
0
        public async Task Create_ShouldReturnCreatedRecord()
        {
            // Arrange
            await AuthenticationAsync();

            var createdTestContact
                = await CreateContactAsync(
                      new CreateContactRequest
            {
                FirstName   = "Integration",
                LastName    = "Test",
                CompanyName = "IntegrationTest"
            });

            var createdTestContactInfo1
                = new CreateContactInfoRequest
                {
                ContactId = createdTestContact.Id,
                Type      = ContactInfoType.Phone,
                Content   = "05350811936"
                };

            // Act
            var createdTestContactInfoResponse
                = await httpClient
                  .PostAsJsonAsync(
                      APIRoutes.ContactInfoControllerRoutes.Create,
                      createdTestContactInfo1
                      );

            // Assert
            createdTestContactInfoResponse.StatusCode.Should().Be(HttpStatusCode.Created);

            var returnedTestContactInfo = await createdTestContactInfoResponse.Content.ReadAsAsync <ContactInfoResponse>();

            returnedTestContactInfo.ContactId.Should().Be(createdTestContactInfo1.ContactId);
            returnedTestContactInfo.Content.Should().Be(createdTestContactInfo1.Content);
            returnedTestContactInfo.Type.Should().Be(createdTestContactInfo1.Type);
        }
コード例 #4
0
ファイル: IntegrationTest.cs プロジェクト: umutdr/ContactsAPI
        protected async Task <ContactInfoResponse> CreateContactInfoAsync(CreateContactInfoRequest request)
        {
            var response = await httpClient.PostAsJsonAsync(APIRoutes.ContactInfoControllerRoutes.Create, request);

            return(await response.Content.ReadAsAsync <ContactInfoResponse>());
        }
コード例 #5
0
        public async Task <(bool success, ContactInfoViewModel?viewModel, RequestError?error)> Do(CreateContactInfoRequest request)
        {
            (bool isValid, List <string> errors) = request.CheckValidity();

            if (!isValid)
            {
                return(false, null, new RequestError(HttpStatusCode.BadRequest, errors));
            }

            ContactInfo contactInfo = new ContactInfo
            {
                FirstName = request.FirstName !,
                LastName  = request.LastName !,
                Email     = request.Email !,
                Phone     = request.Phone,

                Address = new Address
                {
                    State       = request.Address?.State,
                    ZipCode     = request.Address !.ZipCode !,
                    City        = request.Address?.City,
                    Street      = request.Address?.Street,
                    HouseNumber = request.Address?.HouseNumber,
                },
            };

            _context.Add(contactInfo);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                await new ErrorLogging(_context).LogError(ErrorMessages.CreateContactInfo, ex, request);
                return(false, null, new RequestError(HttpStatusCode.InternalServerError, ErrorMessages.DatabaseOperationFailed));
            }

            return(true, new ContactInfoViewModel(contactInfo), null);
        }
コード例 #6
0
 public VoidResponse CreateContactInfo(CreateContactInfoRequest request)
 {
     return(Execute <CreateContactInfoRequest, VoidResponse>(
                request,
                response => SchoolFacade.CreateContactInfo(request.ContactInfo)));
 }