public async Task GetWebChatHttpTrigger_ReturnsStatusCodeNoContent_WhenInteractionDoesNotExist() { _resourceHelper.DoesCustomerExist(Arg.Any <Guid>()).ReturnsForAnyArgs(true); _resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(Arg.Any <Guid>(), Arg.Any <Guid>()).Returns(false); // Act var result = await RunFunction(ValidCustomerId, ValidInteractionId); // Assert Assert.IsInstanceOf <HttpResponseMessage>(result); Assert.AreEqual(HttpStatusCode.NoContent, result.StatusCode); }
public async Task PostSessionHttpTrigger_ReturnsStatusCodeNoContent_WhenInteractionDoesNotExist() { _httpRequestMessageHelper.GetSessionFromRequest <Models.Session>(_request).Returns(Task.FromResult(_session).Result); _resourceHelper.DoesCustomerExist(Arg.Any <Guid>()).Returns(true); _resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(Arg.Any <Guid>(), Arg.Any <Guid>()).Returns(false); var result = await RunFunction(ValidCustomerId, ValidInteractionId); // Assert Assert.IsInstanceOf <HttpResponseMessage>(result); Assert.AreEqual(HttpStatusCode.NoContent, result.StatusCode); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "Customers/{customerId}/Interactions/{interactionId}/actionplans/{actionplanId}/Outcomes/{outcomeId}")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string actionplanId, string outcomeId, [Inject] IResourceHelper resourceHelper, [Inject] IDeleteOutcomesHttpTriggerService outcomesDeleteService) { log.LogInformation("Delete Action Plan C# HTTP trigger function processed a request."); 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(actionplanId, out var actionplanGuid)) { return(HttpResponseMessageHelper.BadRequest(actionplanGuid)); } if (!Guid.TryParse(outcomeId, out var outcomesGuid)) { return(HttpResponseMessageHelper.BadRequest(outcomesGuid)); } 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 doesActionPlanExist = resourceHelper.DoesActionPlanResourceExistAndBelongToCustomer(actionplanGuid, interactionGuid, customerGuid); if (!doesActionPlanExist) { return(HttpResponseMessageHelper.NoContent(actionplanGuid)); } var outcome = await outcomesDeleteService.GetOutcomeForCustomerAsync(customerGuid, interactionGuid, actionplanGuid, outcomesGuid); if (outcome == null) { return(HttpResponseMessageHelper.NoContent(outcomesGuid)); } var outcomeDeleted = await outcomesDeleteService.DeleteAsync(outcome.OutcomeId.GetValueOrDefault()); return(!outcomeDeleted? HttpResponseMessageHelper.BadRequest(outcomesGuid) : HttpResponseMessageHelper.Ok()); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}/Interactions/{interactionId}/actionplans/{actionplanId}/Outcomes")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string actionplanId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IGetOutcomesHttpTriggerService outcomesGetService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Get Outcomes 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)); } if (!Guid.TryParse(actionplanId, out var actionPlanGuid)) { return(HttpResponseMessageHelper.BadRequest(actionPlanGuid)); } //Check customer var doesCustomerExist = await resourceHelper.DoesCustomerExist(customerGuid); if (!doesCustomerExist) { return(HttpResponseMessageHelper.NoContent(customerGuid)); } //Check interactions var doesInteractionExist = resourceHelper.DoesInteractionResourceExistAndBelongToCustomer(interactionGuid, customerGuid); if (!doesInteractionExist) { return(HttpResponseMessageHelper.NoContent(interactionGuid)); } var doesActionPlanExist = resourceHelper.DoesActionPlanResourceExistAndBelongToCustomer(actionPlanGuid, interactionGuid, customerGuid); if (!doesActionPlanExist) { return(HttpResponseMessageHelper.NoContent(actionPlanGuid)); } var outcomes = await outcomesGetService.GetOutcomesAsync(customerGuid); return(outcomes == null? HttpResponseMessageHelper.NoContent(customerGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObjects(outcomes))); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "Customers/{customerId}/Interactions/{interactionId}/WebChats/{webChatId}")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string webChatId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IGetWebChatByIdHttpTriggerService webChatGetService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Get Web Chat 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(webChatId, out var webChatGuid)) { return(HttpResponseMessageHelper.BadRequest(webChatGuid)); } 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 webChat = await webChatGetService.GetWebChatForCustomerAsync(customerGuid, interactionGuid, webChatGuid); return(webChat == null? HttpResponseMessageHelper.NoContent(webChatGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(webChat))); }
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 static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "Customers/{customerId}/Interactions/{interactionId}/actionplans/{actionplanId}/Outcomes/{OutcomeId}")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string actionplanId, string OutcomeId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPatchOutcomesHttpTriggerService outcomesPatchService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'APIM-TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Patch Action Plan 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)); } if (!Guid.TryParse(actionplanId, out var actionplanGuid)) { return(HttpResponseMessageHelper.BadRequest(actionplanGuid)); } if (!Guid.TryParse(OutcomeId, out var outcomesGuid)) { return(HttpResponseMessageHelper.BadRequest(outcomesGuid)); } Models.OutcomesPatch outcomesPatchRequest; try { outcomesPatchRequest = await httpRequestMessageHelper.GetOutcomesFromRequest <Models.OutcomesPatch>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (outcomesPatchRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } outcomesPatchRequest.LastModifiedTouchpointId = touchpointId; var errors = validate.ValidateResource(outcomesPatchRequest); 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 doesActionPlanExist = resourceHelper.DoesActionPlanResourceExistAndBelongToCustomer(actionplanGuid, interactionGuid, customerGuid); if (!doesActionPlanExist) { return(HttpResponseMessageHelper.NoContent(actionplanGuid)); } var outcomeForCustomer = await outcomesPatchService.GetOutcomesForCustomerAsync(customerGuid, interactionGuid, actionplanGuid, outcomesGuid); if (outcomeForCustomer == null) { return(HttpResponseMessageHelper.NoContent(outcomesGuid)); } var patchedOutcome = outcomesPatchService.PatchResource(outcomeForCustomer, outcomesPatchRequest); if (patchedOutcome == null) { return(HttpResponseMessageHelper.NoContent(outcomesGuid)); } var updatedOutcomes = await outcomesPatchService.UpdateCosmosAsync(patchedOutcome, outcomesGuid); if (updatedOutcomes != null) { await outcomesPatchService.SendToServiceBusQueueAsync(updatedOutcomes, customerGuid, ApimURL); } return(updatedOutcomes == null? HttpResponseMessageHelper.BadRequest(outcomesGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(updatedOutcomes))); }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "customers/{customerId}/interactions/{interactionId}/sessions/")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPostSessionHttpTriggerService sessionPostService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("C# HTTP trigger function Post Session 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)); } Session sessionRequest; try { sessionRequest = await httpRequestMessageHelper.GetSessionFromRequest <Session>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (sessionRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } sessionRequest.SetIds(customerGuid, interactionGuid, touchpointId); var errors = validate.ValidateResource(sessionRequest); 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 session = await sessionPostService.CreateAsync(sessionRequest); if (session != null) { await sessionPostService.SendToServiceBusQueueAsync(session, ApimURL); } return(session == null ? HttpResponseMessageHelper.BadRequest(customerGuid) : HttpResponseMessageHelper.Created(JsonHelper.SerializeObject(session))); }
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 <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = "Customers/{customerId}/Interactions/{interactionId}/Transfers/{transferId}")] HttpRequestMessage req, ILogger log, string customerId, string interactionId, string transferId, [Inject] IResourceHelper resourceHelper, [Inject] IHttpRequestMessageHelper httpRequestMessageHelper, [Inject] IValidate validate, [Inject] IPatchTransferHttpTriggerService transferPatchService) { var touchpointId = httpRequestMessageHelper.GetTouchpointId(req); if (string.IsNullOrEmpty(touchpointId)) { log.LogInformation("Unable to locate 'TouchpointId' in request header."); return(HttpResponseMessageHelper.BadRequest()); } var ApimURL = httpRequestMessageHelper.GetApimURL(req); if (string.IsNullOrEmpty(ApimURL)) { log.LogInformation("Unable to locate 'apimurl' in request header"); return(HttpResponseMessageHelper.BadRequest()); } log.LogInformation("Patch 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)); } if (!Guid.TryParse(transferId, out var transferGuid)) { return(HttpResponseMessageHelper.BadRequest(transferGuid)); } Models.TransferPatch transferPatchRequest; try { transferPatchRequest = await httpRequestMessageHelper.GetTransferFromRequest <Models.TransferPatch>(req); } catch (JsonException ex) { return(HttpResponseMessageHelper.UnprocessableEntity(ex)); } if (transferPatchRequest == null) { return(HttpResponseMessageHelper.UnprocessableEntity(req)); } transferPatchRequest.LastModifiedTouchpointId = touchpointId; var errors = validate.ValidateResource(transferPatchRequest, false); 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 transferPatchService.GetTransferForCustomerAsync(customerGuid, transferGuid); if (transfer == null) { return(HttpResponseMessageHelper.NoContent(transferGuid)); } var updatedTransfer = await transferPatchService.UpdateAsync(transfer, transferPatchRequest); if (updatedTransfer != null) { await transferPatchService.SendToServiceBusQueueAsync(transfer, customerGuid, ApimURL); } return(updatedTransfer == null? HttpResponseMessageHelper.BadRequest(transferGuid) : HttpResponseMessageHelper.Ok(JsonHelper.SerializeObject(updatedTransfer))); }