예제 #1
0
        public messageModel delete(roomModel value)
        {
            messageModel result = new messageModel();

            try
            {
                using (var context = new StandardCanEntities())
                {
                    if (String.IsNullOrEmpty(value.user_id))
                    {
                        throw new Exception("Unauthorized Access");
                    }
                    var userId = JwtHelper.GetUserIdFromToken(value.user_id);
                    if (String.IsNullOrEmpty(userId))
                    {
                        throw new Exception("Unauthorized Access");
                    }

                    int ret = context.sp_room_delete(value.id, userId);
                }

                result.status  = "S";
                result.message = "";
            }
            catch (Exception ex)
            {
                result.status  = "E";
                result.message = ex.Message.ToString();
            }

            return(result);
        }
예제 #2
0
        /// <summary>
        /// Activates a room user and makes it appear in the door of the room.
        /// </summary>
        /// <param name="Session">The Woodpecker.Sessions.Session object of the user that is ready to interact with the room.</param>
        public void startUser(Session Session)
        {
            if (!enteringSessions.Contains(Session.ID)) // Invalid entry
            {
                return;
            }

            roomUser newUser = new roomUser(Session);

            if (Session.authenticatedTeleporter == 0)
            {
                roomModel Model = this.getModel();
                if (Model == null)
                {
                    return;
                }
                newUser.X = Model.doorX;
                newUser.Y = Model.doorY;
                newUser.Z = Model.doorZ;
            }
            else
            {
                Items.floorItem pItem = this.getFloorItem(Session.authenticatedTeleporter);
                if (pItem != null && pItem.Definition.Behaviour.isTeleporter)
                {
                    newUser.X = pItem.X;
                    newUser.Y = pItem.Y;
                    newUser.Z = pItem.Z;
                    Session.authenticatedTeleporter = 0;

                    this.broadcoastTeleportActivity(pItem.ID, Session.User.Username, false);
                }
                else
                {
                    return; // Invalid item used to enter flat
                }
            }
            newUser.ID = this.getFreeRoomUnitIdentifier();

            if (this.Information.isUserFlat)
            {
                newUser.isOwner = (Session.User.Username == this.Information.Owner ||
                                   Session.User.hasFuseRight("fuse_any_room_controller"));

                newUser.hasRights = (newUser.isOwner ||
                                     this.Information.superUsers ||
                                     Engine.Game.Rooms.userHasRightsInRoom(Session.User.ID, this.roomID));

                newUser.refreshRights();
            }

            // User has entered
            Session.roomID = this.roomID;

            this.enteringSessions.Remove(Session.ID);
            this.roomUsers.Add(Session.ID, newUser);

            this.castRoomUnit(newUser.ToString());
            this.updateUserAmount();
        }
        private void locBtn2_Click(object sender, EventArgs e)
        {
            roomsConn roomsConn           = new roomsConn();
            roomModel roomsModel          = new roomModel();
            String    selectedSessionType = sessionType.Text.ToString();

            roomsModel.roomName    = assignRoom.Text;
            roomsModel.subjectCode = asubjectCode.Text;
            roomsModel.facultyNme  = faculty.Text;
            roomsConn.updateSessionTable(roomsModel, notavltime.Text.ToString(), selectedSessionType);
            roomManagingSource.DataSource = roomsConn.load_con_sesssion_details();
        }
예제 #4
0
        public messageModel insert(roomModel value)
        {
            messageModel result = new messageModel();

            try
            {
                System.Data.Entity.Core.Objects.ObjectParameter myOutputParamInt = new System.Data.Entity.Core.Objects.ObjectParameter("r_id", typeof(Int32));
                using (var context = new StandardCanEntities())
                {
                    if (String.IsNullOrEmpty(value.user_id))
                    {
                        throw new Exception("Unauthorized Access");
                    }
                    var userId = JwtHelper.GetUserIdFromToken(value.user_id);
                    if (String.IsNullOrEmpty(userId))
                    {
                        throw new Exception("Unauthorized Access");
                    }

                    //int ret = context.sp_room_insert(value.code, value.name, userId, myOutputParamInt);
                }

                if (myOutputParamInt.Value != null)
                {
                    int r_id = Convert.ToInt32(myOutputParamInt.Value);
                    result.status  = "S";
                    result.message = "";
                    result.value   = r_id.ToString();
                }
                else
                {
                    result.status  = "E";
                    result.message = "";
                }
            }
            catch (Exception ex)
            {
                result.status  = "E";
                result.message = ex.Message.ToString();
            }

            return(result);
        }
