Beispiel #1
0
        public async Task Update(TalkDbModel model)
        {
            await this._db.ExecuteAsync(
                "UPDATE [Talk] SET [Name]=@Name, [Start]=@Start, [Url]=@Url, [Subtitle]=@Subtitle WHERE [Id]=@TalkId",
                new {
                Name     = model.Name,
                Start    = model.Start,
                Url      = model.Url,
                Subtitle = model.Subtitle,
                TalkId   = model.Id
            });

            await this.UpdateBindings(model);
        }
Beispiel #2
0
        private async Task UpdateBindings(TalkDbModel model)
        {
            // speakers

            await this._db.ExecuteAsync("DELETE FROM [TalkSpeaker] WHERE [TalkId]=@TalkId", new { TalkId = model.Id });

            foreach (var speaker in model.Speakers ?? new List <PersonDbEntity>())
            {
                await this._db.ExecuteAsync(
                    "INSERT INTO [TalkSpeaker] ([TalkId], [PersonId]) VALUES (@TalkId, @PersonId)",
                    new { TalkId = model.Id, PersonId = speaker.Id });
            }

            // organizers

            await this._db.ExecuteAsync("DELETE FROM [TalkOrganizer] WHERE [TalkId]=@TalkId", new { TalkId = model.Id });

            foreach (var organizer in model.Organizers ?? new List <OrganizationDbEntity>())
            {
                await this._db.ExecuteAsync(
                    "INSERT INTO [TalkOrganizer] ([TalkId], [OrganizationId]) VALUES (@TalkId, @OrganizationId)",
                    new { TalkId = model.Id, OrganizationId = organizer.Id });
            }

            // categories

            await this._db.ExecuteAsync("DELETE FROM [TalkCategory] WHERE [TalkId]=@TalkId", new { TalkId = model.Id });

            foreach (var category in model.DirectCategories ?? new List <CategoryDbEntity>())
            {
                await this._db.ExecuteAsync(
                    "INSERT INTO [TalkCategory] ([TalkId], [CategoryId]) VALUES (@TalkId, @CategoryId)",
                    new { TalkId = model.Id, CategoryId = category.Id });
            }

            // recordings

            await this._db.ExecuteAsync("DELETE FROM [TalkRecording] WHERE [TalkId]=@TalkId", new { TalkId = model.Id });

            foreach (var recording in model.Recordings?.Where(r => !string.IsNullOrEmpty(r.Url) || !string.IsNullOrEmpty(r.YouTubeVideoId)) ?? new List <TalkRecordingDbEntity>())
            {
                await this._db.ExecuteAsync(
                    "INSERT INTO [TalkRecording] ([TalkId], [Url], [YouTubeVideoId]) VALUES (@TalkId, @Url, @YouTubeVideoId)",
                    new { TalkId = model.Id, Url = recording.Url, YouTubeVideoId = recording.YouTubeVideoId });
            }
        }
Beispiel #3
0
        public async Task <int> Create(TalkDbModel model)
        {
            var talkId = (await this._db.QueryAsync <int>(
                              @"INSERT INTO [Talk] ([Name], [Start], [Url], [Subtitle])
                VALUES (@Name, @Start, @Url, @Subtitle)
                
                SELECT CAST(SCOPE_IDENTITY() as int)",
                              new {
                Name = model.Name,
                Start = model.Start,
                Url = model.Url,
                Subtitle = model.Subtitle
            })).Single();

            model.Id = talkId;

            await this.UpdateBindings(model);

            return(model.Id);
        }