/// <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);
            }
        }
Example #5
0
        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();
            }
        }
Example #8
0
        private void selectRace_Click(object sender, RoutedEventArgs e)
        {
            quest_template o = questList.SelectedItem as quest_template;

            if (o == null)
            {
                return;
            }
            new RaceSelector(o).Show();
        }
Example #9
0
        private void relations_Click(object sender, RoutedEventArgs e)
        {
            quest_template o = questList.SelectedItem as quest_template;

            if (o == null)
            {
                return;
            }
            new QuestRelations(o).Show();
        }
Example #10
0
        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.");
        }
Example #11
0
        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);
        }
Example #12
0
        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.");
        }
Example #13
0
        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;
        }
Example #14
0
 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;
     }
 }
Example #15
0
 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;
 }
Example #16
0
 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();
        }
Example #18
0
        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();
        }
Example #20
0
        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);
        }
Example #23
0
 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);
 }
Example #25
0
 public RaceSelector(quest_template q)
 {
     InitializeComponent();
     _q = q;
     CheckRace();
 }
Example #26
0
 public RaceSelector(quest_template q)
 {
     InitializeComponent();
     _q = q;
     CheckRace();
 }
 /// <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);
 }
Example #28
0
 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();
 }