public List<Tuple<Theme, bool>> GetAll(Guest guest)
 {
     try {
         List<string> columnNames = new List<string> ();
         columnNames.Add ("guestId");
         columnNames.Add ("themeId");
         columnNames.Add ("likeValue");
         StatementValue where = new StatementValue ()
     {
         Item1 = "guestId = @StatementValue0",
         Item2 = new List<string>(new string[]{guest.Id.ToString()})
     };
         List<List<string>> result = this.Select (columnNames, where);
         List<Tuple<Theme, bool>> objs = new List<Tuple<Theme, bool>> ();
         List<Theme> themes = (new ThemesTable (this.entity)).GetAll ();
         for (int i = 0; i < result[0].Count; i++) {
             Theme theme = themes.Find (thme => thme.Id == int.Parse (result [1] [i]));
             bool like = bool.Parse (result [2] [i]);
             objs.Add (new Tuple<Theme, bool> (theme, like));
         }
         return objs;
     } catch (MySqlException ex) {
         switch (ex.Number) {
         case 0:
             throw new DatabaseException ("Cannot connect to server.  Contact administrator", ex);
         case 1045:
             throw new DatabaseException ("Invalid username/password, please try again", ex);
         default:
             throw new DatabaseException (ex.Message, ex);
         }
     }
 }
        /// <summary>
        /// Adds a guest to the database and also adds it's likes and dislikes.
        /// </summary>
        /// <param name="guest">The Guest.</param>
        public void Add(Guest guest, Game game)
        {
            try {
                List<ColumnValue> columns = new List<ColumnValue> ();
                columns.Add (new ColumnValue () { Item1 = "name", Item2 = guest.Name });
                columns.Add (new ColumnValue () { Item1 = "avatarId", Item2 = guest.AvatarId.ToString() });
                columns.Add (new ColumnValue () { Item1 = "gameId", Item2 = game.Id.ToString() });
                guest.Id = (int)this.Insert (columns).LastInsertedId;

                LikesTable likesTable = new LikesTable (this.entity);
                foreach (Theme theme in guest.Likes) {
                    likesTable.AddLike (guest, theme, true);
                }
                foreach (Theme theme in guest.Dislikes) {
                    likesTable.AddLike (guest, theme, false);
                }
            } catch (MySqlException ex) {
                switch (ex.Number) {
                case 0:
                    throw new DatabaseException ("Cannot connect to server.  Contact administrator", ex);
                case 1045:
                    throw new DatabaseException ("Invalid username/password, please try again", ex);
                default:
                    throw new DatabaseException (ex.Message, ex);
                }
            }
        }
Example #3
0
 public Player(int id, Guest guest, float budget, bool inUse, int colorId, float time, bool wasUsed, int itemsReturned)
     : this(id, guest)
 {
     this.Budget = budget;
     this.InUse = inUse;
     this.ColorId = colorId;
     this.Time = time;
     this.WasUsed = wasUsed;
     this.ItemsReturned = itemsReturned;
 }
 public void Delete(Guest obj)
 {
     try {
         StatementValue where = new StatementValue ();
         where.Item1 = "id = @StatementValue0";
         where.Item2 = new List<string> ();
         where.Item2.Add (obj.Id.ToString ());
         this.Delete (where);
     } catch (MySqlException ex) {
         switch (ex.Number) {
         case 0:
             throw new DatabaseException ("Cannot connect to server.  Contact administrator", ex);
         case 1045:
             throw new DatabaseException ("Invalid username/password, please try again", ex);
         default:
             throw new DatabaseException (ex.Message, ex);
         }
     }
 }
 public void AddLike(Guest obj, Theme theme, bool like)
 {
     try {
         List<ColumnValue> columns = new List<ColumnValue> ();
         int likeValue = like ? 1 : 0;
         columns.Add (new ColumnValue () { Item1 = "guestId", Item2 = obj.Id.ToString() });
         columns.Add (new ColumnValue () { Item1 = "themeId", Item2 = theme.Id.ToString() });
         columns.Add (new ColumnValue () { Item1 = "likeValue", Item2 = likeValue.ToString() });
         this.Insert (columns);
     } catch (MySqlException ex) {
         switch (ex.Number) {
         case 0:
             throw new DatabaseException ("Cannot connect to server.  Contact administrator", ex);
         case 1045:
             throw new DatabaseException ("Invalid username/password, please try again", ex);
         default:
             throw new DatabaseException (ex.Message, ex);
         }
     }
 }
        public void Save(Guest obj, Theme theme, bool like)
        {
            try {
                List<ColumnValue> columns = new List<ColumnValue> ();
                int likeValue = like ? 1 : 0;
                columns.Add (new ColumnValue () { Item1 = "likeValue", Item2 = likeValue.ToString() });

                StatementValue where = new StatementValue ();
                where.Item1 = "guestId = @StatementValue0 AND themeId = @StatementValue1";
                where.Item2 = new List<string> ();
                where.Item2.Add (obj.Id.ToString ());
                where.Item2.Add (theme.Id.ToString ());

                this.Update (columns, where);
            } catch (MySqlException ex) {
                switch (ex.Number) {
                case 0:
                    throw new DatabaseException ("Cannot connect to server.  Contact administrator", ex);
                case 1045:
                    throw new DatabaseException ("Invalid username/password, please try again", ex);
                default:
                    throw new DatabaseException (ex.Message, ex);
                }
            }
        }
