private IList<int> GetCardMedia(int cardid, Side side, WordType? type) { IList<int> ids = new List<int>(); IList<IMedia> mediaList = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.CardMedia, cardid)] as IList<IMedia>; if (mediaList != null) { foreach(DbMedia cms in mediaList) if(cms.Side == side && (!type.HasValue || cms.Type == type)) ids.Add(cms.Id); return ids; } using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser)) { using (NpgsqlCommand cmd = con.CreateCommand()) { cmd.CommandText = "SELECT id, media_type,side,type,is_default FROM \"Cards_MediaContent\" JOIN \"MediaContent\" ON media_id=id WHERE cards_id=:cardid;"; cmd.Parameters.Add("cardid", cardid); NpgsqlDataReader reader = PostgreSQLConn.ExecuteReader(cmd, Parent.CurrentUser); mediaList = new List<IMedia>(); while (reader.Read()) { IMedia newMedia = null; int id = Convert.ToInt32(reader["id"]); EMedia mtype = (EMedia)Enum.Parse(typeof(EMedia), Convert.ToString(reader["media_type"])); Side cside = (Side)Enum.Parse(typeof(Side), Convert.ToString(reader["side"])); WordType wordtype = (WordType)Enum.Parse(typeof(WordType), Convert.ToString(reader["type"])); bool isDefault = Convert.ToBoolean(reader["is_default"]); switch (mtype) { case EMedia.Audio: newMedia = new DbAudio(id, cardid, false, cside, wordtype, isDefault, (wordtype == WordType.Sentence), Parent); break; case EMedia.Image: newMedia = new DbImage(id, cardid, false, cside, wordtype, isDefault, (wordtype == WordType.Sentence), Parent); break; case EMedia.Video: newMedia = new DbVideo(id, cardid, false, cside, wordtype, isDefault, (wordtype == WordType.Sentence), Parent); break; } mediaList.Add(newMedia); if ((newMedia as DbMedia).Side == side && (!type.HasValue || (newMedia as DbMedia).Type == type)) ids.Add((newMedia as DbMedia).Id); } Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.CardMedia, cardid)] = mediaList; return ids; } } }
private IList <int> GetCardMedia(int cardid, Side side, WordType?type) { IList <int> ids = new List <int>(); IList <IMedia> mediaList = Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.GetIdentifier(CacheObject.CardMedia, cardid)] as IList <IMedia>; if (mediaList != null) { foreach (DbMedia cms in mediaList) { if (cms.Side == side && (!type.HasValue || cms.Type == type)) { ids.Add(cms.Id); } } return(ids); } using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser)) { using (NpgsqlCommand cmd = con.CreateCommand()) { cmd.CommandText = "SELECT id, media_type,side,type,is_default FROM \"Cards_MediaContent\" JOIN \"MediaContent\" ON media_id=id WHERE cards_id=:cardid;"; cmd.Parameters.Add("cardid", cardid); NpgsqlDataReader reader = PostgreSQLConn.ExecuteReader(cmd, Parent.CurrentUser); mediaList = new List <IMedia>(); while (reader.Read()) { IMedia newMedia = null; int id = Convert.ToInt32(reader["id"]); EMedia mtype = (EMedia)Enum.Parse(typeof(EMedia), Convert.ToString(reader["media_type"])); Side cside = (Side)Enum.Parse(typeof(Side), Convert.ToString(reader["side"])); WordType wordtype = (WordType)Enum.Parse(typeof(WordType), Convert.ToString(reader["type"])); bool isDefault = Convert.ToBoolean(reader["is_default"]); switch (mtype) { case EMedia.Audio: newMedia = new DbAudio(id, cardid, false, cside, wordtype, isDefault, (wordtype == WordType.Sentence), Parent); break; case EMedia.Image: newMedia = new DbImage(id, cardid, false, cside, wordtype, isDefault, (wordtype == WordType.Sentence), Parent); break; case EMedia.Video: newMedia = new DbVideo(id, cardid, false, cside, wordtype, isDefault, (wordtype == WordType.Sentence), Parent); break; } mediaList.Add(newMedia); if ((newMedia as DbMedia).Side == side && (!type.HasValue || (newMedia as DbMedia).Type == type)) { ids.Add((newMedia as DbMedia).Id); } } Parent.CurrentUser.Cache[ObjectLifetimeIdentifier.Create(CacheObject.CardMedia, cardid)] = mediaList; return(ids); } } }