Beispiel #1
0
        public ActionResult PublishMission([Bind(Include = "Id,Author,CrypticId,Name,Description,Length,Faction,MinimumLevel,Spotlit,Published,Tags,Images,OldImages,Videos,OldVideos")] EditMissionViewModel missionViewModel)
        {
            var mission     = db.Missions.Find(missionViewModel.Id);
            var author      = mission.Author;
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));

            if (author.AutoApproval || UserManager.IsInRole(author.Id, ConstantsHelper.AdminRole))
            {
                missionViewModel.Status = MissionStatus.Published;
            }
            else
            {
                missionViewModel.Status = MissionStatus.InReview;
                try
                {
                    EmailHelper.ReportMissionNeedsApproval(mission);
                }
                catch
                {
                }
            }

            return(Edit(missionViewModel));
        }
Beispiel #2
0
 public MainWindow()
 {
     InitializeComponent();
     Content = new EditMissionViewModel();
 }
Beispiel #3
0
        private ActionResult Edit(EditMissionViewModel missionViewModel)
        {
            if (ModelState.IsValid)
            {
                //check if cryptic id is already used
                if (db.Missions.Any(m => m.CrypticId.Equals(missionViewModel.CrypticId) && m.Id != missionViewModel.Id))
                {
                    ModelState.AddModelError("DuplicateCrypticID", "Cryptic ID already exists.");

                    List <SelectListItem> publishedSelectItems = MissionHelper.GetYesNoSelectList();
                    ViewBag.AvailableTags          = db.MissionTagTypes.Select(t => t.TagName).ToList();
                    ViewBag.PublishedSelectList    = new SelectList(publishedSelectItems, "Value", "Text");
                    ViewBag.MinimumLevelSelectList = new SelectList(MissionHelper.GetMinimumLevelSelectList(), "Value", "Text");
                    return(View("edit", missionViewModel));
                }


                var mission = db.Missions.Find(missionViewModel.Id);
                var user    = mission.Author;
                mission.CrypticId       = missionViewModel.CrypticId.ToUpper();
                mission.Name            = missionViewModel.Name;
                mission.Description     = missionViewModel.Description;
                mission.Length          = missionViewModel.Length;
                mission.Faction         = missionViewModel.Faction;
                mission.MinimumLevel    = missionViewModel.MinimumLevel;
                mission.Spotlit         = missionViewModel.Spotlit;
                mission.Status          = missionViewModel.Status;
                mission.DateLastUpdated = DateTime.Now;


                // in case the tags list is null create a blank one
                if (missionViewModel.Tags == null)
                {
                    missionViewModel.Tags = new List <string>();
                }
                //first remove the tags that don't exist anymore
                var currentTags = mission.Tags.ToList();
                foreach (var tag in currentTags)
                {
                    if (!missionViewModel.Tags.Contains(tag.TagName))
                    {
                        mission.Tags.Remove(tag);
                    }
                }
                //now add the tags that don't exist
                foreach (var tag in missionViewModel.Tags)
                {
                    var tagType = db.MissionTagTypes.FirstOrDefault(t => t.TagName.Equals(tag));
                    if (tagType != null)
                    {
                        if (!mission.Tags.Contains(tagType))
                        {
                            mission.Tags.Add(tagType);
                        }
                    }
                }

                db.SaveChanges();

                //now do images
                try
                {
                    var changedImages = false;
                    //set some defaults in case its null
                    #region Defaults
                    if (missionViewModel.OldImages == null)
                    {
                        missionViewModel.OldImages = new List <string>();
                    }
                    if (missionViewModel.Images == null)
                    {
                        missionViewModel.Images = new List <HttpPostedFileBase>();
                    }
                    if (mission.Images == null)
                    {
                        mission.Images = new List <MissionImage>();
                    }
                    #endregion
                    //check for removed images first
                    //if its different then a change was made, need to remove the images
                    if (missionViewModel.OldImages.Count != mission.Images.Count)
                    {
                        MissionImagesHelper.CheckForRemovedImages(db, mission, missionViewModel.OldImages);
                        changedImages = true;
                    }

                    //add new images
                    if (missionViewModel.Images.Count > 0)
                    {
                        var images = MissionImagesHelper.ValidateImages(missionViewModel.Images);
                        MissionImagesHelper.AddImages(images, mission);
                        changedImages = true;
                    }

                    if (changedImages)
                    {
                        db.SaveChanges();
                    }
                }
                catch
                {
                    TempData["Message"] = "An error occured while editing images.";
                }


                //now do videos
                try
                {
                    var changedVideos = false;
                    //set some defaults in case its null
                    #region Defaults
                    if (missionViewModel.OldVideos == null)
                    {
                        missionViewModel.OldVideos = new List <string>();
                    }
                    if (missionViewModel.Videos == null)
                    {
                        missionViewModel.Videos = new List <string>();
                    }
                    if (mission.Videos == null)
                    {
                        mission.Videos = new List <YoutubeVideo>();
                    }
                    #endregion
                    //check for removed videos first
                    //if its different then a change was made, need to remove the videos
                    if (missionViewModel.OldVideos.Count != mission.Videos.Count)
                    {
                        MissionVideosHelper.CheckForRemovedVideos(db, mission, missionViewModel.OldVideos);
                        changedVideos = true;
                    }

                    //add new videos
                    if (missionViewModel.Videos.Count > 0)
                    {
                        var videos = MissionVideosHelper.GetVideoIds(missionViewModel.Videos);
                        MissionVideosHelper.AddVideos(videos, mission);
                        changedVideos = true;
                    }

                    if (changedVideos)
                    {
                        db.SaveChanges();
                    }
                }
                catch
                {
                    TempData["Message"] = "An error occured while editing images.";
                }

                return(RedirectToAction("details", new { link = mission.MissionLink }));
            }
            return(View("edit", missionViewModel));
        }
