기능 추가 및 수정
- DB 기본 기능 수정 - 추가 요금 2000원 수정 - 라이센스 기능 추가
This commit is contained in:
@@ -53,6 +53,9 @@
|
|||||||
<Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
|
<HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="System.CodeDom, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.CodeDom.7.0.0\lib\net462\System.CodeDom.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Data.SQLite, Version=1.0.116.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
<Reference Include="System.Data.SQLite, Version=1.0.116.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||||
@@ -64,6 +67,7 @@
|
|||||||
<Reference Include="System.Data.SQLite.Linq, Version=1.0.116.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
<Reference Include="System.Data.SQLite.Linq, Version=1.0.116.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.116.0\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
|
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.116.0\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="System.Management" />
|
||||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>
|
<HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@@ -88,6 +92,7 @@
|
|||||||
<Compile Include="DB.cs" />
|
<Compile Include="DB.cs" />
|
||||||
<Compile Include="Extends.cs" />
|
<Compile Include="Extends.cs" />
|
||||||
<Compile Include="FontLibrary.cs" />
|
<Compile Include="FontLibrary.cs" />
|
||||||
|
<Compile Include="LicenseChecker.cs" />
|
||||||
<Compile Include="MainForm.cs">
|
<Compile Include="MainForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@@ -1,24 +1,65 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.SQLite;
|
using System.Data.SQLite;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace Cheongbuk_MegaPark_Key_Management
|
namespace Cheongbuk_MegaPark_Key_Management
|
||||||
{
|
{
|
||||||
internal class DB
|
internal class DB
|
||||||
{
|
{
|
||||||
|
private SQLiteConnection _sqLiteConnection;
|
||||||
private SQLiteCommand _sqLiteCommand;
|
private SQLiteCommand _sqLiteCommand;
|
||||||
|
|
||||||
private readonly SQLiteConnection _sqLiteConnection;
|
|
||||||
private SQLiteDataReader _sqLiteDataReader;
|
private SQLiteDataReader _sqLiteDataReader;
|
||||||
|
private static readonly string CONNECTION_STRING = $"Data Source={Setting.DbLocation}; Version=3; Integrated Security=true;";
|
||||||
|
|
||||||
public DB()
|
public DB()
|
||||||
{
|
{
|
||||||
if(!System.IO.File.Exists(Setting.DbLocation))
|
CreateDatabaseIfNotExist();
|
||||||
{
|
|
||||||
System.IO.File.WriteAllBytes(Setting.DbLocation, Properties.Resources.data);
|
|
||||||
}
|
}
|
||||||
_sqLiteConnection = new SQLiteConnection("Data Source=" + Setting.DbLocation + ";Version=3;");
|
|
||||||
|
private SQLiteConnection OpenConnection()
|
||||||
|
{
|
||||||
|
_sqLiteConnection = new SQLiteConnection(CONNECTION_STRING);
|
||||||
_sqLiteConnection.Open();
|
_sqLiteConnection.Open();
|
||||||
|
|
||||||
|
return _sqLiteConnection;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateDatabaseIfNotExist()
|
||||||
|
{
|
||||||
|
if (!File.Exists(Setting.DbLocation))
|
||||||
|
{
|
||||||
|
SQLiteConnection.CreateFile(Setting.DbLocation);
|
||||||
|
_sqLiteConnection = OpenConnection();
|
||||||
|
|
||||||
|
var createKeyTable = @"
|
||||||
|
CREATE TABLE Key(KeyCode INTEGER NOT NULL, Activation NUMERIC NOT NULL,PRIMARY KEY(KeyCode));
|
||||||
|
|
||||||
|
CREATE TABLE ProfitData (ID INTEGER NOT NULL UNIQUE,
|
||||||
|
KeyCode INTEGER NOT NULL,
|
||||||
|
Category INTEGER NOT NULL,
|
||||||
|
StartDateTime TEXT NOT NULL,
|
||||||
|
People INTEGER NOT NULL,
|
||||||
|
EndDateTime INTEGER NOT NULL,
|
||||||
|
UseTime INTEGER,
|
||||||
|
ProfitBase INTEGER NOT NULL,
|
||||||
|
ProfitAdd INTEGER,
|
||||||
|
ProfitDiscount INTEGER,
|
||||||
|
DeleteData INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY(ID AUTOINCREMENT));
|
||||||
|
|
||||||
|
CREATE TABLE RentData (KeyCode INTEGER NOT NULL UNIQUE, Category INTEGER NOT NULL, StartDateTime TEXT NOT NULL, People INTEGER NOT NULL);";
|
||||||
|
|
||||||
|
using (var command = _sqLiteConnection.CreateCommand())
|
||||||
|
{
|
||||||
|
command.CommandText = createKeyTable;
|
||||||
|
var excute = command.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
OpenConnection();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadData()
|
public void LoadData()
|
||||||
@@ -28,6 +69,7 @@ namespace Cheongbuk_MegaPark_Key_Management
|
|||||||
var query = "Select * FROM RentData";
|
var query = "Select * FROM RentData";
|
||||||
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
||||||
_sqLiteDataReader = _sqLiteCommand.ExecuteReader();
|
_sqLiteDataReader = _sqLiteCommand.ExecuteReader();
|
||||||
|
|
||||||
while (_sqLiteDataReader.Read())
|
while (_sqLiteDataReader.Read())
|
||||||
{
|
{
|
||||||
var rentData = new RentData();
|
var rentData = new RentData();
|
||||||
@@ -42,13 +84,16 @@ namespace Cheongbuk_MegaPark_Key_Management
|
|||||||
_sqLiteDataReader.Close();
|
_sqLiteDataReader.Close();
|
||||||
var startDateTime = DateTime.Now;
|
var startDateTime = DateTime.Now;
|
||||||
var endDateTime = DateTime.Now.AddDays(1);
|
var endDateTime = DateTime.Now.AddDays(1);
|
||||||
|
|
||||||
query = "Select * FROM ProfitData Where EndDateTime >= '" + startDateTime.Year.ToString("0000") + "-" +
|
query = "Select * FROM ProfitData Where EndDateTime >= '" + startDateTime.Year.ToString("0000") + "-" +
|
||||||
startDateTime.Month.ToString("00") +
|
startDateTime.Month.ToString("00") +
|
||||||
"-" + startDateTime.Day.ToString("00") + "' And EndDateTime < '" +
|
"-" + startDateTime.Day.ToString("00") + "' And EndDateTime < '" +
|
||||||
endDateTime.Year.ToString("0000") + "-" + endDateTime.Month.ToString("00") +
|
endDateTime.Year.ToString("0000") + "-" + endDateTime.Month.ToString("00") +
|
||||||
"-" + endDateTime.Day.ToString("00") + "' And DeleteData = 0";
|
"-" + endDateTime.Day.ToString("00") + "' And DeleteData = 0";
|
||||||
|
|
||||||
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
||||||
_sqLiteDataReader = _sqLiteCommand.ExecuteReader();
|
_sqLiteDataReader = _sqLiteCommand.ExecuteReader();
|
||||||
|
|
||||||
while (_sqLiteDataReader.Read())
|
while (_sqLiteDataReader.Read())
|
||||||
{
|
{
|
||||||
var profitData = new ProfitData();
|
var profitData = new ProfitData();
|
||||||
@@ -72,6 +117,7 @@ namespace Cheongbuk_MegaPark_Key_Management
|
|||||||
{
|
{
|
||||||
var query = "Insert INTO RentData VALUES(" + rentData.KeyCode + "," + rentData.Category + ", '" +
|
var query = "Insert INTO RentData VALUES(" + rentData.KeyCode + "," + rentData.Category + ", '" +
|
||||||
rentData.StartDateTime.ToString("yyyy/MM/dd HH:mm:ss") + "'," + rentData.People + ")";
|
rentData.StartDateTime.ToString("yyyy/MM/dd HH:mm:ss") + "'," + rentData.People + ")";
|
||||||
|
|
||||||
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
||||||
_sqLiteCommand.ExecuteNonQuery();
|
_sqLiteCommand.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
@@ -88,13 +134,13 @@ namespace Cheongbuk_MegaPark_Key_Management
|
|||||||
profitData.ProfitBase + ", " +
|
profitData.ProfitBase + ", " +
|
||||||
profitData.ProfitAdd + ", " +
|
profitData.ProfitAdd + ", " +
|
||||||
profitData.ProfitDiscount + "); SELECT last_insert_rowid()";
|
profitData.ProfitDiscount + "); SELECT last_insert_rowid()";
|
||||||
|
|
||||||
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
||||||
_sqLiteDataReader = _sqLiteCommand.ExecuteReader();
|
_sqLiteDataReader = _sqLiteCommand.ExecuteReader();
|
||||||
int id = 0;
|
var id = 0;
|
||||||
|
|
||||||
while (_sqLiteDataReader.Read())
|
while (_sqLiteDataReader.Read())
|
||||||
{
|
|
||||||
int.TryParse(_sqLiteDataReader[0].ToString(), out id);
|
int.TryParse(_sqLiteDataReader[0].ToString(), out id);
|
||||||
}
|
|
||||||
|
|
||||||
query = "Delete From RentData Where KeyCode=" + profitData.KeyCode;
|
query = "Delete From RentData Where KeyCode=" + profitData.KeyCode;
|
||||||
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
_sqLiteCommand = new SQLiteCommand(query, _sqLiteConnection);
|
||||||
|
74
CheongBuk_MegaPark_Key_Management/LicenseChecker.cs
Normal file
74
CheongBuk_MegaPark_Key_Management/LicenseChecker.cs
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Management;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
|
namespace Cheongbuk_MegaPark_Key_Management
|
||||||
|
{
|
||||||
|
public class LicenseChecker
|
||||||
|
{
|
||||||
|
public bool CheckLicense()
|
||||||
|
{
|
||||||
|
string webDatas;
|
||||||
|
using (WebClient webClient = new WebClient())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
webDatas = webClient.DownloadString("https://raw.githubusercontent.com/crudelis/CMPKM/main/license");
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
webDatas = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
string[] certifiedLicenses = webDatas.Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
|
||||||
|
certifiedLicenses = certifiedLicenses.Where(x => !string.IsNullOrEmpty(x)).ToArray();
|
||||||
|
string localLicenseCode = GetLocalLicense();
|
||||||
|
foreach (var certified in certifiedLicenses)
|
||||||
|
{
|
||||||
|
if (certified == localLicenseCode)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
private string GetLocalLicense()
|
||||||
|
{
|
||||||
|
string localBoardCode = GetBaseBoardCode();
|
||||||
|
string md5LocalBoardCode = GetMD5(localBoardCode);
|
||||||
|
System.IO.File.WriteAllText("license", md5LocalBoardCode);
|
||||||
|
return md5LocalBoardCode;
|
||||||
|
}
|
||||||
|
private string GetBaseBoardCode()
|
||||||
|
{
|
||||||
|
string query = "SELECT * FROM Win32_BaseBoard";
|
||||||
|
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
|
||||||
|
List<string> serialNumbers = new List<string>();
|
||||||
|
foreach (var mObject in searcher.Get())
|
||||||
|
{
|
||||||
|
serialNumbers.Add(mObject.GetPropertyValue("SerialNumber").ToString());
|
||||||
|
}
|
||||||
|
return serialNumbers[0];
|
||||||
|
}
|
||||||
|
private string GetMD5(string data)
|
||||||
|
{
|
||||||
|
using (MD5 md5 = MD5.Create())
|
||||||
|
{
|
||||||
|
byte[] input = Encoding.ASCII.GetBytes(data);
|
||||||
|
byte[] hash = md5.ComputeHash(input);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int i = 0; i < hash.Length; i++)
|
||||||
|
{
|
||||||
|
sb.Append(hash[i].ToString("X2"));
|
||||||
|
}
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -14,6 +14,15 @@ namespace Cheongbuk_MegaPark_Key_Management
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
|
LicenseChecker licenseChecker = new LicenseChecker();
|
||||||
|
bool licenseResult = licenseChecker.CheckLicense();
|
||||||
|
if(!licenseResult)
|
||||||
|
{
|
||||||
|
MessageBox.Show("A very crtical fatal error has occurred.\r\nContact your administrator.", "Crtical Fata Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
Application.Run(new MainForm());
|
Application.Run(new MainForm());
|
||||||
|
@@ -29,7 +29,7 @@ namespace Cheongbuk_MegaPark_Key_Management
|
|||||||
};
|
};
|
||||||
|
|
||||||
public static int OverTime = 10;
|
public static int OverTime = 10;
|
||||||
public static int OverAmount = 1000;
|
public static int OverAmount = 2000;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,10 +3,12 @@
|
|||||||
<package id="EntityFramework" version="6.4.4" targetFramework="net472" />
|
<package id="EntityFramework" version="6.4.4" targetFramework="net472" />
|
||||||
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.116.0" targetFramework="net472" />
|
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.116.0" targetFramework="net472" />
|
||||||
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
|
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
|
||||||
|
<package id="System.CodeDom" version="7.0.0" targetFramework="net472" />
|
||||||
<package id="System.Data.SQLite" version="1.0.116.0" targetFramework="net472" />
|
<package id="System.Data.SQLite" version="1.0.116.0" targetFramework="net472" />
|
||||||
<package id="System.Data.SQLite.Core" version="1.0.116.0" targetFramework="net472" />
|
<package id="System.Data.SQLite.Core" version="1.0.116.0" targetFramework="net472" />
|
||||||
<package id="System.Data.SQLite.EF6" version="1.0.116.0" targetFramework="net472" />
|
<package id="System.Data.SQLite.EF6" version="1.0.116.0" targetFramework="net472" />
|
||||||
<package id="System.Data.SQLite.Linq" version="1.0.116.0" targetFramework="net472" />
|
<package id="System.Data.SQLite.Linq" version="1.0.116.0" targetFramework="net472" />
|
||||||
|
<package id="System.Management" version="7.0.0" targetFramework="net472" />
|
||||||
<package id="System.Memory" version="4.5.3" targetFramework="net472" />
|
<package id="System.Memory" version="4.5.3" targetFramework="net472" />
|
||||||
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
|
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
|
||||||
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
|
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
|
||||||
|
Reference in New Issue
Block a user