using GTANetworkAPI; using ReallifeGamemode.Server.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Finance; using ReallifeGamemode.Server.Models; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Util; using System; using System.Linq; using System.Collections; using System.Collections.Generic; using Newtonsoft.Json; namespace ReallifeGamemode.Server.Report { class Report : Script { public static List listReports = new List(); [Command("report", "~m~Benutzung: ~s~/report")] public void CmdUserReport(Client client) { User user = client.GetUser(); client.TriggerEvent("showReportType"); //ChatService.BroadcastAdmin("Eingehendes Ticket von " + client.Name + ": " + message + " (Benutze /showtickets)", AdminLevel.ADMIN); } [Command("showtickets", "~m~Benutzung: ~s~/showtickets")] public void CmdAdminShowtickets(Client client) { if (!client.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(client); return; } if (listReports.Count == 0) { return; } User user = client.GetUser(); List listPlayers = new List(); List listTicketnames = new List(); for (int a=0; a< listReports.Count; a++) { ReportManage temp = listReports[a]; if (!temp.isAssigned()) { listPlayers.Add(temp.getUser()); listTicketnames.Add(temp.getReporttext()); } } //ChatService.SendMessage(client, JsonConvert.SerializeObject(listPlayers)); client.TriggerEvent("showReportMenu", JsonConvert.SerializeObject(listPlayers), JsonConvert.SerializeObject(listTicketnames)); } [RemoteEvent("acceptReport")] public void AcceptReport(Client admin, string client) { Client player = ClientService.GetClientByNameOrId(client); if (player == null) return; ChatService.SendMessage(player, "!{#008fff}[REPORT]!{#FFFFFF} Admin " + admin.Name + " hat dein Ticket angenommen! (Benutze /rc)"); ChatService.BroadcastDutyAdmin("!{#008fff}[REPORT]!{#FFFFFF} " + admin.Name + " hat das Ticket von " + player.Name + " angenommen"); for (int a = 0; a < listReports.Count; a++) { ReportManage temp = listReports[a]; if (temp.getUser().Equals(player.Name)) { listReports[a].assign(admin.Name); break; } } } [Command("rc", "~m~Benutzung: ~s~/rc text", GreedyArg = true)] public void CmdUserRc(Client client, String text) { bool cont = false; String username = "N/A"; String adminname = "N/A"; ReportManage temp = null; bool userIsAdmin = false; //Für Admin if (client.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) { for (int a = 0; a < listReports.Count; a++) { temp = listReports[a]; if (temp.getAdmin().Equals(client.Name)) { username = listReports[a].getUser(); cont = true; break; } } Client user = null; if (cont) { user = ClientService.GetClientByNameOrId(username); if (text.Equals("quit")) { ChatService.SendMessage(user, "!{#008fff}[REPORT]!{#FFFFFF} Chat vom Admin beendet"); ChatService.SendMessage(client, "!{#008fff}[REPORT]!{#FFFFFF} Chat beendet"); for (int a = 0; a < listReports.Count; a++) { temp = listReports[a]; if (temp.getAdmin().Equals(client.Name)) { listReports.Remove(temp); break; } } } else { ChatService.SendMessage(client, "!{#008fff}[REPORT]!{#FFFFFF} " + client.Name + ": " + text); ChatService.SendMessage(user, "!{#008fff}[REPORT]!{#FFFFFF} " + client.Name + ": " + text); } } else { userIsAdmin = true; } } //Für User if ((!client.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) || userIsAdmin) { cont = false; for (int a = 0; a < listReports.Count; a++) { temp = listReports[a]; if (temp.getUser().Equals(client.Name) && !temp.getAdmin().Equals("N/A")) { cont = true; adminname = listReports[a].getAdmin(); break; } } if(!cont) { return; } Client admin = ClientService.GetClientByNameOrId(adminname); ChatService.SendMessage(admin, "!{#008fff}[REPORT]!{#FFFFFF} " + client.Name + ": " + text); ChatService.SendMessage(client, "!{#008fff}[REPORT]!{#FFFFFF} " + client.Name + ": " + text); } } [RemoteEvent("requestReport")] public void RequestReport(Client user, string type, string data) { string text = JsonConvert.DeserializeObject(data); if (type == "Ticket Report") { ReportManage temp = null; for (int a = 0; a < listReports.Count; a++) { temp = listReports[a]; if (temp.getUser().Equals(user.Name)) { ChatService.SendMessage(user, "!{#addc8d}Du hast bereits ein Ticket erstellt"); return; } } if (GlobalHelper.dutyAdmins.Count == 0) { ChatService.SendMessage(user, "!{#addc8d}Momentan ist kein Administrator verfügbar"); return; } ChatService.SendMessage(user, "!{#addc8d}Dein Ticket wurde abgeschickt"); ChatService.SendMessage(user, "!{#addc8d}Momentan sind " + GlobalHelper.dutyAdmins.Count + " Admins verfügbar"); ChatService.BroadcastDutyAdmin("!{#008fff}[TICKET]!{#FFFFFF} Eingehendes Ticket von~r~ " + user.Name + " (" + user.Handle.Value + ")~w~: " + text + " (Benutze /showtickets)"); ReportManage ticket = new ReportManage(user.Name, text); listReports.Add(ticket); } if (type == "Quick Report") ChatService.BroadcastAdmin("!{#008fff}[QR]~r~ " + user.Name + " (" + user.Handle.Value + ")~w~: " + text, AdminLevel.SUPPORTER); } [RemoteEvent("deleteReport")] public void DeleteReport(Client user, string name) { Client player = ClientService.GetClientByNameOrId(name); if (player == null) return; for (int a = 0; a < listReports.Count; a++) { ReportManage temp = listReports[a]; if (temp.getUser().Equals(player.Name)) { ChatService.SendMessage(player, "!{#addc8d} " + user.Name + " hat dein Ticket gelöscht!"); ChatService.BroadcastDutyAdmin("!{#008fff}[TICKET]!{#FFFFFF} " + user.Name + " hat das Ticket von " + player.Name + " gelöscht"); listReports.Remove(temp); } } } } }