예제 #1
0
        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));
        }