Пример #1
0
        public static bool VerifyCardList(List <CollectionCard> list, out List <CollectionCard> verifiedList, out string error)
        {
            var requestEngine = new ScryfallRequestEngine();

            error = "";
            var errorLine = 0;

            verifiedList = new List <CollectionCard>();

            foreach (var card in list)
            {
                errorLine++;

                if (requestEngine.GetCard(card.Name, card.SetCode) == null)
                {
                    error = $"Error processing the Card named {card.Name}" + (!string.IsNullOrEmpty(card.SetCode)
                        ? $" with Set Code {card.SetCode}."
                        : ".");
                    error += $" (Line {errorLine})";

                    return(false);
                }

                card.Name = requestEngine.GetCard(card.Name, card.SetCode).Name;
            }

            if (list.Count(i => i.Commander) > 1)
            {
                var commanders = list.Where(i => i.Commander).ToList();

                foreach (var commander in commanders)
                {
                    var card = requestEngine.GetCard(commander.Name, commander.SetCode);
                    if (!card.TypeLine.Contains("Legendary") && !card.TypeLine.Contains("Creature") || !card.OracleText.Contains("can be your commander"))
                    {
                        error =
                            "Your Commander has to be a Legendary Creature or a card with \"can be your commander\" in its rules text.";
                        return(false);
                    }
                }

                if (!commanders.All(i => i.Name.Contains("Kenrith")))
                {
                    foreach (var commander in commanders)
                    {
                        var card = requestEngine.GetCard(commander.Name);
                        if (!card.OracleText.Contains("Partner") && !card.OracleText.Contains("Partner with"))
                        {
                            error = "You can't have more than one commander in your list.";
                            return(false);
                        }
                    }
                }
            }

            verifiedList = list;
            return(true);
        }
Пример #2
0
        public ActionResult CardDetails(string cardName, string setCode)
        {
            var requestEngine = new ScryfallRequestEngine();
            var card          = requestEngine.GetCard(cardName, setCode);

            return(card != null?View("CardDetails", card) : View("~/Views/Shared/CardNotFound.cshtml", null, cardName));
        }
Пример #3
0
        public static Card GetCachedCard(string cardName)
        {
            var key = $"{cardName}_card";

            if (!cache.Contains(key))
            {
                var card = scryfallRequestEngine.GetCard(cardName);
                // TODO: Make sure the card being added is legit
                if (card != null)
                {
                    cache.Set($"{cardName}_card", card, DateTime.Now.AddDays(7));
                }
            }

            return((Card)cache[key]);
        }