using System;
using System.IO;
using System.Windows.Forms;
using System.Linq;

// V:
// Cd\_My Cloud\MEGAsync\C#\NIDCardCS
// Cd\_My Cloud\MEGAsync\C#\NIDCardCS\bin\Debug

namespace NIDCardCS
{
    static class Program
    {
        public static string MyProg="RdCard";
        public static string Folder4IDcard = @"บัตรประชาชน\";
        public static string History4IDcard = Folder4IDcard+"History.txt";
        public static string History4IDcardR = Folder4IDcard + "HistoryR.txt";
        public static string cpFlag = "";
        public static bool insource=false;
        public static bool inharddisk=false;
        public static bool instep=false;
        private static string MyFolderWork = System.IO.Directory.GetCurrentDirectory();  // โพลเดอร์ที่เรียกใช้งาน
        private static string MyFolderApp = Path.GetDirectoryName(Application.ExecutablePath); // โพลเดอร์ที่โปรแกรมอยู่
        private static string MyApp = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; // ขื่อเต็มโปรแกรม
        private static string cTemp;

        static void Readme(int nOption)
        {
            string Fle4Readme = MyFolderApp+@"\" + MyProg + "Readme.txt";
            string[] readText;
            TextWriter Logtxt = new StreamWriter(Fle4Readme);
            Logtxt.WriteLine(MyProg + ".exe  ,DT : " + File.GetLastWriteTime(MyApp).ToString("dd/MM/yy HH:mm"));
            Logtxt.WriteLine("");
            Logtxt.WriteLine("Rdcardstep.hav สำหรับ Debug โปรแกรม");
            Logtxt.WriteLine("");
            Logtxt.WriteLine("โพลเดอร์ที่เรียกใช้งาน : " + MyFolderWork);
            Logtxt.WriteLine("โพลเดอร์ที่โปรแกรมอยู่ : " + MyFolderApp);
            Logtxt.WriteLine("ขื่อเต็มโปรแกรม  : " + MyApp);
            Logtxt.WriteLine("โพลเดอร์เก็บรูป  : " + Folder4IDcard);
            Logtxt.WriteLine("");
            Logtxt.WriteLine("ชุดคำสั่ง ");
            Logtxt.WriteLine("Rdcard64 ? --->การใช้งาน");  // Pipop
            Logtxt.WriteLine("Rdcard64 2 ---> ทำงานแบบเร็ว ไม่แสดงหน้าจอ");
            Logtxt.WriteLine("Rdcard64 L ---> ทำงานแบบวน");
            Logtxt.WriteLine("Rdcard64 9 ---> แครกโปรแกรม");
            Logtxt.WriteLine(""); Logtxt.WriteLine("");

            cTemp = "RdCardInfo.txt";
            if (File.Exists(cTemp))
            {
                Logtxt.WriteLine(cTemp + " ,DT:" + File.GetLastWriteTime(cTemp).ToString("ddd, dd MMM yyy HH:mm:ss"));
                Logtxt.WriteLine("**********");
                readText = File.ReadAllLines(cTemp);
                foreach (string s in readText) { if (s != "") { Logtxt.WriteLine(s.Trim()); } }
                Logtxt.WriteLine(""); Logtxt.WriteLine("");
            }

            cTemp = "RdCard.ini";
            if (File.Exists(cTemp))
            {
                Logtxt.WriteLine(cTemp + " ,DT:" + File.GetLastWriteTime(cTemp).ToString("ddd, dd MMM yyy HH:mm:ss"));
                Logtxt.WriteLine("**********");
                readText = File.ReadAllLines(cTemp);
                foreach (string s in readText) { if (s != "") { Logtxt.WriteLine(s.Trim()); } }
                Logtxt.WriteLine(""); Logtxt.WriteLine("");
            }

            cTemp = "RdCardExp.txt";
            if (File.Exists(cTemp))
            {
                Logtxt.WriteLine(cTemp + " ,DT:" + File.GetLastWriteTime(cTemp).ToString("ddd, dd MMM yyy HH:mm:ss"));
                Logtxt.WriteLine("**********");
                readText = File.ReadAllLines(cTemp);
                foreach (string s in readText) { if (s != "") { Logtxt.WriteLine(s.Trim()); } }
                Logtxt.WriteLine(""); Logtxt.WriteLine("");
            }

            cTemp = "xxxx.txt";
            if (File.Exists(cTemp))
            {
                Logtxt.WriteLine(cTemp+" ,DT:" + File.GetLastWriteTime(cTemp).ToString("ddd, dd MMM yyy HH:mm:ss"));
                Logtxt.WriteLine("**********");
                readText = File.ReadAllLines(cTemp);
                foreach (string s in readText) { if (s != "") { Logtxt.WriteLine(s.Trim()); } }
                Logtxt.WriteLine(""); Logtxt.WriteLine("");
            }
            Logtxt.Close(); Logtxt.Dispose();
            cTemp = "";
            if (nOption == 1)
            {
                cTemp = MyFolderApp + "\\rdcard.html";
                if (File.Exists(cTemp)) { Util.Program.OpenWebSite(cTemp); }
            }
                cTemp = "";
        }

        

