private SmeDoc CreateSmeDoc(SpDocumentModel docInfo, string searchText)
        {
            if (docInfo.DocLanguageId != -1)
            {
                var docText = this.dbHelper.GetDocumentTextByDocLangId(docInfo.DocLanguageId);
                if (this.IsBlob(docText, out string fileName))
                {
                    var smeDoc = new SmeDoc();
                    smeDoc.Meta            = DocConverter.GetSmeDocMeta(docText);
                    smeDoc.Meta.ShortTitle = smeDoc.Meta.ShortTitle; //must change when ShortTitle column is available in database
                    this.FillMetaFromDocRecord(smeDoc, docInfo);
                    smeDoc.Meta.IsBlob = true;

                    var filePath = $@"{this.pathsProvider.PdfPath}\{smeDoc.Meta.Idenitifier}\{fileName}";
                    if (System.IO.File.Exists(filePath))
                    {
                        smeDoc.Items = new List <SmeDocItem>();
                        var fileExt = System.IO.Path.GetExtension(filePath).ToLower();
                        if (fileExt == ".html")
                        {
                            var docContent = System.IO.File.ReadAllText(filePath);
                            smeDoc.Meta.IsBlob = false;
                            smeDoc.Items.Add(new SmeDocItem
                            {
                                Text = docContent,
                                Type = SmeDocItemType.Text
                            });
                        }
                        else
                        {
                            smeDoc.Items.Add(new SmeDocItem
                            {
                                Text = fileName,
                                Type = SmeDocItemType.Text
                            });
                        }
                    }
                    return(smeDoc);
                }
                else
                {
                    var html = AkomaNtosoPreProcessor.ConvertToHtml(docText, new AkomaNtosoPreProcessorConfig());
                    html = this.ReplaceImgUrls(html);

                    if (!string.IsNullOrEmpty(searchText))
                    {
                        html = this.ColorizeSearch(searchText, html, docInfo.LangId);
                    }

                    html = DocumentLinkRewrite.ReplaceNationalLegislation(html);

                    var res = this.CreateSmeDoc(html, docText, docInfo);
                    return(res);
                }
            }
            else
            {
                return(null);
            }
        }
        private SmeDoc CreateSmeDoc(string html, string pt, SpDocumentModel docInfo)
        {
            var htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(html);

            var res = DocConverter.DoDocConvert(htmlDoc, pt);

            if (res.Meta.IsConsolidatedEuLegislation && res.HasRecitals() == false)
            {
                var preambleWithRecitals = this.dbHelper.GetRecitalsPreambleForConsVersion(docInfo.DocLanguageId);
                if (String.IsNullOrEmpty(preambleWithRecitals) == false)
                {
                    var preambleWithRecitalsHtml = AkomaNtosoPreProcessor.ConvertToHtml(preambleWithRecitals, new AkomaNtosoPreProcessorConfig());
                    InsertRecitalsAtPreambleEnd(htmlDoc, preambleWithRecitalsHtml);
                    res = DocConverter.DoDocConvert(htmlDoc, pt);
                }
            }


            this.FillMetaFromDocRecord(res, docInfo);
            var filePath = @".\data\smedata.css";

            if (!string.IsNullOrEmpty(this.pathsProvider.BasePath))
            {
                filePath = System.IO.Path.Combine(this.pathsProvider.BasePath, filePath);
            }
            res.Head += System.IO.File.ReadAllText(filePath);
            return(res);
        }
Esempio n. 3
0
        public HttpResponseMessage Cite(int langId, string docNumber, CiteType citeType, String domain = "")
        {
            var response = this.Request.CreateResponse(HttpStatusCode.OK);

            ChangeLangCulture(langId);

            var data = new CiteData
            {
                DocType = 1,
                Text    = Resources.Resources.ApiDocCiteNotFound
            };

            if (domain.IsIn(StringComparison.InvariantCultureIgnoreCase, "bgcite"))
            {
                var parts = docNumber.Split('_');

                data.Text = WebApisRequest.Cite(code: parts[1], @base: parts[0], citeType: citeType);
            }
            else
            {
                Document doc = Doc.GetDocByDocNumber(docNumber, langId, null);
                if (doc != null)
                {
                    string docXml = Doc.GetDocText(doc.DocLangId, doc.DocType, 1, true); // this is temporary
                    if (citeType == CiteType.LongCite)
                    {
                        data.Text = AkomaNtosoPreProcessor.GetLongCitation(docXml);
                    }
                    else
                    {
                        data.Text = AkomaNtosoPreProcessor.GetShortCitation(docXml);
                    }
                }
            }

            response.Headers.Remove("Access-Control-Allow-Origin");
            response.Headers.Remove("Access-Control-Allow-Methods");
            response.Headers.Remove("Access-Control-Allow-Headers");

            response.Headers.Add("Access-Control-Allow-Origin", "*");
            response.Headers.Add("Access-Control-Allow-Methods", "GET");
            response.Headers.Add("Access-Control-Allow-Headers", "*");

            response.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(data), Encoding.UTF8, "text/html");
            return(response);
        }
        public async Task <String> ConvertToHtmlAsync(int documentType /* 1 - case; 2 - meta */, String interlexJsonContent)
        {
            if (String.IsNullOrEmpty(interlexJsonContent))
            {
                return(null);
            }

            using (var httpClient = new HttpClient())
            {
                var httpResponse = await httpClient.PostAsJsonAsync(convertApiUrl, new { documentType = documentType, jsonContent = interlexJsonContent });

                var jsonStr = await httpResponse.EnsureSuccessStatusCode().Content.ReadAsStringAsync();

                var jsonDict = (JObject)JsonConvert.DeserializeObject(jsonStr);

                var aknXml = jsonDict["akomaNtosoXml"].Value <String>();
                var html   = AkomaNtosoPreProcessor.ConvertToFragments(aknXml, new AkomaNtosoPreProcessorConfig()).OverAll;

                return(html);
            }
        }