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]; 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, "Admin " + admin.Name + " hat dein Ticket angenommen! (Benutze /rc)"); ChatService.BroadcastAdmin(admin.Name + " hat das Ticket von " + player.Name + " angenommen", AdminLevel.ADMIN); 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")] public void CmdUserRc(Client client, String text) { bool cont = false; String username = client.Name; String adminname = "N/A"; ReportManage temp = null; for (int a = 0; a < listReports.Count; a++) { temp = listReports[a]; if (temp.getUser().Equals(client.Name)) { cont = true; adminname = listReports[a].getAdmin(); break; } } if (!cont) { return; } Client admin = ClientService.GetClientByNameOrId(adminname); if (client.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { if (text.Equals("quit")) { ChatService.SendMessage(client, "~y~(REPORT) Chat vom Admin beendet"); ChatService.SendMessage(admin, "~y~(REPORT) Chat beendet"); listReports.Remove(temp); return; } } ChatService.SendMessage(client, "~y~" + username + " (REPORT): " + text); ChatService.SendMessage(admin, "~y~" + username + " (REPORT): " + text); } [RemoteEvent("requestReport")] public void RequestReport(Client user, string data, string type) { if (type == "Ticket Report") { ChatService.BroadcastAdmin("Eingehendes Ticket von " + user.Name + ": " + data + " (Benutze /showtickets)", AdminLevel.ADMIN); ReportManage ticket = new ReportManage(user.Name, data); listReports.Add(ticket); } if (type == "Quick Report") ChatService.BroadcastAdmin("QR von " + user.Name + ": " + data, AdminLevel.ADMIN); } [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]; ChatService.Broadcast("DEB: " + temp.getUser() + " + " + player.Name + " + " + user.Name); if (temp.getUser().Equals(player.Name)) { ChatService.Broadcast("Ticket von " + player.Name + " gelöscht!"); ChatService.BroadcastAdmin(user.Name + " hat das Ticket von " + player.Name + " gelöscht", AdminLevel.ADMIN); listReports.Remove(temp); } } } } }