        private static void CrackProg()
        {
            if (!File.Exists("RdOK.Hav")) {File.Copy("RdCardExp.txt", "RdOK.Hav"); }
            if (File.Exists(@"D:\BdPosVFP\RdError.Hav")) { File.Delete(@"D:\BdPosVFP\RdError.Hav"); Util.Program.Pok_Mess("ลบไฟล์ Error สำเร็จ"); }
        }


        private static void Init()
        {
            if (File.Exists(@"D:\BdPosVFP\hoVFP.exe") || Directory.Exists(@"R:\Temp"))
            {
                Folder4IDcard = @"\" + Folder4IDcard;  //  \บัตรประชาชน\
                History4IDcard = Folder4IDcard + "History.txt";
                History4IDcardR = Folder4IDcard + "HistoryR.txt";
            }
            cTemp = "_Card\\ReadError.jpg"; if (File.Exists(cTemp)) { File.Delete(cTemp); }
            cTemp = "_card"; if (!Directory.Exists(cTemp)) { Directory.CreateDirectory(cTemp); }
            cTemp = "Temp"; if (!Directory.Exists(cTemp)) { Directory.CreateDirectory(cTemp); }
            cTemp = "\\Temp"; if (!Directory.Exists(cTemp)) { Directory.CreateDirectory(cTemp); }
            cTemp = Folder4IDcard;
            if (!Directory.Exists(cTemp))
            {
                Directory.CreateDirectory(cTemp);
                cTemp = Folder4IDcard + "History"; if (!Directory.Exists(cTemp)) { Directory.CreateDirectory(cTemp); }
                TextWriter WriteTxt;
                if (!File.Exists("RdCard.ini"))
                {  // เก็บชื่อบริษัทสำหรับแสดงทางรูป 
                    WriteTxt = new StreamWriter("RdCard.ini");
                    // WriteTxt.WriteLine("1           imgOption  1=Full Screen 2=Corp Screen");
                    WriteTxt.WriteLine("1           xSaveText  เก็บเป็นข้อความ");
                    WriteTxt.WriteLine("1           xSaveFace  เก็บรูปหน้า");
                    WriteTxt.WriteLine("1           xSaveDeskT  เก็บDeskTop");
                    WriteTxt.WriteLine("0           xFirst  ตัดเลื่อนแนวตั้งซ้าย");
                    WriteTxt.WriteLine("0           xLast  ขยับจากทางซ้าย");
                    WriteTxt.WriteLine("0           yFirst  ขยับขึ้นบน");
                    WriteTxt.WriteLine("0           yLast  ตัดล่าง");
                    WriteTxt.WriteLine("694        fwidth กว้าง");  // 0
                    WriteTxt.WriteLine("417        fheight ยาว");  // 0
                    WriteTxt.WriteLine("             เลือกการ์ด 0=ใบที่1 ,1=ใบที่2");
                    WriteTxt.Close();
                }
                if (!File.Exists("RdCardInfo.txt"))
                {  // เก็บชื่อบริษัทสำหรับแสดงทางรูป
                    WriteTxt = new StreamWriter("RdCardInfo.txt");
                    WriteTxt.WriteLine("บริษัท ทดสอบ จำกัด");
                    WriteTxt.WriteLine("");
                    WriteTxt.Close();
                }
                if (!File.Exists("RdCardAnswer.tx0"))
                {  //  RdCardAnswer.txt สำหรับส่งข้อมูลไปมา ระหว่าง FOX กับ C#
                    WriteTxt = new StreamWriter("RdCardAnswer.tx0");
                    WriteTxt.WriteLine("0           1=ตกลง,2=ยกเลิก");
                    WriteTxt.Close();
                }
                if (!File.Exists("RdCardExp.txt"))
                { // เก็บวันหมดอายุ 
                    Util.Program.CallWEB("001");
                    WriteTxt = new StreamWriter("RdCardExp.txt");
                    WriteTxt.WriteLine("@เริ่มเปิดใช้โปรแกรม " + Util.Program.DTN(4));
                    WriteTxt.WriteLine("*** สำหรับ 6000 วัน");
                    WriteTxt.WriteLine("==> " + DateTime.Now.AddDays(6000).ToString("ddd, dd MMM yyy HH:mm:ss"));
                    WriteTxt.WriteLine("ExPireForRead In Form1.cs");
                    WriteTxt.WriteLine("======================");
                    WriteTxt.Close();
                }
                // History4IDcard เก็บบันทึกประวัติการทำงาน
                if (File.Exists(History4IDcard)) // ไว้ลบไฟล์เพื่อสร้างใหม่ กรณีไฟล์ใหญ่เกินไป
                { if (File.ReadAllLines(History4IDcard).Count() > 102) { File.Delete(History4IDcard); } }
                if (!File.Exists(History4IDcard))
                {
                    WriteTxt = new StreamWriter(History4IDcard);
                    WriteTxt.WriteLine("@สร้าง " + Util.Program.DTN(4));
                    WriteTxt.WriteLine("======================");
                    WriteTxt.Close();
                }
            }
            if (File.Exists("Rdcardstep.hav")) { instep = true; Util.Program.instep("Program.cs-175", "พบไฟล์ Rdcardstep.hav");}
            cTemp = "";
        }


