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); }
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)); }
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]); }