public async Task <Station> CreateConversationStation( ConversationInfo info, Album album = null, Playlist playlist = null) { string name = album?.Name ?? playlist?.Name; string hashtag = RingoBotHelper.ToHashtag(name); string ownerUserId = RingoBotHelper.ChannelUserId(info); // get user var ownerUser = await _userData.GetUser(ownerUserId); // get station var stationIds = Station.EncodeIds(info, hashtag); var station = await _stationData.GetStation(stationIds); // save station if (station == null) { // new station station = new Station(info, hashtag, album, playlist, ownerUser); await _stationData.CreateStation(station); } else { // update station context and owner station.Name = name; station.Owner = ownerUser; station.Album = album; station.Playlist = playlist; station.Hashtag = hashtag; AddOwnerToListeners(station, ownerUser, ownerUserId); await _stationData.ReplaceStation(station); } return(station); }