예제 #5
0
        // POST api/<controller>
        public HttpResponseMessage Post([FromBody] roomModel value)
        {
            if (value == null)
            {
                return(null);
            }
            JavaScriptSerializer js = new JavaScriptSerializer();

            roomService         service  = new roomService();
            HttpResponseMessage response = null;
            Object result = null;

            switch (value.method)
            {
            case "search":
                result = service.search(value);
                break;

            case "insert":
                result = service.insert(value);
                break;

            case "update":
                result = service.update(value);
                break;

            case "delete":
                result = service.delete(value);
                break;

            default:
                break;
            }


            string json = js.Serialize(result);

            response         = Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
예제 #6
0
 public IEnumerable <sp_room_search_Result> search(roomModel value)
 {
     try
     {
         StandardCanEntities context = new StandardCanEntities();
         if (String.IsNullOrEmpty(value.user_id))
         {
             throw new Exception("Unauthorized Access");
         }
         var userId = JwtHelper.GetUserIdFromToken(value.user_id);
         if (String.IsNullOrEmpty(userId))
         {
             throw new Exception("Unauthorized Access");
         }
         IEnumerable <sp_room_search_Result> result = context.sp_room_search(value.code).AsEnumerable();
         return(result);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
 }
        public ArrayList updateSessionTable(roomModel roommodel, String notavlTime, String sessionType)
        {
            ArrayList arrayList = new ArrayList();

            if (con.State.ToString() != "Open")
            {
                con.Open();
            }

            DataTable dataTable = new DataTable();
            roomsConn roomsConn = new roomsConn();

            if (sessionType.Equals("Consecutive"))
            {
                SqlDataReader dr = roomsConn.load_sesssion_rooms_details(sessionType);

                while (dr.Read())
                {
                    if (con.State.ToString() != "Open")
                    {
                        con.Open();
                    }
                    String subjectCode = Convert.ToString(dr["subjectCode"]);

                    if (roommodel.subjectCode.Equals(subjectCode))
                    {
                        string     query = "update Consecutivetbl set roomName = '" + roommodel.roomName + "'where subjectCode = '" + roommodel.subjectCode + "'";
                        SqlCommand com   = new SqlCommand(query, con);
                        MessageBox.Show("Updated!");
                        com.ExecuteNonQuery();
                        // insertNotAvailableTimes(roommodel.roomName, roommodel.facultyNme, notavlTime);
                    }
                }

                Console.WriteLine("awdwadaw", arrayList);

                return(arrayList);
            }
            else if (sessionType.Equals("Parallel"))
            {
                SqlDataReader dr = roomsConn.load_sesssion_rooms_details(sessionType);

                while (dr.Read())
                {
                    if (con.State.ToString() != "Open")
                    {
                        con.Open();
                    }
                    String subjectCode = Convert.ToString(dr["subjectCode"]);

                    if (roommodel.subjectCode.Equals(subjectCode))
                    {
                        string     query = "update Consecutivetbl set roomName = '" + roommodel.roomName + "'where subjectCode = '" + roommodel.subjectCode + "'";
                        SqlCommand com   = new SqlCommand(query, con);
                        MessageBox.Show("Updated!");
                        com.ExecuteNonQuery();
                        // insertNotAvailableTimes(roommodel.roomName, roommodel.facultyNme, notavlTime);
                    }
                }
                return(arrayList);
            }
            else
            {
                SqlDataReader dr = roomsConn.load_sesssion_rooms_details(sessionType);

                while (dr.Read())
                {
                    if (con.State.ToString() != "Open")
                    {
                        con.Open();
                    }
                    String subjectCode = Convert.ToString(dr["subjectCode"]);

                    if (roommodel.subjectCode.Equals(subjectCode))
                    {
                        string     query = "update Session set roomName = '" + roommodel.roomName + "'where subjectCode = '" + roommodel.subjectCode + "'";
                        SqlCommand com   = new SqlCommand(query, con);
                        MessageBox.Show("Updated!");
                        com.ExecuteNonQuery();
                        // insertNotAvailableTimes(roommodel.roomName, roommodel.facultyNme, notavlTime);
                    }
                }

                return(arrayList);
            }
        }
예제 #8
0
        public void generateFloorMap()
        {
            roomModel Model = this.getModel();

            if (Model == null) // Invalid model
            {
                Engine.Game.Rooms.destroyRoomInstance(this.roomID);
                return;
            }

            #region Generate default map
            string[] Axes = Model.heightMapAxes;
            int      maxX = Axes[0].Length;
            int      maxY = Axes.Length;

            roomTileState[,] stateMap = new roomTileState[maxX, maxY];
            float[,] heightMap        = new float[maxX, maxY];
            char[,] defaultMap        = new char[maxX, maxY];
            char[,] clientMap         = new char[maxX, maxY];

            // Create default floor map
            for (int Y = 0; Y < maxY; Y++)
            {
                for (int X = 0; X < maxX; X++)
                {
                    float H    = 0;
                    char  Tile = Axes[Y][X];

                    defaultMap[X, Y] = Tile;
                    if (Tile != 'x' && float.TryParse(Tile.ToString(), out H))
                    {
                        stateMap[X, Y]  = roomTileState.Free;
                        heightMap[X, Y] = H;
                    }
                    else
                    {
                        stateMap[X, Y] = roomTileState.Blocked;
                    }
                }
            }

            clientMap = defaultMap; // Set client map to default map for now
            #endregion

            #region Main loop for tile states
            foreach (floorItem lItem in this.floorItems)
            {
                foreach (roomTile lTile in getAffectedTiles(lItem, true).Values)
                {
                    if (lItem.Z >= heightMap[lTile.X, lTile.Y])
                    {
                        heightMap[lTile.X, lTile.Y] = lItem.Z;
                    }

                    // If this item is the lowest tile on the tile, and if no items can be placed on top of this item and this item is not interactable, then set proper value for client map

                    /*if (false && heightMap[lTile.X, lTile.Y] == 0
                     *  && !lItem.Definition.Behaviour.canStackOnTop
                     *  && !lItem.Definition.Behaviour.isPublicSpaceObject
                     *  && !lItem.Definition.Behaviour.canSitOnTop
                     *  && !lItem.Definition.Behaviour.canLayOnTop)
                     *  clientMap[lTile.X, lTile.Y] = 'A'; // Tileselector doesn't hover over this tile in client
                     */

                    if (lItem.Z >= heightMap[lTile.X, lTile.Y])
                    {
                        if (lItem.Definition.Behaviour.canStandOnTop)
                        {
                            if (lItem.Z > heightMap[lTile.X, lTile.Y] || lItem.Definition.Behaviour.isRoller)
                            {
                                stateMap[lTile.X, lTile.Y]  = roomTileState.Free;
                                heightMap[lTile.X, lTile.Y] = lItem.totalHeight;
                            }
                        }
                        else if (lItem.Definition.isInteractiveStance)
                        {
                            stateMap[lTile.X, lTile.Y] = roomTileState.Interactive;

                            if (lItem.Definition.Behaviour.canLayOnTop)
                            {
                                // REDIRECT
                            }
                        }
                        else
                        {
                            stateMap[lTile.X, lTile.Y] = roomTileState.Blocked;
                        }
                    }
                }
            }
            #endregion

            bool containsRollers = false;
            bool containsPets    = false;
            bool containsBots    = (Engine.Game.Items.getBotInformation(roomID) != null);
            #region Secondary loop for exceptions and special map additions
            foreach (floorItem lItem in this.floorItems)
            {
                if (lItem.Definition.Behaviour.isRoller)
                {
                    containsRollers = true;
                    continue;
                }
                if (lItem.Definition.Sprite == "nest")
                {
                    containsPets = true;
                    continue;
                }


                // If items can be placed on top of this item and this item is at the top of the root tile, set the clientmap height to the appropriate value
                char tileTopValue = '\x000';

                //if(lItem.Definition.Behaviour.canStackOnTop && lItem.totalHeight == heightMap[lItem.X, lItem.Y])
                //    tileTopValue = Convert.ToChar(((int)Math.Round(lItem.totalHeight)).ToString());

                // If this item is a non-public space seat object, then get the original tile height of the default map

                //if (lItem.Z == lItem.Definition.Behaviour.canSitOnTop && !lItem.Definition.Behaviour.isPublicSpaceObject) // Non-public space object seat
                //    defaultHeight = float.Parse(defaultMap[lItem.X, lItem.Y].ToString());

                roomTileState doorState = roomTileState.Blocked;
                if (lItem.Definition.Behaviour.isDoor) // Item acts as a door, determine state
                {
                    if (lItem.customData == "O")       // Door is open
                    {
                        doorState = roomTileState.Free;
                    }
                    else
                    {
                        doorState = roomTileState.Blocked;
                    }
                }

                foreach (roomTile lTile in getAffectedTiles(lItem, true).Values)
                {
                    if (tileTopValue != '\x000') // Can stack on tile
                    {
                        clientMap[lTile.X, lTile.Y] = tileTopValue;
                    }

                    //if (defaultHeight != -1)
                    //    heightMap[lTile.X, lTile.Y] = defaultHeight;

                    if (lItem.Definition.Behaviour.isDoor)
                    {
                        stateMap[lTile.X, lTile.Y] = doorState;
                    }
                }
            }
            #endregion

            #region Reset tilestatuses for client for rollers
            if (containsRollers)
            {
                foreach (floorItem lItem in this.floorItems)
                {
                    if (lItem.Definition.Behaviour.isRoller)
                    {
                        clientMap[lItem.X, lItem.Y] = defaultMap[lItem.X, lItem.Y];
                    }
                }
            }
            #endregion

            heightMap[Model.doorX, Model.doorY] = Model.doorZ;
            stateMap[Model.doorX, Model.doorY]  = roomTileState.Blocked;

            this.gridState     = stateMap;
            this.gridHeight    = heightMap;
            this.gridClientMap = clientMap;
            this.hasRollers    = containsRollers;
            this.hasPets       = containsPets;
            this.hasBots       = containsBots;
        }