public static void DeleteQuestState(int Id) { IQuestRepository repo = new EFQuestRepository(); var questState = repo.QuestStates.FirstOrDefault(q => q.Id == Id); // dangle any from connections connecting TO this state var connections = repo.QuestConnections.Where(q => q.QuestStateToId == questState.Id).ToList(); foreach (var q in connections) { q.QuestStateToId = -1; repo.SaveQuestConnection(q); } // dangle any from connections connecting TO this state connections = repo.QuestConnections.Where(q => q.QuestStateFromId == questState.Id).ToList(); foreach (var q in connections) { q.QuestStateFromId = -1; repo.SaveQuestConnection(q); } // delete any ends on this quest state var ends = repo.QuestEnds.Where(q => q.QuestStateId.Id == questState.Id).ToList(); foreach (var q in ends) { repo.DeleteQuestEnd(q.Id); } // delete any quest state preactions on this quest state var preactions = repo.QuestStatePreactions.Where(q => q.QuestStateId.Id == questState.Id).ToList(); foreach (var q in preactions) { repo.DeleteQuestStatePreaction(q.Id); } // finally actually delete this state repo.DeleteQuestState(Id); }
public static void DeleteQuestEnd(int Id) { IQuestRepository repo = new EFQuestRepository(); repo.DeleteQuestEnd(Id); }