Beispiel #4
0
 public ActionResult WithdrawMission([Bind(Include = "Id,Author,CrypticId,Name,Description,Length,Faction,MinimumLevel,Spotlit,Published,Tags,Images,OldImages,Videos,OldVideos")] EditMissionViewModel missionViewModel)
 {
     missionViewModel.Status = MissionStatus.Unpublished;
     return(Edit(missionViewModel));
 }
Beispiel #5
0
        public ActionResult Edit(string link)
        {
            if (string.IsNullOrEmpty(link))
            {
                return(RedirectToAction("index", "home"));
            }
            Mission mission = db.Missions.Where(m => m.MissionLink.Equals(link)).FirstOrDefault();

            if (mission == null)
            {
                return(HttpNotFound());
            }

            //only people who can edit a mission are the author or an admin
            if (!mission.Author.UserName.Equals(User.Identity.Name) && !User.IsInRole(ConstantsHelper.AdminRole))
            {
                return(HttpNotFound());
            }

            //if the user is not an admin and it is removed it doesn't exist
            if (mission.Status == MissionStatus.Removed && !User.IsInRole(ConstantsHelper.AdminRole))
            {
                return(HttpNotFound());
            }

            var publishedSelectItems = new List <SelectListItem>();

            #region Published Select List
            publishedSelectItems.Add(new SelectListItem()
            {
                Value = "false",
                Text  = "No",
            });
            publishedSelectItems.Add(new SelectListItem()
            {
                Value = "true",
                Text  = "Yes",
            });
            #endregion

            var editModel = new EditMissionViewModel();
            editModel.Id           = mission.Id;
            editModel.CrypticId    = mission.CrypticId;
            editModel.Name         = mission.Name;
            editModel.Description  = mission.Description;
            editModel.Length       = mission.Length;
            editModel.Faction      = mission.Faction;
            editModel.MinimumLevel = mission.MinimumLevel;
            editModel.Spotlit      = mission.Spotlit;
            editModel.Published    = mission.Published;
            editModel.Status       = mission.Status;
            editModel.Author       = mission.Author;
            editModel.AutoApprove  = mission.Author.AutoApproval;
            editModel.Tags         = mission.Tags.Select(t => t.TagName).ToList();
            editModel.OldImages    = mission.Images.OrderBy(i => i.Order).Select(i => i.Filename).ToList();
            editModel.OldVideos    = mission.Videos.OrderBy(v => v.Order).Select(v => v.YoutubeVideoId).ToList();
            mission.MissionLink    = MissionHelper.GetMissionLink(db, mission);

            var unselectedTags = db.MissionTagTypes.Select(t => t.TagName).ToList();
            foreach (var tags in editModel.Tags)
            {
                unselectedTags.Remove(tags);
            }
            ViewBag.AvailableTags          = unselectedTags;
            ViewBag.PublishedSelectList    = new SelectList(publishedSelectItems, "Value", "Text");
            ViewBag.MinimumLevelSelectList = new SelectList(MissionHelper.GetMinimumLevelSelectList(), "Value", "Text");

            return(View(editModel));
        }