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));
        }