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("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()) { var Statedb = db.Field("status"); startedAt = ParseTime(db.Field("started_at")); endedAt = ParseTime(db.Field("ended_at")); if (Statedb.Equals("maintain")) { Statedb = "active"; } return Statedb; } } 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(); if (!StateDB.Equals(State)) { State = StateDB; } else { return; } string marqueeMessage = "歡迎使用超級巨星歡唱,與你共度美好時光。"; Color c = Color.White; if (State.Equals("fire")) { PrimaryForm.Instance.ShowSendOffScreen(); VideoPlayerForm.Instance.Pause(); marqueeMessage = "發生火災,請跟隨引導至逃生出口!!!"; c = Color.Red; } else if (State.Equals("active")) { 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"); } } }