using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Util; using System.Collections.Generic; using System.Linq; namespace ReallifeGamemode.Server.Events { class Faction : Script { [RemoteEvent("OnFactionRanksEdit")] public void OnFactionRanksEdit(Player player, string jsonData) { FactionRankHelper helper = JsonConvert.DeserializeObject(jsonData); using (var context = new DatabaseContext()) { Database.Entities.Faction f = context.Factions.FirstOrDefault(x => x.Id == helper.FactionId); if (f == null) { ChatService.ErrorMessage(player, "Bei der Bearbeitung der Ränge ist ein Fehler aufgetreten: Die Fraktion existiert nicht"); return; } List ranks = helper.Ranks; int length = ranks.Count; List factionRanks = context.FactionRanks.ToList().FindAll(fR => fR.FactionId == f.Id); List found = new List(); for (int i = 0; i < ranks.Count; i++) { Rank newRank = ranks[i]; if (newRank.Id == 0) { context.FactionRanks.Add(new FactionRank { RankName = newRank.Name, FactionId = f.Id, Order = length - i }); } else { FactionRank factionRank = factionRanks.Find(r => r.Id == newRank.Id); factionRank.RankName = newRank.Name; factionRank.Order = length - i; found.Add(factionRank.Id); } } for (int i = 0; i < factionRanks.Count; i++) { if (!found.Contains(factionRanks[i].Id)) { context.FactionRanks.Remove(factionRanks[i]); } } ChatService.SendMessage(player, "~g~Die Ränge wurden erfolgreich gespeichert."); context.SaveChanges(); } } } }