public IHttpActionResult PostIssue(Issue_ApiRequestCreateModel issueRequestCreateModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var idUser = _userIdentityService.Id; var issue = _mapper.Map <Issue>(issueRequestCreateModel); issue.IdOwnerUser = idUser; var count = _issueService.Create(issue); var issueResponseModel = _mapper.Map <Issue_ApiResponseViewModel>(issue); var serviceDescription = _serviceDescriptionService.Get(issueRequestCreateModel.IdServiceDescription); var graphDataObject = JsonConvert.DeserializeObject <CytoscapeObject>(serviceDescription.GraphJson); //TODO: extract IFs-ELSEs below to private methods if (issueRequestCreateModel.IdWsdlInterface.HasValue) { var wsdlInterface = _serviceDescriptionService.GetWsdlInterfaceWithSemanticAnnotations(issueRequestCreateModel.IdWsdlInterface.Value); graphDataObject = _graphService.AddIssueToWsdlInterface(graphDataObject, wsdlInterface) as CytoscapeObject; } else if (issueRequestCreateModel.IdWsdlOperation.HasValue) { var wsdlOperation = _serviceDescriptionService.GetWsdlOperationWithSemanticAnnotations(issueRequestCreateModel.IdWsdlOperation.Value); graphDataObject = _graphService.AddIssueToWsdlOperation(graphDataObject, wsdlOperation) as CytoscapeObject; } else if (issueRequestCreateModel.IdWsdlFault.HasValue) { var wsdlFault = _serviceDescriptionService.GetWsdlFaultWithSemanticAnnotations(issueRequestCreateModel.IdWsdlFault.Value); graphDataObject = _graphService.AddIssueToWsdlFault(graphDataObject, wsdlFault) as CytoscapeObject; } else if (issueRequestCreateModel.IdXsdComplexType.HasValue) { var xsdComplexElement = _serviceDescriptionService.GetXsdComplexTypeWithSemanticAnnotations(issueRequestCreateModel.IdXsdComplexType.Value); graphDataObject = _graphService.AddIssueToXsdComplexType(graphDataObject, xsdComplexElement) as CytoscapeObject; } else if (issueRequestCreateModel.IdXsdSimpleType.HasValue) { var xsdSimpleElement = _serviceDescriptionService.GetXsdSimpleTypeWithSemanticAnnotations(issueRequestCreateModel.IdXsdSimpleType.Value); graphDataObject = _graphService.AddIssueToXsdSimpleType(graphDataObject, xsdSimpleElement) as CytoscapeObject; } serviceDescription.GraphJson = JsonConvert.SerializeObject(graphDataObject); _serviceDescriptionService.Update(serviceDescription); var serviceDescriptionResponseModel = _mapper.Map <ServiceDescription_ApiResponseViewModel>(serviceDescription); issueResponseModel.ServiceDescription = serviceDescriptionResponseModel; return(Ok(issueResponseModel)); }