Пример #1
0
        public void Init()
        {
            deckRepo = new MongoDeckRepository("mongodb://localhost");
            UserId   = Guid.NewGuid();
            Deck            deck  = new Deck();
            List <DeckCard> cards = new List <DeckCard>();

            cards.Add(new DeckCard()
            {
                MultiverseId = 1,
                Amount       = 2
            });

            List <DeckCard> sideBoard = new List <DeckCard>();

            sideBoard.Add(new DeckCard()
            {
                MultiverseId = 34,
                Amount       = 3
            });

            deck.Cards       = cards;
            deck.SideBoard   = sideBoard;
            deck.Description = "This is a test deck.";
            deck.IsPublic    = true;
            deck.Name        = "Test Deck";
            deck.CreatedAt   = DateTime.Now;
            deck.UserId      = UserId;

            deck   = deckRepo.AddDeck(deck);
            DeckId = deck.Id;
        }
Пример #2
0
        public void Add_deck()
        {
            Deck            deck  = new Deck();
            List <DeckCard> cards = new List <DeckCard>();

            cards.Add(new DeckCard()
            {
                MultiverseId = 1,
                Amount       = 2
            });

            List <DeckCard> sideBoard = new List <DeckCard>();

            sideBoard.Add(new DeckCard()
            {
                MultiverseId = 34,
                Amount       = 3
            });

            deck.Cards       = cards;
            deck.SideBoard   = sideBoard;
            deck.Description = "This is a test deck 2";
            deck.IsPublic    = true;
            deck.Name        = "Test Deck 2";
            deck.CreatedAt   = DateTime.Now;
            deck.UserId      = this.UserId;

            deck = deckRepo.AddDeck(deck);

            Assert.NotNull(deck);
        }
Пример #3
0
        public DeckViewerModule()
        {
            Get["/decks/viewer/{deckId?}"] = parameters => {
                DeckModel model = new DeckModel();
                model.ActiveMenu   = "mydecks";
                model.Planeswalker = (Planeswalker)this.Context.CurrentUser;
                model.Title        = "M:tgDb - Simple Deck Viewer";

                if (parameters.deckId != null)
                {
                    Guid id;

                    if (Guid.TryParse((string)parameters.deckId, out id))
                    {
                        model.Deck = deckbuilder.GetDeck(id);

                        if (model.Deck != null)
                        {
                            model.Name        = model.Deck.Name;
                            model.Description = model.Description;
                            model.DeckFile    = MtgFile.ExportDec(model.Deck);
                        }
                    }
                }

                return(View["Deck/Deck", model]);
            };

            Post["/decks/viewer/{deckId?}"] = parameters => {
                DeckModel model = this.Bind <DeckModel>();
                model.ActiveMenu   = "mydecks";
                model.Planeswalker = (Planeswalker)this.Context.CurrentUser;
                model.Title        = "M:tgDb - Simple Deck Viewer";

                var result = this.Validate(model);

                if (!result.IsValid)
                {
                    model.Errors = ErrorUtility.GetValidationErrors(result);
                    return(View["Deck/Deck", model]);
                }


                byte[]       byteArray = Encoding.ASCII.GetBytes(model.DeckFile);
                MemoryStream stream    = new MemoryStream(byteArray);

                try
                {
                    model.Deck = MtgFile.ImportDec(stream);

                    if (model.Deck.Cards.Count == 0)
                    {
                        model.Errors.Add("Deck file contains no valid cards.");
                        return(View["Deck/Deck", model]);
                    }
                }
                catch (Exception exc)
                {
                    model.Errors.Add(exc.Message);
                    return(View["Deck/Deck", model]);
                }

                if (parameters.deckId != null)
                {
                    Guid id;

                    if (Guid.TryParse((string)parameters.deckId, out id))
                    {
                        Deck deck = null;
                        try
                        {
                            deck = deckbuilder.GetDeck(id);
                        }
                        catch (Exception exc)
                        {
                            model.Errors.Add(exc.Message);
                        }

                        if (deck != null)
                        {
                            model.Deck.UserId    = deck.UserId;
                            model.Deck.Id        = deck.Id;
                            model.Deck.CreatedAt = deck.CreatedAt;
                        }
                    }
                }

                if (Request.Form.Save != null)
                {
                    if (model.Deck.Id != Guid.Empty &&
                        model.Planeswalker.Id == model.Deck.UserId)
                    {
                        model.Deck.UserId      = model.Planeswalker.Id;
                        model.Deck.Name        = model.Name;
                        model.Deck.Description = model.Description;
                        try
                        {
                            model.Deck = deckbuilder.UpdateDeck(model.Deck);
                        }
                        catch (Exception exc)
                        {
                            model.Errors.Add(exc.Message);
                        }
                    }
                    else
                    {
                        if (model.Planeswalker != null)
                        {
                            model.Deck.UserId = model.Planeswalker.Id;
                        }

                        model.Deck.Name        = model.Name;
                        model.Deck.Description = model.Description;
                        try
                        {
                            model.Deck = deckbuilder.AddDeck(model.Deck);
                        }
                        catch (Exception exc)
                        {
                            model.Errors.Add(exc.Message);
                        }

                        if (model.Deck.UserId == Guid.Empty && !string.IsNullOrEmpty(model.Email))
                        {
                            try
                            {
                                Email.Send(model.Email, "M:tgDb - You created an anonymous deck!",
                                           string.Format("Deck link: https://www.mtgdb.info/decks/viewer/{0}",
                                                         model.Deck.Id));
                            }
                            catch (Exception exc)
                            {
                                model.Errors.Add(exc.Message);
                            }
                        }
                    }

                    return(Response.AsRedirect(string.Format("/decks/viewer/{0}",
                                                             model.Deck.Id.ToString())));
                }

                return(View["Deck/Deck", model]);
            };
        }