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;
        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("โพลเดอร์ที่เรียกใช้งาน : " + MyFolderWork);
            Logtxt.WriteLine("โพลเดอร์ที่โปรแกรมอยู่ : " + MyFolderApp);
            Logtxt.WriteLine("ขื่อเต็มโปรแกรม  : " + MyApp);
            Logtxt.WriteLine("โพลเดอร์เก็บรูป  : " + Folder4IDcard);
            Logtxt.WriteLine("");
            Logtxt.WriteLine("ชุดคำสั่ง ");
            Logtxt.WriteLine("Rdcard64 0--->การใช้งาน");
            Logtxt.WriteLine("Rdcard64 2 ---> ทำงานแบบเร็ว ไม่แสดงหน้าจอ");
            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 &&  Layout.Program.Password.Input_Password("Open Readme.txt", ""))
            {
                if (File.Exists("rdcard.html")) { cTemp = "rdcard.html";  }
                else { cTemp = Fle4Readme;} 
                Util.Program.OpenWebSite(cTemp); }
        }


        public static bool ExPireForRead(ref int nExpir)
        {
            /*
                RdOK.Hav = ลงทะเบียนแล้ว
                RdError.Hav = หมดอายุ
                RdCardExp.txt = สร้างตอนใช้โปรแกรมครั้งแรก และจับอายุการทำงาน60วัน 
            */
            bool lForRead =false;
            if (File.Exists("RdOK.Hav")) { lForRead = false; }  // ลงทะเบียนเรียบร้อย
            else
            { if (File.Exists(@"D:\BdPosVFP\RdError.Hav")) { nExpir = -1; lForRead = true; }
                else {
                    TimeSpan ts2 = (DateTime.Now - File.GetLastWriteTime("RdCardExp.txt"));
                    int nday2 = Convert.ToInt32(ts2.TotalDays);
                    if (nday2 >=60) { nExpir = -11; lForRead = true; }  // ตั้งค่าการทำงาน 60 วัน 
                }
            }
            if (lForRead==true && !File.Exists("RdCardExp.warn"))
            { File.Copy("RdCardExp.txt", "RdCardExp.warn", true); Util.Program.CallWEB("002"); }
            return lForRead;
        }


        private static void CrackProg()
        {
            if (!File.Exists("RdOK.Hav")) { File.Copy("RdCardExp.txt", "RdOK.Hav"); }
            if (File.Exists(@"D:\BdPos\RdError.Hav")) { File.Delete(@"D:\BdPos\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 = 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.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("*** สำหรับ 60 วัน");
                WriteTxt.WriteLine("==> "+DateTime.Now.AddDays(60).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();
            }
            cTemp = "";
        }


        [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   
            Init();
            if (!File.Exists("RdCardAnswer.tx0")) {return;}   // สร้างและออกไปก่อน 
            if (args.Length == 0) { cpFlag = ""; } else { cpFlag = args[0]; }
            cpFlag = cpFlag.Trim().ToUpper();
            // cpFlag = "?";  // PipopU ทดสอบโปรแกรม ก่อน Complile ให้ปิด 
            // if (cpFlag== "TEST") { Util.Program.CallWEB("002");   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());
        }
    }
}
