コード例 #1
0
ファイル: MuseuInteractDB.cs プロジェクト: toomaas/exemploasp
        //envia um viewmodel com os temas selecionados. Serve para temas de exposições ou temas de utilizadores
        public List <AssignedTemaData> PopulateAssignedTemaData(ITabelas tabela)
        {
            var allTemas    = _db.Tema;
            var tabelaTemas = new HashSet <int>(tabela.Temas.Select(t => t.TemaID));
            var viewModel   = new List <AssignedTemaData>();

            foreach (var tema in allTemas)
            {
                viewModel.Add(new AssignedTemaData {
                    TemaID = tema.TemaID, Nome = tema.Nome, Assigned = tabelaTemas.Contains(tema.TemaID)
                });
            }
            return(viewModel);
        }
コード例 #2
0
ファイル: MuseuInteractDB.cs プロジェクト: toomaas/exemploasp
        //método que remove ou adiciona temas a uma exposição ou a um utilizador. ITabelas pode ser um utilizador ou uma exposição
        public void UpdateTemas(string[] selectedTemas, ITabelas tabela, OurDBContext dbContext)
        {
            var userAccountTemas = new HashSet <int>(tabela.Temas.Select(t => t.TemaID));

            if (selectedTemas == null)
            {
                if (tabela.Temas.Count != 0)
                {
                    foreach (var tema in dbContext.Tema)
                    {
                        if (tabela.Temas.Contains(tema))
                        {
                            tabela.Temas.Remove(tema);
                        }
                    }
                }
                dbContext.Entry(tabela).State = EntityState.Modified;
                dbContext.SaveChanges();
                return;
            }
            var selectedTemasHs = new HashSet <string>(selectedTemas);

            foreach (var tema in dbContext.Tema)
            {
                if (selectedTemasHs.Contains(tema.TemaID.ToString()))
                {
                    if (!userAccountTemas.Contains(tema.TemaID))
                    {
                        tabela.Temas.Add(tema);
                    }
                }
                else
                {
                    if (userAccountTemas.Contains(tema.TemaID))
                    {
                        tabela.Temas.Remove(tema);
                    }
                }
            }
            dbContext.Entry(tabela).State = EntityState.Modified;
            dbContext.SaveChanges();
        }