Esempio n. 1
0
        /// <summary>
        /// original method
        /// </summary>
        /// <param name="documentMetadata"></param>
        /// <param name="destinationPath"></param>
        //public void CopyToOutput(DocumentMetadata documentMetadata, List<FinalMetadata> originFiles)
        //{
        //    //TODO SPLIT FOLDER BY ADMISSION NUMBER DULU GAN,
        //    //ABIS ITU BARU BIKIN COPY FILENYA MASUK
        //    //DIDALEM TRY MUSTI DIGANTI SEMUA WKWAKKWAKWAKAW
        //    try
        //    {
        //        var allAdmissionNo = documentMetadata.DocumentTypes
        //            .Where(x => x.AdmissionNo != null)
        //            .Select(x => x.AdmissionNo).Distinct().ToList();

        //        var folderAdmission = string.Join("_", allAdmissionNo);

        //        var outputFolder = _folderConfig.Output;

        //        var destFolder = Path.Combine(outputFolder, "AdmissionNo", folderAdmission);

        //        var outputFileName = string.Join("_", documentMetadata.Unit);

        //        var outputFilePath = Path.Combine(destFolder, outputFileName);


        //        if (!allAdmissionNo.Any())
        //        {
        //            destFolder = Path.Combine(outputFolder, "UNKOWN");
        //            outputFilePath = Path.Combine(destFolder, outputFileName);
        //            Directory.CreateDirectory(destFolder);

        //            if (!Directory.Exists(destFolder))
        //            {
        //                Directory.CreateDirectory(destFolder);
        //            }
        //        }

        //        if (!Directory.Exists(destFolder))
        //        {
        //            Directory.CreateDirectory(destFolder);
        //        }

        //        foreach (var file in originFiles)
        //        {
        //            var filename = Path.GetFileName(file.LocalFilePath);
        //            outputFileName = string.Join("_", documentMetadata.Unit, filename);
        //            outputFilePath = Path.Combine(destFolder, outputFileName);
        //            File.Copy(file.LocalFilePath, outputFilePath, true);

        //            //Save Json File
        //            MetadataToOutput(documentMetadata, outputFilePath);

        //            //disini nanti kasih return full collection metadata
        //            _logger.LogInformation(Path.Combine(destFolder, outputFilePath));

        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        _logger.LogError(ex.Message);
        //        throw ex;
        //    }
        //}

        private void MetadataToOutput(FinalMetadata finalMetadata, string destinationPath)
        {
            using (StreamWriter file = new StreamWriter(destinationPath + ".txt"))
            {
                file.Write(finalMetadata.JsonExtension());
            }
        }
        public static string JsonExtension(this FinalMetadata finalMetadata)
        {
            string metadataJson = JsonConvert.SerializeObject(finalMetadata, Formatting.Indented,
                                                              new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
            });

            return(metadataJson);
        }
Esempio n. 3
0
        public List <FinalMetadata> SplitPDF(DocumentMetadata documentMetadata, string originFile)
        {
            //Parsing data buat ambil range page tiap jenis dokumen
            //var pageRange = documentMetadata.DocumentTypes.ToDictionary(); bakal dihapus

            //Test metdos
            var testexten = documentMetadata.DocumentTypes.ToDictionaryAll();

            //test
            //var testexten = documentMetadata.DocumentTypes.ToDictionaryX();



            // bikin list kosong buat nampung
            var result = new List <FinalMetadata>();

            var resultFolder = Path.Combine(_folderConfig.SplitPdf, Path.GetFileNameWithoutExtension(documentMetadata.FileName));


            if (!Directory.Exists(resultFolder))
            {
                Directory.CreateDirectory(resultFolder);
            }

            foreach (var item in testexten)
            {
                var outputName   = item.Key + ".pdf";
                var outputFolder = Path.Combine(resultFolder, outputName);
                var semuaPages   = item.Value.Select(x => x.Page);
                var admision     = item.Value.Select(x => x.AdmissionNo).FirstOrDefault();
                var invoiceNo    = item.Value.Select(x => x.InvoiceNo).FirstOrDefault();

                ProcessStartInfo pdftkSplit = new ProcessStartInfo()
                {
                    FileName  = "cmd.exe",
                    Arguments = String.Format(@"/c pdftk ""{0}"" cat {1} output ""{2}""",
                                              originFile, String.Join(' ', semuaPages), outputFolder),
                    RedirectStandardOutput = true,
                    UseShellExecute        = false,
                };

                Process pdfSplit = Process.Start(pdftkSplit);
                var     messageFromCommandLine = pdfSplit.StandardOutput.ReadToEnd();
                (messageFromCommandLine.Any() ? new Action(() => _logger.LogWarning(messageFromCommandLine)) : () => _logger.LogInformation("Run"))();
                _logger.LogInformation("dokumen split done");

                //kasih return metadata. bikin disini, jenis return finalMetadata
                var finalMetadata = new FinalMetadata()
                {
                    DateInsert    = documentMetadata.DateInsert,
                    FileName      = outputName,
                    AdmissionNo   = admision,
                    InvoiceNo     = invoiceNo,
                    LocalFilePath = outputFolder,
                    DocumentType  = item.Key.Split('_').ToList()[1],
                    TotalPages    = item.Value.Count(),
                    Unit          = documentMetadata.Unit
                };

                result.Add(finalMetadata);
            }

            return(result);
        }