128 lines
4.2 KiB
C#
128 lines
4.2 KiB
C#
using OverlayFormObj;
|
|
using DBObj;
|
|
using MySqlConnector;
|
|
using System.Data;
|
|
|
|
namespace DualScreenDemo
|
|
{
|
|
public class Room
|
|
{
|
|
public int branch_id =0;
|
|
public string hostName;
|
|
|
|
private string State = "error";
|
|
private DateTime? startedAt;
|
|
private DateTime? endedAt;
|
|
public Room()
|
|
{
|
|
hostName = System.Net.Dns.GetHostName();
|
|
branch_id = getBranchId();
|
|
State = getDB();
|
|
Console.WriteLine($"hostname status: {hostName},{State},{startedAt},{endedAt}");
|
|
}
|
|
private int getBranchId()
|
|
{
|
|
using (var db = new MyDB())
|
|
{
|
|
string sql = "SELECT id FROM branches LIMIT 1";
|
|
if (db.open(sql, null) && db.found())return db.Field<int>("id");
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
private string getDB()
|
|
{
|
|
using (var db = new MyDB())
|
|
{
|
|
string query = @"SELECT * FROM rooms WHERE branch_id = @branch_id AND CONCAT(type, name) = @hostName";
|
|
MySqlParameter[] parameters = {
|
|
new MySqlParameter("@branch_id", branch_id),
|
|
new MySqlParameter("@hostName", hostName)
|
|
};
|
|
if (db.open(query, parameters) && db.found())
|
|
{
|
|
State = db.Field<string>("status");
|
|
startedAt=ParseTime(db.Field<string>("started_at"));
|
|
endedAt=ParseTime(db.Field<string>("ended_at"));
|
|
if (State.Equals("maintain")) { State = "active"; }
|
|
return State;
|
|
}
|
|
}
|
|
return "error";
|
|
}
|
|
private void setDB(string value)
|
|
{
|
|
using (var db = new MyDB())
|
|
{
|
|
string query = @"UPDATE rooms SET status = @status WHERE branch_id = @branch_id AND CONCAT(type, name) = @hostName;";
|
|
MySqlParameter[] parameters = {
|
|
new MySqlParameter("@status", value),
|
|
new MySqlParameter("@branch_id", branch_id),
|
|
new MySqlParameter("@hostName", hostName)
|
|
};
|
|
db.ExecuteNonQuery(query, parameters);
|
|
}
|
|
}
|
|
public void set(string value)
|
|
{
|
|
string StateDB=getDB();
|
|
|
|
Console.WriteLine($"hostname status: {hostName},{StateDB},{startedAt},{endedAt} ,{State}");
|
|
string marqueeMessage = "歡迎使用超級巨星歡唱,與你共度美好時光。";
|
|
Color c = Color.White;
|
|
if (StateDB.Equals("fire"))
|
|
{
|
|
PrimaryForm.Instance.ShowSendOffScreen();
|
|
VideoPlayerForm.Instance.Pause();
|
|
marqueeMessage = "發生火災,請跟隨引導至逃生出口!!!";
|
|
c = Color.Red;
|
|
}
|
|
else if (StateDB.Equals("active"))
|
|
{
|
|
if (!State.Equals(StateDB))
|
|
{
|
|
DBObj.SongList.clearSong();
|
|
PrimaryForm.Instance.HotPlayButton_Click(null, EventArgs.Empty);
|
|
PrimaryForm.Instance.HideSendOffScreen();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
DBObj.SongList.roomClose();
|
|
PrimaryForm.Instance.pictureBoxQRCode.Visible = false;
|
|
PrimaryForm.Instance.closeQRCodeButton.Visible = false;
|
|
PrimaryForm.Instance.ShowSendOffScreen();
|
|
|
|
|
|
OverlayForm.MainForm.topLeftLabel.Visible = false;
|
|
|
|
//VideoPlayerForm.Instance.PlayNextSong();
|
|
PrimaryForm.Instance.logout();
|
|
|
|
}
|
|
|
|
OverlayForm.MainForm.UpdateMarqueeText(marqueeMessage, OverlayForm.MarqueeStartPosition.Middle, c);
|
|
|
|
}
|
|
private DateTime? ParseTime(string value)
|
|
{
|
|
if (DateTime.TryParse(value, out var dt))
|
|
return dt;
|
|
return null;
|
|
}
|
|
public bool IsClose()
|
|
{
|
|
return State.Equals("closed");
|
|
}
|
|
public bool IsOpen()
|
|
{
|
|
return State.Equals("active");
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} |