/// <summary> /// Tracks the specific quest for the current user /// </summary> /// <param name="id">The id of the quest</param> /// <returns>True if succesful, false otherwise</returns> public Boolean Track(int id) { if (!WebSecurity.IsAuthenticated) { return(false); } // Get the quest, then the tracking (if it exists) quest_template quest = _dbContext.quest_template.Find(id); if (quest == null) { return(false); } Boolean alreadyTracking = (from t in _dbContext.quest_tracking where t.quest_id == quest.id && t.user_id == WebSecurity.CurrentUserId select t).Any(); if (alreadyTracking) { return(false); } // Add a new tracking quest_tracking tracking = new quest_tracking() { quest_id = quest.id, user_id = WebSecurity.CurrentUserId }; _dbContext.quest_tracking.Add(tracking); _dbContext.SaveChanges(); return(true); }
/// <summary> /// Untracks the specific quest for the current user /// </summary> /// <param name="id">The id of the quest</param> /// <returns>True if successful, false otherwise</returns> public Boolean Untrack(int id) { if (!WebSecurity.IsAuthenticated) { return(false); } // Get the quest, then the tracking (if it exists) quest_template quest = _dbContext.quest_template.Find(id); if (quest == null) { return(false); } // Get all (just incase) List <quest_tracking> tracking = (from t in _dbContext.quest_tracking where t.quest_id == quest.id && t.user_id == WebSecurity.CurrentUserId select t).ToList(); if (tracking.Count == 0) { return(false); } foreach (quest_tracking t in tracking) { _dbContext.quest_tracking.Remove(t); } _dbContext.SaveChanges(); return(true); }
public void ApproveUserQuest(int questID) { quest_template userQuest = _dbContext.quest_template.Find(questID); if (userQuest == null) { return; } userQuest.posted_date = DateTime.Now; userQuest.state = (int)JPPConstants.AchievementQuestStates.Active; userQuest.last_modified_by_id = WebSecurity.CurrentUserId; userQuest.last_modified_date = DateTime.Now; //TODO: UPDATE MESSAGE _unitOfWork.SystemRepository.AddNotification( userQuest.creator_id, WebSecurity.CurrentUserId, "Quest Approved", userQuest.icon, new UrlHelper(HttpContext.Current.Request.RequestContext).Action( "IndividualQuest", "Quests", new { id = userQuest.id } ), false); Save(); }
public bool QuestTitleExists(String title, int?id = null) { quest_template quest = _dbContext.quest_template.SingleOrDefault(at => String.Equals(at.title.ToLower(), title.ToLower())); if (id != null) { if (id == quest.id) { return(false); } else { return(true); } } if (quest != null) { return(true); } else { return(false); } }
private void questDelete_Click(object sender, RoutedEventArgs e) { quest_template o = questList.SelectedItem as quest_template; WorldWorker.DeleteQuestTemplate(o.Id); LegacyToolBox.Data.QuestTemplate.Remove(o); LegacyToolBox.AppendMessage("Quest " + o.Id + " Deleted."); }
/// <summary> /// Checks all users for quest completion /// </summary> /// <param name="questID">The id of the quest to check</param> public void CheckAllUserQuestCompletion(int questID) { // Get the template quest_template template = _dbContext.quest_template.Find(questID); if (template == null || template.state != (int)JPPConstants.AchievementQuestStates.Active) { return; } // Get the achievements associated with this quest var steps = (from a in _dbContext.quest_achievement_step where a.quest_id == questID select a); int totalSteps = steps.Count(); // Get the list of valid users who do not have the quest List <user> validUsers = (from p in _dbContext.user where p.is_player == true && p.status == (int)JPPConstants.UserStatus.Active select p).ToList(); // Loop through all players and check for completion bool needToSave = false; foreach (user validUser in validUsers) { // Does this user have the quest already? bool hasQuest = _dbContext.quest_instance.Any(qi => qi.quest_id == template.id && qi.user_id == validUser.id); if (hasQuest) { continue; } // Get a count of achievement steps int instanceCount = (from a in _dbContext.achievement_instance from s in steps where a.user_id == validUser.id && a.achievement_id == s.achievement_id select a).Count(); int threshold = template.threshold != null ? (int)template.threshold : steps.Count(); // Was this enough to trigger the quest? if (instanceCount >= threshold) { // Yes, so give the user the quest! CompleteQuest(template.id, validUser, null, false); needToSave = true; } } // Any completed? if (needToSave) { Save(); } }
private void CompleteQuest(int questID, user userToCheck, int?achievementID, bool autoSave) { if (userToCheck.status != (int)JPPConstants.UserStatus.Active || !userToCheck.is_player) { return; } //Check if the quest exists and is active, and if an instance already exists quest_template questTemplate = _dbContext.quest_template.Find(questID); if (questTemplate.state == (int)JPPConstants.AchievementQuestStates.Retired || _dbContext.quest_instance.Any(qi => qi.quest_id == questTemplate.id && qi.user_id == userToCheck.id)) { return; } quest_instance newInstance = new quest_instance() { quest_id = questID, user_id = userToCheck.id, completed_date = DateTime.Now, comments_disabled = true }; _dbContext.quest_instance.Add(newInstance); _unitOfWork.SystemRepository.AddNotification( userToCheck.id, userToCheck.id, "You completed the quest [" + questTemplate.title + "]", questTemplate.icon, new UrlHelper(HttpContext.Current.Request.RequestContext).Action( "IndividualQuest", "Quests", new { id = questTemplate.id } ) + "#" + newInstance.id + "-1", false); LoggerModel logQuestUnlock = new LoggerModel() { Action = Logger.QuestInstanceLogType.QuestUnlocked.ToString(), UserID = userToCheck.id, IPAddress = HttpContext.Current.Request.UserHostAddress, TimeStamp = DateTime.Now, ID1 = questID, IDType1 = Logger.LogIDType.QuestTemplate.ToString(), ID2 = achievementID, IDType2 = Logger.LogIDType.AchievementTemplate.ToString(), Value1 = "ID2 represents the ID of the achievement that triggered the quest unlock" }; Logger.LogSingleEntry(logQuestUnlock, _dbContext); if (autoSave) { Save(); } }
private void selectRace_Click(object sender, RoutedEventArgs e) { quest_template o = questList.SelectedItem as quest_template; if (o == null) { return; } new RaceSelector(o).Show(); }
private void relations_Click(object sender, RoutedEventArgs e) { quest_template o = questList.SelectedItem as quest_template; if (o == null) { return; } new QuestRelations(o).Show(); }
private void questCreate_Click(object sender, RoutedEventArgs e) { quest_template q = WorldWorker.GetQuestTemplate(26035); WorldWorker.SetEntityState(q, EntityState.Added); q.Id = WorldWorker.GenerateNextQuestEntry(); WorldWorker.SaveQuestTemplate(q); LegacyToolBox.Data.QuestTemplate.Add(q); LegacyToolBox.AppendMessage("New Quest " + q.Id + " Created."); }
public void TestAddQuestTemplate() { quest_template template = new quest_template { created_date = DateTime.Now, creator = user, title = "QuestTitle", description = "Description", icon = "" }; _db.quest_template.Add(template); DatabaseHelper.TrySaveChanges(ref _db); }
private void questCopy_Click(object sender, RoutedEventArgs e) { quest_template o = questList.SelectedItem as quest_template; quest_template q = WorldWorker.GetQuestTemplate(o.Id); WorldWorker.SetEntityState(q, EntityState.Added); q.Id = WorldWorker.GenerateNextQuestEntry(); WorldWorker.SaveQuestTemplate(q); LegacyToolBox.Data.QuestTemplate.Add(q); LegacyToolBox.AppendMessage("Quest " + o.Id + " To Quest " + q.Id + " Copied."); }
private void questSort_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (_Loading) { return; } quest_template q = questTab.DataContext as quest_template; short sort = Convert.ToInt16(questSort.SelectedValue); q.ZoneOrSort = (short)-sort; }
private void questTab_KeyDown(object sender, KeyEventArgs e) { if (e.KeyboardDevice.Modifiers == ModifierKeys.Control && e.Key == Key.S) { quest_template q = questList.SelectedItem as quest_template; if (q != null) { WorldWorker.SaveQuestTemplate(q); } LegacyToolBox.AppendMessage("Quest Template " + q.Id + " Saved."); e.Handled = true; } }
public QuestRelations(quest_template q) { InitializeComponent(); _q = q; _CQuestStarter = WorldWorker.GetCreatureQuestStarter(q.Id); _CQuestEnder = WorldWorker.GetCreatureQuestEnder(q.Id); _GQuestStarter = WorldWorker.GetGoQuestStarter(q.Id); _GQuestEnder = WorldWorker.GetGoQuestEnder(q.Id); questGrid.DataContext = _q; npcStarter.ItemsSource = _CQuestStarter; npcEnder.ItemsSource = _CQuestEnder; goStarter.ItemsSource = _GQuestStarter; goEnder.ItemsSource = _GQuestEnder; }
/// <summary> /// Creates a new quest_template and adds it to the database /// </summary> /// <param name="model">The AddQuestViewModel passed in from the controller</param> public void AddQuest(AddQuestViewModel model) { quest_template newQuest = new quest_template { created_date = DateTime.Now, creator_id = model.CreatorID, description = model.Description, featured = false, icon = model.IconFilePath, icon_file_name = model.Icon, last_modified_by_id = null, last_modified_date = null, posted_date = null, retire_date = null, state = (int)JPPConstants.AchievementQuestStates.Draft, threshold = model.Threshold, title = model.Title, user_generated = model.UserGenerated, keywords = "", }; List <quest_achievement_step> questAchievementSteps = new List <quest_achievement_step>(); foreach (int i in model.SelectedAchievementsList) { quest_achievement_step q = new quest_achievement_step { achievement_id = i, quest_id = newQuest.id }; questAchievementSteps.Add(q); } AddQuestTemplateToDatabase(newQuest); AddAchievementStepsToDatabase(questAchievementSteps); Save(); }
private void UpdateFilter() { if (_Loading) { return; } string name = questFilter.Text; questList.Items.Filter = delegate(object obj) { if (name == "") { return(true); } quest_template q = (quest_template)obj; if (q.Title == null) { return(false); } return(q.Title.Contains(name) || q.Id.ToString().Contains(name)); }; }
/// <summary> /// Creates a new quest_template and adds it to the database /// </summary> /// <param name="model">The AddQuestViewModel passed in from the controller</param> public void AddQuest(AddQuestViewModel model) { quest_template newQuest = new quest_template { created_date = DateTime.Now, creator_id = model.CreatorID, description = model.Description, featured = false, icon = model.IconFilePath, icon_file_name = model.Icon, last_modified_by_id = null, last_modified_date = null, posted_date = null, retire_date = null, state = (int)JPPConstants.AchievementQuestStates.Draft, threshold = model.Threshold, title = model.Title, user_generated = model.UserGenerated, keywords = "", }; List<quest_achievement_step> questAchievementSteps = new List<quest_achievement_step>(); foreach (int i in model.SelectedAchievementsList) { quest_achievement_step q = new quest_achievement_step { achievement_id = i, quest_id = newQuest.id }; questAchievementSteps.Add(q); } AddQuestTemplateToDatabase(newQuest); AddAchievementStepsToDatabase(questAchievementSteps); Save(); }
private void questList_SelectionChanged(object sender, SelectionChangedEventArgs e) { _Loading = true; quest_template q = questList.SelectedItem as quest_template; if (q == null) { return; } questTab.DataContext = q; if (q.ZoneOrSort > 0) { radioZone.IsChecked = true; questZone.SelectedValue = q.ZoneOrSort; questZone.IsEnabled = true; questSort.SelectedValue = 0; questSort.IsEnabled = false; } else if (q.ZoneOrSort < 0) { radioSort.IsChecked = true; questSort.SelectedValue = -q.ZoneOrSort; questSort.IsEnabled = true; questZone.SelectedValue = 0; questZone.IsEnabled = false; } else { questSort.SelectedValue = 0; questZone.SelectedValue = 0; questSort.IsEnabled = false; questZone.IsEnabled = false; } _Loading = false; }
public void DenyUserQuest(int questID, string reason) { quest_template userQuest = _dbContext.quest_template.Find(questID); if (userQuest == null) { return; } //TODO: Change Message, Verify Action Name for URL _unitOfWork.SystemRepository.AddNotification( userQuest.creator_id, WebSecurity.CurrentUserId, "Quest Denied", userQuest.icon, new UrlHelper(HttpContext.Current.Request.RequestContext).Action( "SubmitQuestIdea", "Quests", new { id = userQuest.id } ), false); LoggerModel logQuestDeny = new LoggerModel() { Action = Logger.ManageSubmissionsLogType.DeniedUserQuest.ToString(), UserID = WebSecurity.CurrentUserId, IPAddress = HttpContext.Current.Request.UserHostAddress, TimeStamp = DateTime.Now, ID1 = userQuest.creator_id, IDType1 = Logger.LogIDType.User.ToString(), Value1 = reason }; Logger.LogSingleEntry(logQuestDeny, _dbContext); _dbContext.quest_template.Remove(userQuest); Save(); }
/// <summary> /// Gets the specified quest_template and updates it with any edits /// </summary> /// <param name="id">The id of the quest_template</param> /// <param name="model">The EditQuestViewModel passed in from the controller</param> public void AdminEditQuest(int id, EditQuestViewModel model) { List <LoggerModel> logChanges = new List <LoggerModel>(); quest_template currentQuest = _dbContext.quest_template.Find(id); if (currentQuest == null) { return; } #region// Title if (currentQuest.title != model.Title && !String.IsNullOrWhiteSpace(model.Title)) { logChanges.Add(new LoggerModel() { Action = "Edit Quest: " + Logger.EditQuestLogType.Title.ToString(), UserID = model.EditorID, IPAddress = HttpContext.Current.Request.UserHostAddress, TimeStamp = DateTime.Now, IDType1 = Logger.LogIDType.QuestTemplate.ToString(), ID1 = id, Value1 = currentQuest.title, Value2 = model.Title }); currentQuest.title = model.Title; } #endregion #region// Description if (currentQuest.description != model.Description && !String.IsNullOrWhiteSpace(model.Description)) { logChanges.Add(new LoggerModel() { Action = "Edit Quest: " + Logger.EditQuestLogType.Description.ToString(), UserID = model.EditorID, IPAddress = HttpContext.Current.Request.UserHostAddress, TimeStamp = DateTime.Now, IDType1 = Logger.LogIDType.QuestTemplate.ToString(), ID1 = id, Value1 = currentQuest.description, Value2 = model.Description }); currentQuest.description = model.Description; } #endregion #region// Icon if (currentQuest.icon != model.IconFilePath && !String.IsNullOrWhiteSpace(model.IconFilePath)) { logChanges.Add(new LoggerModel() { Action = "Edit Quest: " + Logger.EditQuestLogType.Icon.ToString(), UserID = model.EditorID, IPAddress = HttpContext.Current.Request.UserHostAddress, TimeStamp = DateTime.Now, IDType1 = Logger.LogIDType.QuestTemplate.ToString(), ID1 = id, Value1 = currentQuest.icon, Value2 = model.IconFilePath }); currentQuest.icon = model.IconFilePath; currentQuest.icon_file_name = model.Icon; } #endregion #region// Posted Date if (currentQuest.state != model.State && model.State.Equals((int)JPPConstants.AchievementQuestStates.Active) && currentQuest.posted_date == null) { currentQuest.posted_date = DateTime.Now; } #endregion #region// Retire Date if (currentQuest.state != model.State && model.State.Equals((int)JPPConstants.AchievementQuestStates.Retired) && currentQuest.retire_date == null) { currentQuest.retire_date = DateTime.Now; } if (currentQuest.state != model.State && currentQuest.state.Equals((int)JPPConstants.AchievementQuestStates.Retired)) { currentQuest.retire_date = null; } #endregion #region// State if (currentQuest.state != model.State) { logChanges.Add(new LoggerModel() { Action = "Edit Quest: " + Logger.EditQuestLogType.State.ToString(), UserID = model.EditorID, IPAddress = HttpContext.Current.Request.UserHostAddress, TimeStamp = DateTime.Now, IDType1 = Logger.LogIDType.QuestTemplate.ToString(), ID1 = id, Value1 = currentQuest.state.ToString(), Value2 = model.State.ToString() }); currentQuest.state = model.State; } #endregion #region//Featured if (currentQuest.state != (int)JPPConstants.AchievementQuestStates.Active) { currentQuest.featured = false; } #endregion #region// Last Modified By And Date Last Modified currentQuest.last_modified_by_id = model.EditorID; currentQuest.last_modified_date = DateTime.Now; #endregion #region// Threshold if (currentQuest.threshold != model.Threshold) { logChanges.Add(new LoggerModel() { Action = "Edit Quest: " + Logger.EditQuestLogType.Threshold.ToString(), UserID = model.EditorID, IPAddress = HttpContext.Current.Request.UserHostAddress, TimeStamp = DateTime.Now, IDType1 = Logger.LogIDType.QuestTemplate.ToString(), ID1 = id, Value1 = currentQuest.threshold.ToString(), Value2 = model.Threshold.ToString() }); currentQuest.threshold = model.Threshold; } #endregion #region// Replace achievement steps IEnumerable <quest_achievement_step> oldQuestAchievementSteps = _dbContext.quest_achievement_step.Where(q => q.quest_id == id); foreach (quest_achievement_step step in oldQuestAchievementSteps) { _dbContext.quest_achievement_step.Remove(step); } List <quest_achievement_step> newQuestAchievementSteps = new List <quest_achievement_step>(); foreach (int i in model.SelectedAchievementsList) { quest_achievement_step q = new quest_achievement_step { achievement_id = i, quest_id = id }; newQuestAchievementSteps.Add(q); } AddAchievementStepsToDatabase(newQuestAchievementSteps); #endregion if (logChanges.Count > 0) { Logger.LogMultipleEntries(logChanges, _dbContext); } Save(); CheckAllUserQuestCompletion(currentQuest.id); }
public static void SaveQuestTemplate(quest_template q) { var o = (from d in DB.LEGACY.quest_template where d.ID == q.ID select d).SingleOrDefault(); if (o != null) { DB.LEGACY.quest_template.Remove(o); DB.LSave(); } DB.LEGACY.quest_template.Add(q); DB.LSave(); }
/// <summary> /// Add the quest_template to the database /// </summary> /// <param name="template">The quest_template created from the AddQuestViewModel</param> private void AddQuestTemplateToDatabase(quest_template template) { _dbContext.quest_template.Add(template); }
public RaceSelector(quest_template q) { InitializeComponent(); _q = q; CheckRace(); }
public static void SaveQuestTemplate(quest_template q) { var o = (from d in DB.LEGACY.quest_template where d.Id == q.Id select d).SingleOrDefault(); if (o != null) DB.LEGACY.quest_template.Remove(o); DB.LEGACY.quest_template.Add(q); DB.LEGACY.SaveChanges(); DB.Refresh(); }