예제 #1
0
    private void JoinRoom(string roomNo)
    {
        Debug.Log("JoinRoom roomNo = " + roomNo);
        ShowMessagePanel("查找房间中...");
        //检查房间是否存在, 如果存在就跳转到游戏的界面
        ResponseHandle handler = delegate(string jsonString){
            Debug.Log("GetRoomResponse: " + jsonString);
            //加入玩家已经游戏了,那么跳转到Gameplay Scene。否则什么都不需要坐。
            GetRoomResponse             resp       = JsonConvert.DeserializeObject <GetRoomResponse>(jsonString);
            Dictionary <string, string> parameters = new Dictionary <string, string>();
            if (resp.isExist)
            {
                parameters["roomNo"]    = resp.roomNo;
                parameters["serverUrl"] = resp.serverUrl;
                Scenes.Load("Gameplay", parameters);
            }
            else
            {
                //房间不存在
                ShowConfirmMessagePanel("该房间不存在");
            }
        };

        ResponseHandle errorHandler = delegate(string error) {
            Debug.Log("errorHandler is called");
            HideMessagePanel();
            ShowConfirmMessagePanel("连接服务器失败,请检查你的网络");
        };

        StartCoroutine(ServerUtils.PostRequest(ServerUtils.GetRoomUrl(), JsonConvert.SerializeObject(new { roomNo = roomNo }), handler, errorHandler));
    }
예제 #2
0
        public void GetRoom(int wid, string openid, int hotelId, int roomId)
        {
            AjaxResult ajaxResult;

            try
            {
                GetRoomResponse responseData = null;
                IAsyncResult    asyncResult  = new BusEntry("WeixinPF.Hotel.Plugins").MyBus.Send("WeixinPF.Hotel.Plugins.Service", new GetRoomRequest()
                {
                    HotelId = hotelId, RoomId = roomId
                })
                                               .Register(response =>
                {
                    CompletionResult result = response.AsyncState as CompletionResult;
                    if (result != null)
                    {
                        responseData = result.Messages[0] as GetRoomResponse;
                    }
                }, this);

                WaitHandle asyncWaitHandle = asyncResult.AsyncWaitHandle;
                asyncWaitHandle.WaitOne(WaitSeconds);

                ajaxResult = asyncResult.IsCompleted ?
                             AjaxResult.Succeed(responseData) :
                             AjaxResult.Fail("获取房间信息失败。");
            }
            catch
            {
                ajaxResult = AjaxResult.Fail("获取房间信息失败。");
            }

            this.WriteJson(ajaxResult);
        }
예제 #3
0
        public async Task <JsonResult> GetRooms([FromBody] GetRoomViewModel getRoomViewModel, [FromBody] string accessToken)
        {
            GetRoomResponse response = new GetRoomResponse();

            try
            {
                accessToken = GetNewAccessToken(getRoomViewModel.CentroId);
                // Get the room lists defined in a tenant.
                var roomLists = await _roomsService.findRoomLists(accessToken);

                GraphModel model = new GraphModel();

                model.Salas = new List <Sala>();

                foreach (var item in roomLists.Salas)
                {
                    model.Salas.Add(item);
                }
                var entrevistadorMail = _usuarioService.GetUsuarioById(getRoomViewModel.EntrevistadorId).UsuarioViewModel.Email;
                if (entrevistadorMail == "" || entrevistadorMail == null)
                {
                    response.IsValid = false;
                    return(Json(response, JsonRequestBehavior.AllowGet));
                }
                response = await GetSuggestedMeetings(accessToken, model.Salas[0].Email, entrevistadorMail, getRoomViewModel.Fecha, getRoomViewModel.CentroId, getRoomViewModel.OficinaId, getRoomViewModel.IgnorarDisponibilidad);

                return(Json(response, JsonRequestBehavior.AllowGet));
            }
            catch (Exception)
            {
                response.IsValid = false;
                return(Json(response, JsonRequestBehavior.AllowGet));
            }
        }
