public async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "customers/{customerId}/ContactDetails/{contactid}")] HttpRequest req, ILogger log, string customerId, string contactid) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(_httpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function GetContactByIdHttpTrigger processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(contactid, out var contactGuid)) { return(_httpResponseMessageHelper.BadRequest(contactGuid)); } var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_httpResponseMessageHelper.NoContent(customerGuid)); } var contact = await _getContactDetailsByIdService.GetContactDetailsForCustomerAsync(customerGuid, contactGuid); return(contact == null? _httpResponseMessageHelper.NoContent(contactGuid) : _httpResponseMessageHelper.Ok(JsonHelper.SerializeObject(contact))); }
public async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}/Interactions/")] HttpRequest req, ILogger log, string customerId) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header."); return(_httpResponseMessageHelper.BadRequest()); } log.LogInformation("Get Interaction C# HTTP trigger function processed a request. By Touchpoint. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_httpResponseMessageHelper.NoContent(customerGuid)); } var interactions = await _interactionGetService.GetInteractionsAsync(customerGuid); return(interactions == null? _httpResponseMessageHelper.NoContent(customerGuid) : _httpResponseMessageHelper.Ok(_jsonHelper.SerializeObjectsAndRenameIdProperty(interactions, "id", "InteractionId"))); }
public async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}/Interactions/{interactionId}/Transfers/{transferId}")] HttpRequest req, ILogger log, string customerId, string interactionId, string transferId) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(_httpResponseMessageHelper.BadRequest()); } log.LogInformation("Get Transfer By Id C# HTTP trigger function processed a request. By Touchpoint. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(_httpResponseMessageHelper.BadRequest(interactionGuid)); } if (!Guid.TryParse(transferId, out var transferGuid)) { return(_httpResponseMessageHelper.BadRequest(transferGuid)); } var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_httpResponseMessageHelper.NoContent(customerGuid)); } var doesInteractionExist = _resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(_httpResponseMessageHelper.NoContent(interactionGuid)); } var transfer = await _transferByIdService.GetTransferForCustomerAsync(customerGuid, transferGuid); return(transfer == null? _httpResponseMessageHelper.NoContent(transferGuid) : _httpResponseMessageHelper.Ok(_jsonHelper.SerializeObjectAndRenameIdProperty(transfer, "id", "TransferId"))); }
public async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}/Subscriptions/")] HttpRequest req, ILogger log, string customerId) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header"); return(_httpResponseMessageHelper.BadRequest()); } if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } var subscriptions = await _getSubscriptionsForTouchpointService.GetSubscriptionsForTouchpointAsync(customerGuid, touchpointId); return(subscriptions == null? _httpResponseMessageHelper.NoContent(customerGuid) : _httpResponseMessageHelper.Ok(JsonHelper.SerializeObjects(subscriptions))); }
public void HttpRequestHelpers_GetDssTouchpointId_ThrowsArgumentNullException_WhenRequestIsNull() { Assert.That(() => _httpRequestHelper.GetDssTouchpointId(null), Throws.Exception .TypeOf <ArgumentNullException>()); }
public async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "Customers/{customerId}/Interactions/{interactionId}")] HttpRequest req, ILogger log, string customerId, string interactionId) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header."); return(_httpResponseMessageHelper.BadRequest()); } var ApimURL = _httpRequestMessageHelper.GetDssApimUrl(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(_httpResponseMessageHelper.BadRequest()); } log.LogInformation("Patch Interaction C# HTTP trigger function processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(_httpResponseMessageHelper.BadRequest(interactionGuid)); } InteractionPatch interactionPatchRequest; try { interactionPatchRequest = await _httpRequestMessageHelper.GetResourceFromRequest <Models.InteractionPatch>(req); } catch (JsonException ex) { return(_httpResponseMessageHelper.UnprocessableEntity(ex)); } if (interactionPatchRequest == null) { return(_httpResponseMessageHelper.UnprocessableEntity(req)); } interactionPatchRequest.LastModifiedTouchpointId = touchpointId; var errors = _validate.ValidateResource(interactionPatchRequest); if (errors != null && errors.Any()) { return(_httpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_httpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await _resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(_httpResponseMessageHelper.Forbidden(customerGuid)); } var interaction = await _interactionPatchService.GetInteractionForCustomerAsync(customerGuid, interactionGuid); if (interaction == null) { return(_httpResponseMessageHelper.NoContent(interactionGuid)); } var updatedInteraction = await _interactionPatchService.UpdateAsync(interaction, interactionPatchRequest); if (updatedInteraction != null) { await _interactionPatchService.SendToServiceBusQueueAsync(updatedInteraction, customerGuid, ApimURL); } return(updatedInteraction == null? _httpResponseMessageHelper.BadRequest(interactionGuid) : _httpResponseMessageHelper.Ok(_jsonHelper.SerializeObjectAndRenameIdProperty(updatedInteraction, "id", "InteractionId"))); }
public async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "Customers/{customerId}/Subscriptions/{subscriptionId}")] HttpRequest req, ILogger log, string customerId, string subscriptionId) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header"); return(_httpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function processed a request. By Touchpoint " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(subscriptionId, out var subscriptionsGuid)) { return(_httpResponseMessageHelper.BadRequest(subscriptionsGuid)); } SubscriptionsPatch subscriptionsPatchRequest; try { subscriptionsPatchRequest = await _httpRequestMessageHelper.GetResourceFromRequest <SubscriptionsPatch>(req); } catch (JsonSerializationException ex) { return(_httpResponseMessageHelper.UnprocessableEntity(ex)); } if (subscriptionsPatchRequest == null) { return(_httpResponseMessageHelper.UnprocessableEntity(req)); } subscriptionsPatchRequest.LastModifiedBy = touchpointId; var errors = _validate.ValidateResource(subscriptionsPatchRequest); if (errors != null && errors.Any()) { return(_httpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_httpResponseMessageHelper.NoContent(customerGuid)); } var subscriptions = await _subscriptionsPatchService.GetSubscriptionsForCustomerAsync(customerGuid, subscriptionsGuid); if (subscriptions == null) { return(_httpResponseMessageHelper.NoContent(subscriptionsGuid)); } var updatedSubscriptions = await _subscriptionsPatchService.UpdateAsync(subscriptions, subscriptionsPatchRequest); return(updatedSubscriptions == null? _httpResponseMessageHelper.BadRequest(subscriptionsGuid) : _httpResponseMessageHelper.Ok(JsonHelper.SerializeObject(updatedSubscriptions))); }
public static async Task <HttpResponseMessage> RunAsync( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "collections")] HttpRequest req, ILogger log, [Inject] IGetCollectionsHttpTriggerService service, [Inject] IJsonHelper jsonHelper, [Inject] IHttpRequestHelper requestHelper, [Inject] IHttpResponseMessageHelper responseMessageHelper) { log.LogInformation("Get Collections C# HTTP trigger function processing a request. TouchpointId " + requestHelper.GetDssTouchpointId(req)); try { var results = await service.ProcessRequestAsync(); if (results.Count == 0) { return(responseMessageHelper.NoContent()); } return(responseMessageHelper.Ok(jsonHelper.SerializeObjectsAndRenameIdProperty <Collection>(results, "id", "CollectionId"))); } catch (Exception ex) { log.LogError(ex, "Get Collections C# HTTP trigger function"); return(responseMessageHelper.UnprocessableEntity()); } }
public async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "Customers/{customerId}/Interactions/{interactionId}/Transfers/")] HttpRequest req, ILogger log, string customerId, string interactionId) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(_httpResponseMessageHelper.BadRequest()); } var ApimURL = _httpRequestMessageHelper.GetDssApimUrl(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(_httpResponseMessageHelper.BadRequest()); } log.LogInformation("Post Transfer C# HTTP trigger function processed a request. By Touchpoint. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(interactionId, out var interactionGuid)) { return(_httpResponseMessageHelper.BadRequest(interactionGuid)); } Models.Transfer transferRequest; try { transferRequest = await _httpRequestMessageHelper.GetResourceFromRequest <Models.Transfer>(req); } catch (JsonException ex) { return(_httpResponseMessageHelper.UnprocessableEntity(ex)); } if (transferRequest == null) { return(_httpResponseMessageHelper.UnprocessableEntity(req)); } transferRequest.SetIds(customerGuid, interactionGuid, touchpointId); var errors = _validate.ValidateResource(transferRequest, true); if (errors != null && errors.Any()) { return(_httpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_httpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await _resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(_httpResponseMessageHelper.Forbidden(customerGuid)); } var doesInteractionExist = _resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(_httpResponseMessageHelper.NoContent(interactionGuid)); } var transfer = await _transferPostService.CreateAsync(transferRequest); if (transfer != null) { await _transferPostService.SendToServiceBusQueueAsync(transfer, ApimURL); } return(transfer == null? _httpResponseMessageHelper.BadRequest(customerGuid) : _httpResponseMessageHelper.Created(_jsonHelper.SerializeObjectAndRenameIdProperty(transfer, "id", "TransferId"))); }
public static async Task <IActionResult> RunAsync( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "collections")] HttpRequest req, ILogger log, [Inject] IPostCollectionHttpTriggerService service, [Inject] IHttpRequestHelper requestHelper, [Inject] IHttpResponseMessageHelper responseMessageHelper, [Inject] IJsonHelper jsonHelper) { log.LogInformation("Post Collection C# HTTP trigger function processing a request. Touchpoint " + requestHelper.GetDssTouchpointId(req)); try { Collection collection = await requestHelper.GetResourceFromRequest <Collection>(req); var result = await service.ProcessRequestAsync(collection); if (!result) { return(responseMessageHelper.BadRequest() as IActionResult); } return(responseMessageHelper.Created(jsonHelper.SerializeObjectAndRenameIdProperty(collection, "CollectionId", "id")) as IActionResult); } catch (Exception ex) { log.LogError(ex, "Post Collection C# HTTP trigger function"); return(responseMessageHelper.BadRequest() as IActionResult); } }
public async Task <HttpResponseMessage> RunAsync([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "customers/{customerId}/ContactDetails/")] HttpRequest req, ILogger log, string customerId) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(_responseHelper.BadRequest()); } var ApimURL = _httpRequestMessageHelper.GetDssApimUrl(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(_responseHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function Post Contact processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_responseHelper.BadRequest(customerGuid)); } Models.ContactDetails contactdetailsRequest; try { contactdetailsRequest = await _httpRequestMessageHelper.GetResourceFromRequest <Contact.Models.ContactDetails>(req); } catch (JsonException ex) { return(_responseHelper.UnprocessableEntity(ex)); } if (contactdetailsRequest == null) { return(_responseHelper.UnprocessableEntity(req)); } contactdetailsRequest.SetIds(customerGuid, touchpointId); var errors = _validate.ValidateResource(contactdetailsRequest, null, true); if (errors != null && errors.Any()) { return(_responseHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_responseHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await _resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(_responseHelper.Forbidden(customerGuid)); } var doesContactDetailsExist = _contactdetailsPostService.DoesContactDetailsExistForCustomer(customerGuid); if (doesContactDetailsExist) { return(_responseHelper.Conflict()); } if (!string.IsNullOrEmpty(contactdetailsRequest.EmailAddress)) { var contacts = await _provider.GetContactsByEmail(contactdetailsRequest.EmailAddress); if (contacts != null) { foreach (var contact in contacts) { var isReadOnly = await _provider.DoesCustomerHaveATerminationDate(contact.CustomerId.GetValueOrDefault()); if (!isReadOnly) { //if a customer that has the same email address is not readonly (has date of termination) //then email address on the request cannot be used. return(_responseHelper.Conflict()); } } } } var contactDetails = await _contactdetailsPostService.CreateAsync(contactdetailsRequest); if (contactDetails != null) { await _contactdetailsPostService.SendToServiceBusQueueAsync(contactDetails, ApimURL); } return(contactDetails == null ? _responseHelper.BadRequest(customerGuid) : _responseHelper.Created(JsonHelper.SerializeObject(contactDetails))); }
public async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "Customers/{customerId}/Subscriptions")] HttpRequest req, ILogger log, string customerId) { var touchpointId = _httpRequestHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header"); return(_httpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function processed a request. By Touchpoint " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } Models.Subscriptions subscriptionsRequest; try { subscriptionsRequest = await _httpRequestHelper.GetResourceFromRequest <Models.Subscriptions>(req); } catch (JsonSerializationException ex) { return(_httpResponseMessageHelper.UnprocessableEntity(ex)); } if (subscriptionsRequest == null) { return(_httpResponseMessageHelper.UnprocessableEntity(req)); } subscriptionsRequest.SetIds(customerGuid, touchpointId); var errors = _validate.ValidateResource(subscriptionsRequest); if (errors != null && errors.Any()) { return(_httpResponseMessageHelper.UnprocessableEntity(errors)); } var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_httpResponseMessageHelper.NoContent(customerGuid)); } var doesSubscriptionExist = await _resourceHelper.DoesSubscriptionExist(customerGuid, touchpointId); if (doesSubscriptionExist.HasValue) { var duplicateError = _validate.ValidateResultForDuplicateSubscriptionId(doesSubscriptionExist.GetValueOrDefault()); return(_httpResponseMessageHelper.Conflict()); } var subscriptions = await _subscriptionsPostService.CreateAsync(subscriptionsRequest); return(subscriptions == null ? _httpResponseMessageHelper.BadRequest(customerGuid) : _httpResponseMessageHelper.Created(JsonHelper.SerializeObject(subscriptions))); }
public async Task <HttpResponseMessage> RunAsync([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "customers/{customerId}/ContactDetails/{contactid}")] HttpRequest req, ILogger log, string customerId, string contactid) { var touchpointId = _httpRequestMessageHelper.GetDssTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(_httpResponseMessageHelper.BadRequest()); } var ApimURL = _httpRequestMessageHelper.GetDssApimUrl(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(_httpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function Patch Contact processed a request. " + touchpointId); if (!Guid.TryParse(customerId, out var customerGuid)) { return(_httpResponseMessageHelper.BadRequest(customerGuid)); } if (!Guid.TryParse(contactid, out var contactGuid)) { return(_httpResponseMessageHelper.BadRequest(contactGuid)); } ContactDetailsPatch contactdetailsPatchRequest; try { contactdetailsPatchRequest = await _httpRequestMessageHelper.GetResourceFromRequest <ContactDetailsPatch>(req); } catch (JsonException ex) { return(_httpResponseMessageHelper.UnprocessableEntity(ex)); } if (contactdetailsPatchRequest == null) { return(_httpResponseMessageHelper.UnprocessableEntity(req)); } contactdetailsPatchRequest.LastModifiedTouchpointId = touchpointId; var doesCustomerExist = await _resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(_httpResponseMessageHelper.NoContent(customerGuid)); } var isCustomerReadOnly = await _resourceHelper.IsCustomerReadOnly(customerGuid); if (isCustomerReadOnly) { return(_httpResponseMessageHelper.Forbidden(customerGuid)); } var contactdetails = await _contactdetailsPatchService.GetContactDetailsForCustomerAsync(customerGuid, contactGuid); if (contactdetails == null) { return(_httpResponseMessageHelper.NoContent(contactGuid)); } var errors = _validate.ValidateResource(contactdetailsPatchRequest, contactdetails, false); if (!string.IsNullOrEmpty(contactdetailsPatchRequest.EmailAddress)) { var contacts = await _provider.GetContactsByEmail(contactdetailsPatchRequest.EmailAddress); if (contacts != null) { foreach (var contact in contacts) { var isReadOnly = await _provider.DoesCustomerHaveATerminationDate(contact.CustomerId.GetValueOrDefault()); if (!isReadOnly && contact.CustomerId != contactdetails.CustomerId) { //if a customer that has the same email address is not readonly (has date of termination) //then email address on the request cannot be used. return(_httpResponseMessageHelper.Conflict()); } } } } // Set Digital account properties so that contentenhancer can queue change on digital identity topic. var diaccount = await _provider.GetIdentityForCustomerAsync(contactdetails.CustomerId.Value); if (diaccount != null) { if (contactdetailsPatchRequest.EmailAddress == string.Empty) { if (errors == null) { errors = new List <System.ComponentModel.DataAnnotations.ValidationResult>(); } errors.Add(new System.ComponentModel.DataAnnotations.ValidationResult("Email Address cannot be removed because it is associated with a Digital Account", new List <string>() { "EmailAddress" })); return(_httpResponseMessageHelper.UnprocessableEntity(errors)); } if (!string.IsNullOrEmpty(contactdetails.EmailAddress) && !string.IsNullOrEmpty(contactdetailsPatchRequest.EmailAddress) && contactdetails.EmailAddress?.ToLower() != contactdetailsPatchRequest.EmailAddress?.ToLower() && diaccount.IdentityStoreId.HasValue) { contactdetails.SetDigitalAccountEmailChanged(contactdetailsPatchRequest.EmailAddress?.ToLower(), diaccount.IdentityStoreId.Value); } } if (errors != null && errors.Any()) { return(_httpResponseMessageHelper.UnprocessableEntity(errors)); } var updatedContactDetails = await _contactdetailsPatchService.UpdateAsync(contactdetails, contactdetailsPatchRequest); if (updatedContactDetails != null) { await _contactdetailsPatchService.SendToServiceBusQueueAsync(updatedContactDetails, customerGuid, ApimURL); } return(updatedContactDetails == null? _httpResponseMessageHelper.BadRequest(contactGuid) : _httpResponseMessageHelper.Ok(JsonHelper.SerializeObject(updatedContactDetails))); }