public async Task <ConsultationRoom> GetAvailableConsultationRoomAsync(Guid conferenceId, VirtualCourtRoomType roomType) { var query = new GetAvailableConsultationRoomsByRoomTypeQuery(roomType, conferenceId); var listOfRooms = await _queryHandler.Handle <GetAvailableConsultationRoomsByRoomTypeQuery, List <ConsultationRoom> >(query); var room = listOfRooms?.FirstOrDefault(x => x.Type.Equals(roomType)); if (room == null) { var consultationRoomParams = new CreateConsultationRoomParams { Room_label_prefix = roomType.ToString() }; var createConsultationRoomResponse = await CreateConsultationRoomAsync(conferenceId.ToString(), consultationRoomParams); var createRoomCommand = new CreateConsultationRoomCommand(conferenceId, createConsultationRoomResponse.Room_label, roomType, false); await _commandHandler.Handle(createRoomCommand); room = new ConsultationRoom(conferenceId, createConsultationRoomResponse.Room_label, roomType, false); } return(room); }
public async Task <ConsultationRoom> CreateNewConsultationRoomAsync(Guid conferenceId, VirtualCourtRoomType roomType = VirtualCourtRoomType.Participant, bool locked = false) { var consultationRoomParams = new CreateConsultationRoomParams { Room_label_prefix = roomType.ToString() }; var createConsultationRoomResponse = await CreateConsultationRoomAsync(conferenceId.ToString(), consultationRoomParams); var createRoomCommand = new CreateConsultationRoomCommand(conferenceId, createConsultationRoomResponse.Room_label, roomType, locked); await _commandHandler.Handle(createRoomCommand); var room = new ConsultationRoom(conferenceId, createConsultationRoomResponse.Room_label, roomType, locked); return(room); }