using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;

// 2015.8.20
// 시운전하고 , 프로젝트를 관리하는 사람들이 사용하도록 프로그램을 구성한다
// 닷넷프레임워크는 2.0 (이전 버전도 적용해야되므로)
// 1. 현재 동작중인 프로그램 종료
// 2. 이벤트로그 데이타 삭제
// 3. 레지스트리값에 최신 작업내역을 쓰고, 세부 내용은 별도의 텍스트 로그로 남겨놓는다

// 2016.11.24
// 수신기 형식 인증을 위해 아래와 같이 프로그램을 준비한다
// 시운전프로그램 준비 -> 동글인식해야 프로그램가동 + 데이타베이스 교체 -> 로그인 (사용자계정이 별도로 있음) -> 사유기록-> 사용기록파일을 남기도록 함
namespace IControls_FireManager
{
    public partial class Login : Form
    {
        string user_ini_path = "C:\\fireguard\\";

        public Login()
        {
            InitializeComponent();

            // 동글락키 체크
            bool CheckDongle = _RockeyDll2.DonggleCheck();
            if (CheckDongle == false)
            {
                MessageBox.Show("USB Rockey Not Find!");
                Environment.Exit(0);
            }

            // fireguard 폴더를 생성한다
            if (!System.IO.Directory.Exists(user_ini_path))
            {
                System.IO.Directory.CreateDirectory(user_ini_path);
            }

            // fireguard 폴더안에 user.ini 파일이 없으면 디폴트로 생성
            if (File.Exists(user_ini_path + "user.ini") == false)
            {
                // 기초 파일 생성
                _Ini.Create_Ini("", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "sa", "1234", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire1", "1q2w", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire2", "234w", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire3", "3e4r", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire4", "456r", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire5", "5t6y", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire6", "678y", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire7", "1q2w", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire8", "234w", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire9", "3e4r", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire10", "456r", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire11", "5t6y", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire12", "678y", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire13", "1q2w", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire14", "234w", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire15", "3e4r", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire16", "456r", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire17", "5t6y", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire18", "678y", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire19", "1q2w", user_ini_path + "user.ini");
                _Ini.Write_Ini("USER", "fire20", "234w", user_ini_path + "user.ini");

                // 임시파일 생성후 암호 생성후 대체해버린다

                // 파일 암호화
                _Encrypt.EncryptFile(user_ini_path + "user.ini", user_ini_path + "temp.ini");
                // 덮어쓰기
                File.Copy(user_ini_path + "temp.ini", user_ini_path + "user.ini", true);
                // 임시파일 삭제
                File.Delete(user_ini_path + "temp.ini");
            }
        }

        // 로그인 버튼
        private void button_login_Click(object sender, EventArgs e)
        {
            // 임시파일 생성후 암호만 추출후 삭제해버린다

            // 파일 복호화
            _Encrypt.DecryptFile(user_ini_path + "user.ini", user_ini_path + "temp.ini");

            // 비밀번호 찾기
            string read_pw = _Ini.Read_Ini("USER", this.textBox_ID.Text, 1024, user_ini_path + "temp.ini");
            string temp_pw = this.textBox_PW.Text.Trim();

            // 임시파일 삭제
            File.Delete(user_ini_path + "temp.ini");

            if (read_pw == temp_pw && temp_pw != null && temp_pw != "")
            {
                this.Visible = false;
                Main main = new Main(this.textBox_ID.Text);
                main.Show();
            }
            else
                MessageBox.Show("잘못된 패스워드 입니다");
        }        


    }
}