public ActionResult NewCollection() { var model = new EditCollectionModel { Collection = new Collection { Cards = new List <CollectionCard>(), CreateDate = DateTime.Now, LastEditDate = DateTime.Now } }; return(View("EditCollection", model)); }
public ActionResult EditCollection(int id) { var email = ((ClaimsIdentity)User.Identity).Claims.First(i => i.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress").Value; var user = ApplicationUserEngine.GetApplicationUser(email); if (user.Collections.Any(i => i.CollectionId == id)) { var collection = user.Collections.First(i => i.CollectionId == id); var model = new EditCollectionModel { Collection = collection, RawList = CardListParsingEngine.GetCardList(collection.Cards) }; return(View("EditCollection", model)); } TempData["AlertMsg"] = "<br /><div class=\"alert alert-danger alert-dismissible\">" + "<a href=\"#\" class=\"close\" data-dismiss=\"alert\" aria-label=\"close\">×</a>" + "<strong>You are not authorized to edit this collection.</div>"; return(View("Error")); }
public ActionResult SaveCollection(EditCollectionModel model) { var email = ((ClaimsIdentity)User.Identity).Claims.First(i => i.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress").Value; var collectionCards = CardListParsingEngine.ParseCardList(model.RawList, out var error); if (string.IsNullOrEmpty(model.Collection.Name)) { model.Collection.Name = "Unnamed Collection"; } else { model.Collection.Name = model.Collection.Name.Trim(); } if (!string.IsNullOrEmpty(error)) { TempData["AlertMsg"] = "<br /><div class=\"alert alert-danger alert-dismissible\">" + "<a href=\"#\" class=\"close\" data-dismiss=\"alert\" aria-label=\"close\">×</a>" + $"<strong>{error}</div>"; return(View("EditCollection", model)); } if (!CardListParsingEngine.VerifyCardList(collectionCards, out collectionCards, out error)) { TempData["AlertMsg"] = "<br /><div class=\"alert alert-danger alert-dismissible\">" + "<a href=\"#\" class=\"close\" data-dismiss=\"alert\" aria-label=\"close\">×</a>" + $"<strong>{error}</div>"; return(View("EditCollection", model)); } model.Collection.Cards = collectionCards; // only change the date if it's not a new collection in order to keep the dates the same for the first save if (model.Collection.CollectionId > 0) { model.Collection.LastEditDate = DateTime.Now; } // make a backup of the list, since we have to null the original list in AddOrUpdateUserCollection() in order to save new lists var cardList = new List <CollectionCard>(model.Collection.Cards); // Save the collection details (this method nulls the collection list) ApplicationUserEngine.AddOrUpdateUserCollection(email, model.Collection, out error); // Only attempt to save the list if nothing is wrong with saving the collection if (string.IsNullOrEmpty(error)) { ApplicationUserEngine.AddOrUpdateUserCollectionCard(model.Collection.CollectionId, cardList, out error); } // Some error saving the collection; display it if (!string.IsNullOrEmpty(error)) { TempData["AlertMsg"] = "<br /><div class=\"alert alert-danger alert-dismissible\">" + "<a href=\"#\" class=\"close\" data-dismiss=\"alert\" aria-label=\"close\">×</a>" + $"<strong>{error}</div>"; // clean the list up (remove blank lines) model.RawList = Regex.Replace(model.RawList, @"^\s+$[\r\n]*", string.Empty, RegexOptions.Multiline); ModelState.Clear(); return(View("EditCollection", model)); } ApplicationUserEngine.UpdateUserInCache(email); TempData["AlertMsg"] = "<br /><div class=\"alert alert-success alert-dismissible\">" + "<a href=\"#\" class=\"close\" data-dismiss=\"alert\" aria-label=\"close\">×</a>" + "<strong>The Collection was saved successfully.</div>"; return(RedirectToAction("EditCollection", new { id = model.Collection.CollectionId })); }