Example #7
0
 public Player(int id, Guest guest)
     : this(guest)
 {
     this.Id = id;
 }
Example #8
0
 public Player(Guest guest)
     : this()
 {
     this.Guest = guest;
 }
Example #9
0
 private Guest CreateGuest(int avatarId, List<Guest> guests)
 {
     Guest guest = new Guest();
     guest.AvatarId = avatarId;
     guest.Name = guests.Find(gst => gst.AvatarId == avatarId).Name;
     return guest;
 }
Example #10
0
 private Guest CreateGuest(int avatarId)
 {
     Guest guest = new Guest();
     guest.AvatarId = avatarId;
     switch (avatarId)
     {
         case 0:
             guest.Name = "Pedro";
             break;
         case 1:
             guest.Name = "Leonor";
             break;
         case 2:
             guest.Name = "Gabriel";
             break;
         case 3:
             guest.Name = "Gonçalo";
             break;
         case 4:
             guest.Name = "Mariana";
             break;
         case 5:
             guest.Name = "Miguel";
             break;
         case 6:
             guest.Name = "Carolina";
             break;
         case 7:
             guest.Name = "Margarida";
             break;
         default:
             guest.Name = string.Empty;
             break;
     }
     return guest;
 }
Example #11
0
        public int HappynessPointSum(Guest guest, int[] themesPoints)
        {
            int index;
            int playerPoints = 0;
            //see if he likes
            foreach (Theme guestLike in guest.Likes)
            {
                index = guestLike.Id - 1; //id of themes start in 1.
                playerPoints += themesPoints[index];
            }
            //see if he does not like
            foreach (Theme guestDislike in guest.Dislikes)
            {
                index = guestDislike.Id - 1;
                playerPoints -= themesPoints[index];
            }

            return playerPoints;
        }
        /// <summary>
        /// Saves the specified guest to the database.
        /// </summary>
        /// <remarks>
        /// Also updates it's likes and dislikes (removing old ones and adding new ones)
        /// </remarks>
        /// <param name="guest">The guest.</param>
        public void Save(Guest guest, Game game)
        {
            try {
                if (guest.Id < 0) {
                    return;
                }

                List<ColumnValue> columns = new List<ColumnValue> ();
                columns.Add (new ColumnValue () { Item1 = "name", Item2 = guest.Name });
                columns.Add (new ColumnValue () { Item1 = "avatarId", Item2 = guest.AvatarId.ToString() });
                columns.Add (new ColumnValue () { Item1 = "gameId", Item2 = game.Id.ToString() });

                StatementValue where = new StatementValue ();
                where.Item1 = "id = @StatementValue0";
                where.Item2 = new List<string> ();
                where.Item2.Add (guest.Id.ToString ());

                this.Update (columns, where);

                LikesTable likesTable = new LikesTable (this.entity);
                List<Tuple<Theme, bool>> likes = likesTable.GetAll (guest);
                // Delete removed likes
                foreach (Tuple<Theme, bool> like in likes) {
                    if (!guest.Likes.Contains (like.Item1) && !guest.Dislikes.Contains (like.Item1)) {
                        likesTable.Delete (guest, like.Item1);
                    }
                }

                // Update likes and add new likes
                foreach (Theme theme in guest.Likes) {
                    Tuple<Theme, bool> findTheme = likes.Find (thmeLike => thmeLike.Item1.Equals (theme));
                    if (findTheme == null) {
                        likesTable.AddLike (guest, theme, true);
                    } else {
                        if (!findTheme.Item2)
                            likesTable.Save (guest, theme, true);
                    }
                }
                foreach (Theme theme in guest.Dislikes) {
                    Tuple<Theme, bool> findTheme = likes.Find (thmeLike => thmeLike.Item1.Equals (theme));
                    if (findTheme == null) {
                        likesTable.AddLike (guest, theme, false);
                    } else {
                        if (findTheme.Item2)
                            likesTable.Save (guest, theme, false);
                    }
                }
            } catch (MySqlException ex) {
                switch (ex.Number) {
                case 0:
                    throw new DatabaseException ("Cannot connect to server.  Contact administrator", ex);
                case 1045:
                    throw new DatabaseException ("Invalid username/password, please try again", ex);
                default:
                    throw new DatabaseException (ex.Message, ex);
                }
            }
        }