Exemple #1
0
        public async Task <IActionResult> Rooms([FromBody] RoomTransport roomTransport)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var user = await _userManager.FindByIdAsync(roomTransport.LeaderId);

            if (user == null)
            {
                return(NotFound());
            }

            var checkRoom = await _roomsRepository.GetRoomByNameAsync(roomTransport.Name);

            if (checkRoom != null)
            {
                return(Conflict());
            }

            Room room = new Room()
            {
                Name                = roomTransport.Name,
                MaxPlayers          = roomTransport.MaxPlayers,
                LeaderId            = roomTransport.LeaderId,
                CurrentPlayersCount = 0,
                Status              = false,
                GameConfigurationId = roomTransport.GameConfigurationId
            };

            var res = await _roomsRepository.AddRoomAsync(room);

            if (res == null)
            {
                _logger.LogWarning($"User #{user.Id} failed to create room");
                return(StatusCode(500));
            }

            var newRoom = new RoomTransport(res);

            _logger.LogInformation($"User #{user.Id} create room #{room.Id}");

            return(Created(string.Empty, JsonConvert.SerializeObject(newRoom,
                                                                     new JsonSerializerSettings()
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            })));
        }
        public async Task <string> CreateRoom(BasicRoom baseData)
        {
            if (baseData?.Title.IsNullOrWhite() ?? true || baseData.People?.Count < 4)
            {
                return("error");
            }

            Room room = new Room(baseData)
            {
                CreationDate = DateTime.UtcNow
            };

            room.Sortear();

            await _repo.AddRoomAsync(room);

            return(room.Id.ToString());
        }