mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Added GM Ticket support on the DB
This commit is contained in:
		| @@ -10,6 +10,7 @@ using FFXIVClassic_Map_Server.packets.send.player; | |||||||
| using FFXIVClassic_Map_Server.dataobjects; | using FFXIVClassic_Map_Server.dataobjects; | ||||||
| using FFXIVClassic_Map_Server.Actors; | using FFXIVClassic_Map_Server.Actors; | ||||||
| using FFXIVClassic_Map_Server.actors.chara.player; | using FFXIVClassic_Map_Server.actors.chara.player; | ||||||
|  | using FFXIVClassic_Map_Server.packets.receive.supportdesk; | ||||||
|  |  | ||||||
| namespace FFXIVClassic_Map_Server | namespace FFXIVClassic_Map_Server | ||||||
| { | { | ||||||
| @@ -1246,6 +1247,166 @@ namespace FFXIVClassic_Map_Server | |||||||
|             return cheevosPacket.BuildPacket(player.actorId); |             return cheevosPacket.BuildPacket(player.actorId); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         public static void SaveSupportTicket(GMSupportTicketPacket gmTicket) | ||||||
|  |         { | ||||||
|  |             string query; | ||||||
|  |             MySqlCommand cmd; | ||||||
|  |  | ||||||
|  |             using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) | ||||||
|  |             { | ||||||
|  |                 try | ||||||
|  |                 { | ||||||
|  |                     conn.Open(); | ||||||
|  |  | ||||||
|  |                     query = @" | ||||||
|  |                     INSERT INTO supportdesk_tickets | ||||||
|  |                     (id, title, body, langCode) | ||||||
|  |                     VALUES | ||||||
|  |                     (@id, @title, @body, @langCode) | ||||||
|  |                     ON DUPLICATE KEY UPDATE | ||||||
|  |                     questData = @questData, questFlags = @questFlags | ||||||
|  |                     "; | ||||||
|  |  | ||||||
|  |                     cmd = new MySqlCommand(query, conn); | ||||||
|  |                     cmd.Parameters.AddWithValue("@id", gmTicket.ticketIssueIndex); | ||||||
|  |                     cmd.Parameters.AddWithValue("@title", gmTicket.ticketTitle); | ||||||
|  |                     cmd.Parameters.AddWithValue("@body", gmTicket.ticketBody); | ||||||
|  |                     cmd.Parameters.AddWithValue("@langCode", gmTicket.langCode); | ||||||
|  |  | ||||||
|  |                     cmd.ExecuteNonQuery(); | ||||||
|  |                 } | ||||||
|  |                 catch (MySqlException e) | ||||||
|  |                 { | ||||||
|  |                     Program.Log.Error(e.ToString()); | ||||||
|  |                 } | ||||||
|  |                 finally | ||||||
|  |                 { | ||||||
|  |                     conn.Dispose(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public static string[] getFAQNames(uint lanCode=1) | ||||||
|  |         { | ||||||
|  |             string[] faqs = null; | ||||||
|  |             List<string> raw = new List<string>(); | ||||||
|  |             using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) | ||||||
|  |             { | ||||||
|  |                 try | ||||||
|  |                 { | ||||||
|  |                     conn.Open(); | ||||||
|  |  | ||||||
|  |                     string query = @" | ||||||
|  |                                     SELECT | ||||||
|  |                                     id, | ||||||
|  |                                     label, | ||||||
|  |                                     sort, | ||||||
|  |                                     FROM supportdesk_faqs | ||||||
|  |                                     ORDER BY sort"; | ||||||
|  |  | ||||||
|  |                     MySqlCommand cmd = new MySqlCommand(query, conn); | ||||||
|  |  | ||||||
|  |                     using (MySqlDataReader reader = cmd.ExecuteReader()) | ||||||
|  |                     { | ||||||
|  |                         while (reader.Read()) | ||||||
|  |                         { | ||||||
|  |                             uint id = reader.GetUInt32(0); | ||||||
|  |                             string label = reader.GetString(1); | ||||||
|  |                             raw.Add(label); | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 catch (MySqlException e) | ||||||
|  |                 { | ||||||
|  |                     Program.Log.Error(e.ToString()); | ||||||
|  |                 } | ||||||
|  |                 finally | ||||||
|  |                 { | ||||||
|  |                     conn.Dispose(); | ||||||
|  |                     faqs = raw.ToArray(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             return faqs; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public static string getFAQBody(uint id, uint lanCode=1) | ||||||
|  |         { | ||||||
|  |             string body = string.Empty; | ||||||
|  |             using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) | ||||||
|  |             { | ||||||
|  |                 try | ||||||
|  |                 { | ||||||
|  |                     conn.Open(); | ||||||
|  |  | ||||||
|  |                     string query = @" | ||||||
|  |                                     SELECT | ||||||
|  |                                     body | ||||||
|  |                                     FROM supportdesk_faqs | ||||||
|  |                                     WHERE id=" + id; | ||||||
|  |  | ||||||
|  |                     MySqlCommand cmd = new MySqlCommand(query, conn); | ||||||
|  |  | ||||||
|  |                     using (MySqlDataReader reader = cmd.ExecuteReader()) | ||||||
|  |                     { | ||||||
|  |                         while (reader.Read()) | ||||||
|  |                         { | ||||||
|  |                             body = reader.GetString(2); | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 catch (MySqlException e) | ||||||
|  |                 { | ||||||
|  |                     Program.Log.Error(e.ToString()); | ||||||
|  |                 } | ||||||
|  |                 finally | ||||||
|  |                 { | ||||||
|  |                     conn.Dispose(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             return body; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public static string[] getIssues(uint lanCode = 1) | ||||||
|  |         { | ||||||
|  |             string[] issues = null; | ||||||
|  |             List<string> raw = new List<string>(); | ||||||
|  |             using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) | ||||||
|  |             { | ||||||
|  |                 try | ||||||
|  |                 { | ||||||
|  |                     conn.Open(); | ||||||
|  |  | ||||||
|  |                     string query = @" | ||||||
|  |                                     SELECT | ||||||
|  |                                     id, | ||||||
|  |                                     title, | ||||||
|  |                                     sort, | ||||||
|  |                                     FROM supportdesk_issues | ||||||
|  |                                     ORDER BY sort"; | ||||||
|  |  | ||||||
|  |                     MySqlCommand cmd = new MySqlCommand(query, conn); | ||||||
|  |  | ||||||
|  |                     using (MySqlDataReader reader = cmd.ExecuteReader()) | ||||||
|  |                     { | ||||||
|  |                         while (reader.Read()) | ||||||
|  |                         { | ||||||
|  |                             uint id = reader.GetUInt32(0); | ||||||
|  |                             string label = reader.GetString(1); | ||||||
|  |                             raw.Add(label); | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 catch (MySqlException e) | ||||||
|  |                 { | ||||||
|  |                     Program.Log.Error(e.ToString()); | ||||||
|  |                 } | ||||||
|  |                 finally | ||||||
|  |                 { | ||||||
|  |                     conn.Dispose(); | ||||||
|  |                     issues = raw.ToArray(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             return issues; | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -123,6 +123,7 @@ | |||||||
|     <Compile Include="lua\LuaNpc.cs" /> |     <Compile Include="lua\LuaNpc.cs" /> | ||||||
|     <Compile Include="lua\LuaPlayer.cs" /> |     <Compile Include="lua\LuaPlayer.cs" /> | ||||||
|     <Compile Include="lua\LuaScript.cs" /> |     <Compile Include="lua\LuaScript.cs" /> | ||||||
|  |     <Compile Include="managers\SupportDeskManager.cs" /> | ||||||
|     <Compile Include="PacketProcessor.cs" /> |     <Compile Include="PacketProcessor.cs" /> | ||||||
|     <Compile Include="packets\BasePacket.cs" /> |     <Compile Include="packets\BasePacket.cs" /> | ||||||
|     <Compile Include="packets\receive\ChatMessagePacket.cs" /> |     <Compile Include="packets\receive\ChatMessagePacket.cs" /> | ||||||
|   | |||||||
| @@ -374,17 +374,17 @@ namespace FFXIVClassic_Map_Server | |||||||
|                         //Request for FAQ/Info List |                         //Request for FAQ/Info List | ||||||
|                         case 0x01D0: |                         case 0x01D0: | ||||||
|                             FaqListRequestPacket faqRequest = new FaqListRequestPacket(subpacket.data); |                             FaqListRequestPacket faqRequest = new FaqListRequestPacket(subpacket.data); | ||||||
|                             client.QueuePacket(BasePacket.CreatePacket(FaqListResponsePacket.BuildPacket(player.actorID, new string[] { "Testing FAQ1", "Coded style!" }), true, false)); |                             client.QueuePacket(BasePacket.CreatePacket(FaqListResponsePacket.BuildPacket(player.actorID, Database.getFAQNames(faqRequest.langCode)), true, false)); | ||||||
|                             break; |                             break; | ||||||
|                         //Request for body of a faq/info selection |                         //Request for body of a faq/info selection | ||||||
|                         case 0x01D1: |                         case 0x01D1: | ||||||
|                             FaqBodyRequestPacket faqBodyRequest = new FaqBodyRequestPacket(subpacket.data); |                             FaqBodyRequestPacket faqBodyRequest = new FaqBodyRequestPacket(subpacket.data); | ||||||
|                             client.QueuePacket(BasePacket.CreatePacket(FaqBodyResponsePacket.BuildPacket(player.actorID, "HERE IS A GIANT BODY. Nothing else to say!"), true, false)); |                             client.QueuePacket(BasePacket.CreatePacket(FaqBodyResponsePacket.BuildPacket(player.actorID, Database.getFAQBody(faqBodyRequest.faqIndex, faqBodyRequest.langCode)), true, false)); | ||||||
|                             break; |                             break; | ||||||
|                         //Request issue list |                         //Request issue list | ||||||
|                         case 0x01D2: |                         case 0x01D2: | ||||||
|                             GMTicketIssuesRequestPacket issuesRequest = new GMTicketIssuesRequestPacket(subpacket.data); |                             GMTicketIssuesRequestPacket issuesRequest = new GMTicketIssuesRequestPacket(subpacket.data); | ||||||
|                             client.QueuePacket(BasePacket.CreatePacket(IssueListResponsePacket.BuildPacket(player.actorID, new string[] { "Test1", "Test2", "Test3", "Test4", "Test5" }), true, false)); |                             client.QueuePacket(BasePacket.CreatePacket(IssueListResponsePacket.BuildPacket(player.actorID, Database.getIssues(issuesRequest.langCode)), true, false)); | ||||||
|                             break; |                             break; | ||||||
|                         //Request if GM ticket exists |                         //Request if GM ticket exists | ||||||
|                         case 0x01D3: |                         case 0x01D3: | ||||||
| @@ -392,12 +392,13 @@ namespace FFXIVClassic_Map_Server | |||||||
|                             break; |                             break; | ||||||
|                         //Request for GM response message |                         //Request for GM response message | ||||||
|                         case 0x01D4: |                         case 0x01D4: | ||||||
|                             client.QueuePacket(BasePacket.CreatePacket(GMTicketPacket.BuildPacket(player.actorID, "This is a GM Ticket Title", "This is a GM Ticket Body."), true, false)); |                             client.QueuePacket(BasePacket.CreatePacket(GMTicketPacket.BuildPacket(player.actorID, "Ticket Title", "Enter your Help request here."), true, false)); | ||||||
|                             break; |                             break; | ||||||
|                         //GM Ticket Sent |                         //GM Ticket Sent | ||||||
|                         case 0x01D5: |                         case 0x01D5: | ||||||
|                             GMSupportTicketPacket gmTicket = new GMSupportTicketPacket(subpacket.data); |                             GMSupportTicketPacket gmTicket = new GMSupportTicketPacket(subpacket.data); | ||||||
|                             Program.Log.Info("Got GM Ticket: \n" + gmTicket.ticketTitle + "\n" + gmTicket.ticketBody); |                             Program.Log.Info("Got GM Ticket: \n" + gmTicket.ticketTitle + "\n" + gmTicket.ticketBody); | ||||||
|  |                             Database.SaveSupportTicket(gmTicket); | ||||||
|                             client.QueuePacket(BasePacket.CreatePacket(GMTicketSentResponsePacket.BuildPacket(player.actorID, true), true, false)); |                             client.QueuePacket(BasePacket.CreatePacket(GMTicketSentResponsePacket.BuildPacket(player.actorID, true), true, false)); | ||||||
|                             break; |                             break; | ||||||
|                         //Request to end ticket |                         //Request to end ticket | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user