Ejemplo n.º 1
0
        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);
        }