Ejemplo n.º 1
0
        private List <ActorForCharacterFullDto> GetActorsForCharactersInVideo(long videoId, List <Character> characters, SqliteConnection db)
        {
            var characterIds = characters.Select(c => c.CharacterId);

            var actorCommand = new SqliteCommand($"SELECT a.creator_id, a.character_id, c.name, c.deleted FROM actor_for_video_character a, character c WHERE a.video_id = {videoId} AND a.creator_id = c.character_id AND a.character_id IN ({string.Join(",", characterIds)})", db);
            var actorQuery   = actorCommand.ExecuteReader();

            var dtos            = new List <ActorForCharacterFullDto>();
            var foundCharacters = new Dictionary <long, ActorForCharacterFullDto>();

            foreach (var character in characters)
            {
                var dto = new ActorForCharacterFullDto(character, -1, "", "");
                dtos.Add(dto);
                foundCharacters[character.CharacterId] = dto;
            }

            while (actorQuery.Read())
            {
                var deleted = actorQuery.GetBoolean(3);
                if (deleted)
                {
                    continue;
                }

                var characterId = actorQuery.GetInt64(1);
                var character   = characters.Find(c => c.CharacterId == characterId);
                var dto         = foundCharacters[characterId];

                dto.ActorId   = actorQuery.GetInt64(0);
                dto.ActorName = actorQuery.GetString(2);
            }
            return(dtos);
        }
Ejemplo n.º 2
0
 public void AddCharacterToVideos(Character character, List <Video> videos)
 {
     using (var db = DataAccessUtil.CreateSqlConnection()) {
         db.Open();
         using (var txn = db.BeginTransaction()) {
             var dto = new ActorForCharacterFullDto(character);
             foreach (var video in videos)
             {
                 InsertCharacterInVideoDetails(video.VideoId, new List <ActorForCharacterFullDto> {
                     dto
                 }, db, txn);
             }
             txn.Commit();
         }
     }
 }