Beispiel #1
0
        public async Task Update(UpdateCardViewModel updateCard)
        {
            Card card = new Card();

            card.Id    = updateCard.Id;
            card.Name  = updateCard.Name;
            card.Value = updateCard.Value;
            await _cardRepository.UpdateCard(card);
        }
Beispiel #2
0
        public async Task <UpdateCardViewModel> Update(int id)
        {
            UpdateCardViewModel getCard = new UpdateCardViewModel();
            Card card = await _cardRepository.GetCardById(id);

            getCard.Id    = card.Id;
            getCard.Name  = card.Name;
            getCard.Value = card.Value;
            return(getCard);
        }
Beispiel #3
0
        // GET: Deck/UpdateCard
        //CHANGE PARAMETER TO INT FOR FINAL - JON
        public ActionResult UpdateCard(int cardId, int?deckId)
        {
            //Get Data for view model
            CardItem card = _db.GetCard(cardId);

            card.Tags = _db.GetAllTagsForCard(cardId);
            int                       userId             = GetActiveUserId();
            List <DeckItem>           userDecks          = _db.GetAllDecksForUser(userId);
            List <DeckItem>           currentCardDecks   = _db.GetAllDecksForCard(cardId, userId);
            Dictionary <string, bool> tagNamesRemoveTrue = new Dictionary <string, bool>();
            List <string>             tagNames           = new List <string>();

            foreach (TagItem tag in card.Tags)
            {
                tagNamesRemoveTrue[tag.TagName] = false;
                tagNames.Add(tag.TagName);
            }
            Dictionary <int, string> deckNameId        = new Dictionary <int, string>();
            Dictionary <int, string> currentDeckNameId = new Dictionary <int, string>();

            foreach (DeckItem deck in userDecks)
            {
                deckNameId[deck.Id] = deck.Name;
            }
            foreach (DeckItem deck in currentCardDecks)
            {
                currentDeckNameId[deck.Id] = deck.Name;
            }

            UpdateCardViewModel result = new UpdateCardViewModel
            {
                CardId             = cardId,
                Term               = card.Term,
                Definition         = card.Definition,
                DeckIdName         = deckNameId,
                CurrentDeckIdName  = currentDeckNameId,
                TagNamesRemoveTrue = tagNamesRemoveTrue,
                TagNames           = tagNames
            };

            if (deckId.HasValue)
            {
                result.DestinationDeckId = deckId.Value;
            }
            //remove current decks from decks dictionary
            result.FilterDeckIdName();

            if (TempData["ErrorMessages"] != null)
            {
                result.UpdateErrors = TempData["ErrorMessages"] as List <string>;
            }

            return(View("UpdateCard", result));
        }
Beispiel #4
0
        public async Task <ActionResult> Edit(int id)
        {
            try
            {
                UpdateCardViewModel card = await _cardService.Update(id);

                return(View(card));
            }
            catch (Exception e)
            {
                return(View("Error"));
            }
        }
Beispiel #5
0
        public async Task <ActionResult> Edit(UpdateCardViewModel card)
        {
            try
            {
                await _cardService.Update(card);

                return(RedirectToAction("Index"));

                return(View(card));
            }
            catch (Exception e)
            {
                return(View("Error"));
            }
        }
Beispiel #6
0
        public ActionResult UpdateCard(UpdateCardViewModel model)
        {
            ActionResult result = RedirectToAction("ViewDecks");

            if (model.DestinationDeckId.HasValue)
            {
                int deckId = model.DestinationDeckId.Value;
                result             = RedirectToAction("DeckDetail", deckId);
                TempData["deckId"] = model.DestinationDeckId.Value;
            }
            List <string> errorMessages = new List <string>();

            //Update Card to Database
            int      userId = GetActiveUserId();
            CardItem card   = new CardItem
            {
                Id         = model.CardId,
                Term       = model.Term,
                Definition = model.Definition,
                UserID     = userId
            };

            bool updateSuccess = _db.UpdateCard(card, model.CardId);

            if (!updateSuccess)
            {
                errorMessages.Add("DATABASE ERROR: Card not updated");
            }

            //Add Card to Decks
            bool deckAddedSuccess = true;

            if (model.NewDeckId.HasValue)
            {
                try
                {
                    _db.AddCardToDeck(model.CardId, model.NewDeckId.Value);
                }
                catch (Exception e)
                {
                    deckAddedSuccess = false;
                    errorMessages.Add(e.Message);
                }
            }

            //Add Tags
            bool tagAddedSuccess = true;

            if (model.AddTag != null)
            {
                try
                {
                    _db.AddTagToCard(model.AddTag, model.CardId);
                }
                catch (Exception e)
                {
                    tagAddedSuccess = false;
                    errorMessages.Add(e.Message);
                }
            }

            //Remove Tags
            bool tagRemovedSuccess = true;

            foreach (KeyValuePair <string, bool> item in model.TagNamesRemoveTrue)
            {
                if (item.Value)
                {
                    tagRemovedSuccess = _db.RemoveTagFromCard(item.Key, model.CardId);
                }
            }
            if (!tagRemovedSuccess)
            {
                errorMessages.Add("DATABASE ERROR: Tag not removed");
            }

            if (!updateSuccess || !deckAddedSuccess || !tagAddedSuccess || !tagRemovedSuccess)
            {
                result = RedirectToAction("UpdateCard", model.DestinationDeckId.Value);
                TempData["ErrorMessages"] = errorMessages;
            }
            else
            {
                TempData["UpdateSuccess"] = $"{model.Term} card edit successful";
            }

            return(result);
        }