Exemplo n.º 1
0
        public async Task <IHttpActionResult> Post([FromBody] CardDTO cardDTO)
        {
            if (cardDTO == null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var createdCard = await _cardsService.RegisterCard(cardDTO.ToCard());

            return(Ok(createdCard.CardGuid));
        }
        public async Task <CardDTO> CreateCardAsync(CardDTO cardDTO)
        {
            if (cardDTO.Discriminator != "PlanCard" && cardDTO.Discriminator != "HabitCard")
            {
                throw new Exception("Card type is not exist!");
            }
            if (cardDTO.Discriminator != "PlanCard")
            {
                PlanCard planCard = (PlanCard)cardDTO.ToCard();
                db.PlanCards.Add(planCard);
                await db.SaveChangesAsync();

                return(db.PlanCards.FirstOrDefault(pc => pc.Id == planCard.Id).ToCardDTO());
            }
            if (cardDTO.Discriminator != "HabitCard")
            {
                HabitCard habitCard = (HabitCard)cardDTO.ToCard();
                db.HabitCards.Add(habitCard);
                await db.SaveChangesAsync();

                return(db.HabitCards.FirstOrDefault(pc => pc.Id == habitCard.Id).ToCardDTO());
            }
            return(null);
        }
Exemplo n.º 3
0
        public void LoadUserData(User user, string usertoken)
        {
            using NpgsqlConnection con = new NpgsqlConnection(_cs);
            try
            {
                con.Open();
            }
            catch (PostgresException e)
            {
                return;
            }

            using NpgsqlCommand cmd = new NpgsqlCommand();
            cmd.Connection          = con;
            cmd.CommandText         = @"CREATE TABLE IF NOT EXISTS userdata(token VARCHAR(255), coins INTEGER, elo INTEGER, deck VARCHAR(255), stack VARCHAR(800))";
            cmd.ExecuteNonQuery();

            string sqlCheckUser = "******";

            using NpgsqlCommand cmdCheckUser = new NpgsqlCommand(sqlCheckUser, con);
            using NpgsqlDataReader reader    = cmdCheckUser.ExecuteReader();
            List <string> deckIds  = new List <string>();
            List <string> stackIds = new List <string>();

            while (reader.Read())
            {
                if (reader.GetString(0) == usertoken)
                {
                    user.Coins = reader.GetInt32(1);
                    user.ELO   = reader.GetInt32(2);
                    deckIds    = JsonSerializer.Deserialize <CardIdsDTO>(reader.GetString(3)).CardIds;
                    stackIds   = JsonSerializer.Deserialize <CardIdsDTO>(reader.GetString(4)).CardIds;
                }
            }
            reader.Close();

            cmd.CommandText = @"CREATE TABLE IF NOT EXISTS cards(id VARCHAR(255), name VARCHAR(255), cardtype VARCHAR(255), element VARCHAR(255), damage DOUBLE PRECISION)";
            cmd.ExecuteNonQuery();
            string sqlAllCards = "SELECT * FROM cards";

            using NpgsqlCommand cmdCards       = new NpgsqlCommand(sqlAllCards, con);
            using NpgsqlDataReader readerCards = cmdCards.ExecuteReader();
            while (readerCards.Read())
            {
                foreach (var cardId in deckIds)
                {
                    if (readerCards.GetString(0) == cardId)
                    {
                        CardDTO cardDto = new CardDTO(readerCards.GetString(0), readerCards.GetString(1), readerCards.GetString(2), readerCards.GetString(3), readerCards.GetDouble(4));
                        Card    card    = cardDto.ToCard();
                        user.Deck.AddCard(card);
                    }
                }

                foreach (var cardId in stackIds)
                {
                    if (readerCards.GetString(0) == cardId)
                    {
                        CardDTO cardDto = new CardDTO(readerCards.GetString(0), readerCards.GetString(1), readerCards.GetString(2), readerCards.GetString(3), readerCards.GetDouble(4));
                        Card    card    = cardDto.ToCard();
                        user.Stack.AddCard(card);
                    }
                }
            }

            ClientSingleton.GetInstance.ClientMap.AddOrUpdate(usertoken, user, (key, oldValue) => user);
        }
Exemplo n.º 4
0
        public string AquirePackage(string usertoken, string packageId)
        {
            User user;

            ClientSingleton.GetInstance.ClientMap.TryGetValue(usertoken, out user);
            if (user.Coins == 0)
            {
                return("POST ERR - No coins");
            }

            using NpgsqlConnection con = new NpgsqlConnection(_cs);
            try
            {
                con.Open();
            }
            catch (PostgresException e)
            {
                return("POST ERR - No DB connection");
            }

            List <string> cardIds        = null;
            string        sqlAllPackages = "SELECT * FROM packages";

            using NpgsqlCommand cmdPackages = new NpgsqlCommand(sqlAllPackages, con);
            using NpgsqlDataReader reader   = cmdPackages.ExecuteReader();
            while (reader.Read())
            {
                if (reader.GetString(0) == packageId)
                {
                    try
                    {
                        cardIds = JsonSerializer.Deserialize <PackageDTO>(reader.GetString(1)).CardIds;
                    }
                    catch (Exception e)
                    {
                        cardIds = null;
                    }
                }
            }
            reader.Close();
            if (cardIds == null || cardIds.Count == 0)
            {
                return("POST ERR - Invalid PackageID");
            }

            CardPackage pack        = new CardPackage();
            string      sqlAllCards = "SELECT * FROM cards";

            using NpgsqlCommand cmdCards       = new NpgsqlCommand(sqlAllCards, con);
            using NpgsqlDataReader readerCards = cmdCards.ExecuteReader();
            while (readerCards.Read())
            {
                foreach (var cardId in cardIds)
                {
                    if (readerCards.GetString(0) == cardId)
                    {
                        CardDTO cardDto = new CardDTO(readerCards.GetString(0), readerCards.GetString(1), readerCards.GetString(2), readerCards.GetString(3), readerCards.GetDouble(4));
                        Card    card    = cardDto.ToCard();
                        pack.AddCard(card);
                    }
                }
            }
            user.AddCardsToStack(pack);
            readerCards.Close();
            _userDataService.PersistUserData(user, usertoken);
            return("POST OK - Package aquired");
        }