using System.Diagnostics;

namespace WorkFlowCheck.BL.DocumentGenerator
{
    public class DokumentumGenerator
    {
        public static byte[] DocxToPdfL(byte[] wordBytes)
        {
            string pdfDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Pdf");
            string fileName = Guid.NewGuid().ToString();

            string tempWordPath = Path.Combine(pdfDirectory, fileName + ".docx");
            string tempPdfPath = Path.Combine(pdfDirectory, fileName + ".pdf");

            try
            {
                // Word fájl mentése ideiglenes fájlba
                File.WriteAllBytes(tempWordPath, wordBytes);

                // LibreOffice parancssori konverzió
                ProcessStartInfo startInfo = new ProcessStartInfo
                {
                    FileName = "e:\\LibreOffice\\program\\soffice", // LibreOffice parancs
                    Arguments = $"--headless --convert-to pdf \"{tempWordPath}\" --outdir \"{pdfDirectory}",
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                    CreateNoWindow = true
                };

                using (Process process = Process.Start(startInfo))
                {
                    process.WaitForExit();
                }

                // Ellenőrzés, hogy létrejött-e a PDF
                if (File.Exists(tempPdfPath))
                {
                    byte[] pdfBytes = File.ReadAllBytes(tempPdfPath);

                    // Ideiglenes fájlok törlése
                    File.Delete(tempWordPath);
                    File.Delete(tempPdfPath);

                    return pdfBytes;
                }
                else
                {
                    throw new Exception("PDF konverzió sikertelen.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Hiba a PDF konverzió során: " + ex.Message);
                return null;
            }
        }

    }
}
