public IHttpActionResult PostOntology(Ontology_ApiRequestCreateModel ontologyRequestModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var idUser = _userIdentityService.Id;

            var ontology = _mapper.Map <Ontology>(ontologyRequestModel);

            ontology.Xml = ontology.Xml.Replace("%26", "&");
            ontology.Xml = ontology.Xml.UnescapeXml();

            var ontologyName = _ontologyService.GetOntologyNameFromXml(ontology);

            var ontologyAlreadyExists = _ontologyService.CheckIfOntologyAlreadyExists(ontologyName);

            if (ontologyAlreadyExists)
            {
                ontology = _ontologyService.GetByOntologyName(ontologyName);

                if (ontology.IdOwnerUser == idUser)
                {
                    return(Content(System.Net.HttpStatusCode.Conflict, "The ontology already exists for this user."));
                }

                var ontologyAlreadySharedWithUser = _ontology_UserService.CheckIfOntologyIsAlreadySharedWithUser(idUser);

                if (ontologyAlreadySharedWithUser)
                {
                    return(Content(System.Net.HttpStatusCode.Conflict, "The ontology already exists for this user."));
                }

                var ontology_User = new Ontology_User {
                    IdOntology = ontology.Id, IdSharedUser = idUser
                };

                var count = _ontology_UserService.Create(ontology_User);

                _ontologyService.ParseXml(ontology);
            }
            else
            {
                ontology.IdOwnerUser  = idUser;
                ontology.OntologyName = ontologyName;

                var count = _ontologyService.Create(ontology);
            }

            var ontologyResponseModel = _mapper.Map <Ontology_ApiResponseViewModel>(ontology);

            return(Ok(ontologyResponseModel));
        }
Example #2
0
        public async Task <ActionResult> UploadOntologyFile(string stringByteArray)
        {
            #region Set authorization to API calls

            SetAuthorizationToAPICalls();

            #endregion Set authorization to API calls

            #region Get Ontologies Cookie

            string[] ontologiesCookie = null;

            var cookie = GetCookie(GRASEWS_ONTOLOGIES_OPENED_COOKIE);

            if (cookie != null)
            {
                ontologiesCookie = cookie.Value.Split(',');
            }

            #endregion Get Ontologies Cookie

            #region Read uploaded file

            var fileContent = ReadUploadedFile(stringByteArray);

            #endregion Read uploaded file

            #region Save ontology

            var postOntologyRequestBody = new Ontology_ApiRequestCreateModel {
                Xml = fileContent
            };
            var postOntologyRequest = CreateApiRequest("api/ontologies", HttpMethodENUM.POST, "application/x-www-form-urlencoded");
            postOntologyRequest.AddRequestBodyParameter(postOntologyRequestBody);
            var postOntologyResponse = await _apiRestClient.ExecuteAsync <Ontology_ApiResponseViewModel>(postOntologyRequest);

            #endregion Save ontology

            if (postOntologyResponse.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var ontology = postOntologyResponse.Data;

                #region Get html for the tree view menu

                var htmlTreeViewMenuRequest  = CreateApiRequest($"api/ontologies/{ontology.Id}/html/tree-view-menu", HttpMethodENUM.GET, "application/x-www-form-urlencoded");
                var htmlTreeViewMenuResponse = await _apiRestClient.ExecuteAsync <string>(htmlTreeViewMenuRequest);

                var htmlTreeViewMenu = htmlTreeViewMenuResponse.Data;

                ontology.HtmlTreeViewMenu = htmlTreeViewMenu;

                #endregion Get html for the tree view menu

                #region Create cookie with ontologies (ids) opened

                var ontologiesForCookie = new List <string>();
                if (ontologiesCookie != null && ontologiesCookie.Length > 0)
                {
                    ontologiesForCookie.AddRange(ontologiesCookie.ToList());
                }
                ontologiesForCookie.Add(ontology.Id.ToString());

                SetCookie(GRASEWS_ONTOLOGIES_OPENED_COOKIE, string.Join(",", ontologiesForCookie));

                #endregion Create cookie with ontologies (ids) opened

                return(Json(new { ontology }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new { message = postOntologyResponse.Content }, JsonRequestBehavior.AllowGet));
        }