public IActionResult GenerateDocument([Bind("DocId, InputText, OutputType")] SvgDocumentForm svgDocument) { Dictionary <string, string[]> jsonInput; int documentId = svgDocument.DocId; try { jsonInput = DataExtractor.GetJsonData(svgDocument.InputText); } catch (Exception e) { var error = e.Message; return(Content(error)); } var document = _context.SvgDocuments.Find(documentId); string path = _hostingEnvironment.WebRootPath + document.DocumentPath; int max = jsonInput.First().Value.Length; int index = 0; List <ZipItem> outputFiles = new List <ZipItem>(); foreach (var item in jsonInput) { int currentLength = item.Value.Length; if (currentLength != max) { var error = "Value array error in column: " + item.Key + ". Expected length: " + max + ", current length: " + currentLength; return(Content(error)); } } for (int i = 0; i < max; i++) { SvgDocumentEditModel model = new SvgDocumentEditModel() { TemplateDocumentPath = path, ElementName = "text", Attribute = "id", ValueIndex = index, ElementsForSubstitution = jsonInput }; index++; MemoryStream readySvgDocument = SvgEditor.GenerateSvgDocument(model); //MemoryStream jpegDocument = SvgEditor.SvgToJpeg(readySvgDocument); ZipItem zipItem = new ZipItem("Document" + index + ".svg", readySvgDocument); outputFiles.Add(zipItem); //jpegDocument.Close(); //readySvgDocument.Close(); } var resultZip = Zipper.Zip(outputFiles); return(File(resultZip, "application/octet-stream", "Documents.zip")); }
public IActionResult Index(string id) { if (string.IsNullOrEmpty(id)) { return(NotFound()); } if (int.TryParse(id, out int docId)) { SvgDocument document = _context.SvgDocuments.Where(x => x.ID == docId).FirstOrDefault(); if (document != null) { ViewData["DocumentDetails"] = document; } else { return(NotFound()); } List <SvgElement> documentElements = _context.SvgElements .Where(x => x.DocumentId == docId && x.IsActive).ToList(); Dictionary <string, string[]> exampleJsonDict = new Dictionary <string, string[]>(); int numOfExamples = 5; for (int i = 0; i < documentElements.Count; i++) { string[] examples = new string[numOfExamples]; for (int j = 0; j < numOfExamples; j++) { examples[j] = "example" + j; } exampleJsonDict.Add(documentElements[i].AttributeName, examples); } ViewData["ExampleJson"] = DataExtractor.GetJsonString(exampleJsonDict); } else { return(NotFound()); } SvgDocumentForm model = new SvgDocumentForm { DocId = docId }; return(View(model)); }