예제 #1
0
        public async Task <string> SaveTalk(Conference conference, Talk talk, string oldName, Func <Talk, string> getUrlToTalk)
        {
            if (oldName != null)
            {
                var oldTalk = new Talk {
                    ConferenceId = conference.Id, TalkName = oldName, Speaker = talk.Speaker
                };
                await talkPersistence.DeleteTalk(conference, talk);
            }

            // TODO: new versions of containers...
            // TODO: Client verification also
            // TODO: proper replace here
            var safeTalkName = talk.TalkName
                               .Replace("?", "")
                               .Replace(":", " - ")
                               .Replace("/", "-")
                               .Replace("\"", "-")
                               .Replace("#", "");

            talk.TalkName     = Regex.Replace(safeTalkName, @"\s+", " ").Trim();
            talk.ConferenceId = conference.Id;
            talk.TimeStamp    = DateTimeOffset.UtcNow;
            contentService.VerifySlides(talk);
            await talkPersistence.SaveTalkFromConference(conference, talk);

            await thumbnailService.SaveThumbnail(conference, talk, oldName);

            if (oldName == null)
            {
                var talkUrl = getUrlToTalk(talk);
                slackClient.PublishToSlack(talk, talkUrl);
            }

            var escapedTalkName = Uri.EscapeUriString(talk.TalkName);

            return(escapedTalkName);
        }