public IHttpActionResult PostServiceDescription(ServiceDescription_ApiRequestCreateModel serviceDescriptionRequestModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var idUser = _userIdentityService.Id;

            var serviceDescription = _mapper.Map <ServiceDescription>(serviceDescriptionRequestModel);

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

            serviceDescription.IdOwnerUser = idUser;

            var count = _serviceDescriptionService.Create(serviceDescription);

            var serviceDescriptionResponseModel = _mapper.Map <ServiceDescription_ApiResponseViewModel>(serviceDescription);

            return(Ok(serviceDescriptionResponseModel));
        }
Beispiel #2
0
        public async Task <ActionResult> UploadServiceDescriptionFile(string stringByteArray, string filename)
        {
            var isServiceDescriptionAlreadyOpened = false;
            var isServiceDescriptionAlreadySaved  = false;

            #region Set authorization to API calls

            SetAuthorizationToAPICalls();

            #endregion Set authorization to API calls

            #region Get Service Descriptions Cookie

            string[] serviceDescriptionsCookie = null;

            var cookie = GetCookie(GRASEWS_SERVICEDESCRIPTIONS_OPENED_COOKIE);

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

            #endregion Get Service Descriptions Cookie

            #region Check if the service description is already in database and if the service description is already opened (cookies)

            var allServiceDescriptionsRequest        = CreateApiRequest("api/service-descriptions", HttpMethodENUM.GET, "application/x-www-form-urlencoded");
            var serviceDescriptionCollectionResponse = await _apiRestClient.ExecuteAsync <ServiceDescriptionCollection_ApiResponseViewModel>(allServiceDescriptionsRequest);

            if (serviceDescriptionCollectionResponse.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var serviceDescriptions            = serviceDescriptionCollectionResponse.Data;
                var serviceDescriptionAlreadySaved = serviceDescriptions.ServiceDescriptionViewModels.FirstOrDefault(x => x.ServiceName.ToUpper() == filename.ToUpper());
                isServiceDescriptionAlreadySaved = serviceDescriptionAlreadySaved != null;

                if (isServiceDescriptionAlreadySaved)
                {
                    if (serviceDescriptionsCookie?.Length > 0)
                    {
                        isServiceDescriptionAlreadyOpened = serviceDescriptionsCookie.Any(x => x == serviceDescriptionAlreadySaved.Id.ToString());
                    }
                }
            }

            if (isServiceDescriptionAlreadyOpened)
            {
                return(Json(new { message = "Service Description is already opened." }, JsonRequestBehavior.AllowGet));
            }

            if (isServiceDescriptionAlreadySaved)
            {
                return(Json(new { message = "Service Description has already been saved in the user's repository. Please, use the Saved Service Description instead of the New Service Description menu." }, JsonRequestBehavior.AllowGet));
            }

            #endregion Check if the service description is already in database and if the service description is already opened (cookies)

            #region Read uploaded file

            var fileContent = ReadUploadedFile(stringByteArray);

            #endregion Read uploaded file

            #region Save Service Description

            var model = new ServiceDescription_ApiRequestCreateModel {
                ServiceName = filename, Xml = fileContent
            };
            var saveServiceDescriptionRequest = CreateApiRequest("api/service-descriptions", HttpMethodENUM.POST, "application/x-www-form-urlencoded");
            saveServiceDescriptionRequest.AddRequestBodyParameter(model);
            var serviceDescriptionResponse = await _apiRestClient.ExecuteAsync <ServiceDescription_ApiResponseViewModel>(saveServiceDescriptionRequest);

            var serviceDescription = serviceDescriptionResponse.Data;

            #endregion Save Service Description

            #region Get html for the tree view menu

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

            var htmlTreeViewMenu = htmlTreeViewMenuResponse.Data;

            serviceDescription.HtmlTreeViewMenu = htmlTreeViewMenu;

            #endregion Get html for the tree view menu

            #region Create cookie with service descriptions (ids) opened

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

            SetCookie(GRASEWS_SERVICEDESCRIPTIONS_OPENED_COOKIE, string.Join(",", serviceDescriptionsForCookie));

            #endregion Create cookie with service descriptions (ids) opened

            SetCookie(GRASEWS_SERVICEDESCRIPTION_ON_VIEW_COOKIE, serviceDescription.Id.ToString());

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