        private static void TEST() {
            Util.Program.OpenWebSite("https://buddysoftware.net/uyoddotnet.html");
        }


        [STAThread]
        static void Main(string[] args)
        {
            if (MyApp.Substring(0,2) == "V:") { insource = true; } // Run กับ Source
            if (Directory.Exists(@"R:\Temp")) { inharddisk = true; }  // Run กับ Harddisk   
            if (File.Exists(@"_Card\Face.jpg")) { File.Delete(@"_Card\Face.jpg");}
            Init();
            // สร้างและออกไปก่อน 
            if (!File.Exists("RdCardAnswer.tx0")) { Layout.Program.LayOut.ScreenShow(8, "ไม่พบไฟล์ ", "RdCardAnswer.tx0", "กรุณาตรวจสอบ", "", ""); return; }
            if (args.Length == 0) {cpFlag = ""; } else { cpFlag = args[0]; }
            cpFlag = cpFlag.Trim().ToUpper();
            cpFlag = "";  // PipopU ทดสอบโปรแกรม ก่อน Complile ให้ปิด 
            Util.Program.instep("Program.cs-197", "cpFlag = "+cpFlag);
            if (cpFlag== "TEST") {TEST(); return;}
            switch (cpFlag)
            {
                case ("X"): return;
                case ("?"): case ("0"): Readme(1); return; // ไว้แสดงข้อความ
                case ("2"): break; // ทำงานแบบ ฝั่งตัว ไม่ต้องกด OK
                case ("L"): break; // เป็นการทำงานแบบวนบูบไปเรื่อยๆ Pipop
                case ("9"): CrackProg(); return; //  ปลดล็อคโปรแกรมเพื่อให้ทำงานได้ 
            }
            if (!File.Exists(MyFolderApp + @"\" + MyProg + "Readme.txt")) {Readme(0);}
            if (File.Exists(Folder4IDcard+"นาย พิภพ  อยู่ยอด.jpg")) {File.Delete(Folder4IDcard + "นาย พิภพ  อยู่ยอด.jpg"); } 
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
            Util.Program.instep("Program.cs-212", "Finnish");
        }
    }
}