예제 #4
0
        public void Excecute(ClientObject client, ServerObject server, RoomObject room, string packet = "")
        {
            Console.WriteLine("Get rooms");
            var    response       = new GetRoomResponse(server.GetFreeRooms());
            string packetResponse = JsonConvert.SerializeObject(response);

            server.SendMessageToDefiniteClient(packetResponse, client);
        }
예제 #5
0
        public JsonResult GetDetail(System.Int32 id)
        {
            RoomDetailView vm      = new RoomDetailView();
            GetRoomRequest request = new GetRoomRequest();

            request.RoomId = id;
            GetRoomResponse response = _roomService.GetRoom(request);

            if (response.RoomFound)
            {
                vm = response.Room.ConvertToRoomDetailView();
            }

            return(Json(vm, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            GetRoomResponse response = new GetRoomResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("Room", targetDepth))
                {
                    var unmarshaller = RoomUnmarshaller.Instance;
                    response.Room = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
예제 #7
0
 public GetRoomResponse getById(GetRoomRequest request)
 {
     try
     {
         var response = new GetRoomResponse();
         var bc       = new RoomComponent();
         response.Result = bc.Find(request.Room.Id);
         return(response);
     }
     catch (Exception ex)
     {
         var httpError = new HttpResponseMessage()
         {
             StatusCode   = (HttpStatusCode)422,
             ReasonPhrase = ex.Message
         };
         throw new HttpResponseException(httpError);
     }
 }
예제 #8
0
        public async Task <JsonResult> GetRooms(GetRoomViewModel getRoomViewModel)
        {
            var             roomFiltrar = GetRoomFiltrar(getRoomViewModel.CentroId, getRoomViewModel.OficinaId);
            GetRoomResponse response    = new GetRoomResponse();

            try
            {
                // Get an access token.
                string accessToken = GetNewAccessToken(getRoomViewModel.CentroId);

                // Get the room lists defined in a tenant.
                var roomLists = await _graphService.findRoomLists(accessToken);

                GraphModel model = new GraphModel();

                model.Salas = new List <Sala>();

                foreach (var item in roomLists.Salas)
                {
                    if (item.Name.Contains(roomFiltrar))
                    {
                        model.Salas.Add(item);
                    }
                }
                var entrevistadorMail = _usuarioService.GetUsuarioById(getRoomViewModel.EntrevistadorId).UsuarioViewModel.Email;
                if (entrevistadorMail == "" || entrevistadorMail == null)
                {
                    response.IsValid      = false;
                    response.ErrorMessage = Resources.ErrorGraph_EntrevistadorMail;
                    return(Json(response, JsonRequestBehavior.AllowGet));
                }
                response = await GetSuggestedMeetings(accessToken, model.Salas[0].Email, entrevistadorMail, getRoomViewModel.Fecha, getRoomViewModel.CentroId, getRoomViewModel.OficinaId, getRoomViewModel.IgnorarDisponibilidad);

                return(Json(response, JsonRequestBehavior.AllowGet));
            }
            catch (Exception)
            {
                response.IsValid      = false;
                response.ErrorMessage = Resources.ErrorGraph_ListaSalas;
                return(Json(response, JsonRequestBehavior.AllowGet));
            }
        }
예제 #9
0
        public GetRoomResponse GetRoom(GetRoomRequest request)
        {
            GetRoomResponse response = new GetRoomResponse();

            Room room = _roomRepository
                        .FindBy(request.RoomId);

            if (room != null)
            {
                response.RoomFound = true;
                response.Room      = room.ConvertToRoomView();
            }
            else
            {
                response.RoomFound = false;
            }


            return(response);
        }
예제 #10
0
        public async Task <GetRoomResponse> GetSuggestedMeetings(string token, string nombreLista, string entrevistadorMail, DateTime fecha, int centroId, int?oficinaId, bool ignorarDisponibilidad)
        {
            GetRoomResponse response    = new GetRoomResponse();
            var             fechaInicio = DateTime.Parse(fecha.ToUniversalTime().ToString());
            var             fechaFin    = fechaInicio;

            try
            {
                string accessToken = token;


                FindMeetingTimesRequest findMeetingTimeRequest = new FindMeetingTimesRequest();
                var attendees = new List <ApiRooms.Graph.Responses.FindMeetingTimeRequest.Attendee>();

                List <string> possivelAttendees = new List <string>();

                if (!ignorarDisponibilidad)
                {
                    possivelAttendees.Add(entrevistadorMail);
                }

                foreach (var item in possivelAttendees)
                {
                    if (!string.IsNullOrEmpty(item))
                    {
                        attendees.Add(new ApiRooms.Graph.Responses.FindMeetingTimeRequest.Attendee()
                        {
                            emailAddress = new ApiRooms.Graph.Responses.FindMeetingTimeRequest.EmailAddress()
                            {
                                address = item, name = item
                            },
                            type = "required"
                        });
                    }
                }

                findMeetingTimeRequest.timeConstraint = new TimeConstraint()
                {
                    timeslots = new List <Timeslot>()
                    {
                        new Timeslot()
                        {
                            start = new ApiRooms.Graph.Responses.FindMeetingTimeRequest.Start()
                            {
                                dateTime = fechaInicio, timeZone = "UTC"
                            },
                            end = new ApiRooms.Graph.Responses.FindMeetingTimeRequest.End()
                            {
                                dateTime = fechaFin, timeZone = "UTC"
                            }
                        }
                    }
                };



                // Getting the rooms in the list
                FindRoomsListResponse          listaSalas    = new FindRoomsListResponse();
                GetStringExcludedRoomsResponse excludedRooms = new GetStringExcludedRoomsResponse();
                if (!string.IsNullOrEmpty(nombreLista))
                {
                    listaSalas = await _roomsService.FindRooms(accessToken, nombreLista);

                    excludedRooms = _roomsService.GetStringExcludedRooms(centroId, oficinaId);
                }
                if (excludedRooms.IsValid && !string.IsNullOrEmpty(excludedRooms.StringExcludedRooms))
                {
                    listaSalas = FilterListSalas(listaSalas, excludedRooms.StringExcludedRooms);
                }

                for (int i = 0; i < listaSalas.value.Count; i++)
                {
                    if (i < 18 && i < listaSalas.value.Count)
                    {
                        attendees.Add(new ApiRooms.Graph.Responses.FindMeetingTimeRequest.Attendee()
                        {
                            emailAddress = new ApiRooms.Graph.Responses.FindMeetingTimeRequest.EmailAddress()
                            {
                                address = listaSalas.value[i].address
                            },
                            type = "resource"
                        });
                    }
                    else
                    {
                        break;
                    }
                }


                findMeetingTimeRequest.returnSuggestionReasons = true;
                findMeetingTimeRequest.isOrganizerOptional     = true;
                findMeetingTimeRequest.maxCandidates           = 100;

                findMeetingTimeRequest.attendees = attendees;


                // Get the the meeting times
                var findMeetingTimes = await _roomsService.PostFindMeetingTimes(accessToken, findMeetingTimeRequest);

                if (findMeetingTimes.emptySuggestionsReason.Equals("AttendeesUnavailable"))
                {
                    response.IsValid = false;
                    return(response);
                }

                List <FindMeetingTimesRowViewModel> suggestions = FilterSuggestions(findMeetingTimes, listaSalas);

                if (suggestions.Count == 0)
                {
                    response.IsValid = false;
                    return(response);
                }

                response.IsValid = true;
                response.salas   = new List <SelectListItem>();

                foreach (var sugg in suggestions)
                {
                    foreach (var sala in sugg.Salas)
                    {
                        if (sala.Name != null && sala.Email != null)
                        {
                            SelectListItem listaSala = new SelectListItem();
                            listaSala.Value = sala.Email;
                            listaSala.Text  = sala.Name;

                            response.salas.Add(listaSala);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                response.IsValid      = false;
                response.ErrorMessage = e.Message;
            }
            return(response);
        }