public async Task <IActionResult> Post([FromBody] RoomViewModel roomModel) { if (roomModel == null) { return(StatusCode(500, new InternalServerError("Room model is null"))); } roomModel.Name = roomModel.Name.Trim(); if (roomModel.Name == string.Empty) { return(StatusCode(500, new InternalServerError("Room name cannot be empty"))); } var existRooms = await _roomRepository.GetAsync(p => p.Name == roomModel.Name); if (existRooms.Any()) { var existRoom = existRooms.FirstOrDefault(); var participants = await _participantRepository.GetAsync(p => p.RoomId == existRoom.Id); if (!participants.Any() && existRoom.FirstConnectionExpired < DateTime.Now) { await _roomRepository.RemoveAsync(existRoom); } else { return(StatusCode(500, new InternalServerError("A room with the same name already exists"))); } } var room = new Room { Name = roomModel.Name, ListenSald = Guid.NewGuid().ToString(), PlayingSald = Guid.NewGuid().ToString(), FirstConnectionExpired = DateTime.Now.AddMinutes(1), OwnerGuid = Guid.NewGuid().ToString() }; await _roomRepository.CreateAsync(room); return(Ok(room.Adapt <RoomViewModel>())); }