示例#1
0
        private void gravarFormularioFilhoDto(FormularioDTO novoFormularioDTO)
        {
            Formulario formulario = new Formulario(novoFormularioDTO.Nome, novoFormularioDTO.Id);

            this._context.Formulario.Add(formulario);
            this._context.SaveChanges();
            this.formularioId = formulario.Id;

            EmpresaFormulario empresaFormulario = new EmpresaFormulario(novoFormularioDTO.EmpresaId, formulario.Id);

            this._context.EmpresaFormularios.Add(empresaFormulario);
            this._context.SaveChanges();

            foreach (CamposDTO item in novoFormularioDTO.CamposDTO)
            {
                Campos campo = new Campos(item.Value, item.Key, item.Label, item.Required, item.Order, item.ControlType, item.Type, item.Mask, item.Placeholder);
                this._context.Campos.Add(campo);
                this._context.SaveChanges();

                FormularioCampos formularioCampos = new FormularioCampos();
                formularioCampos.FormularioId = formulario.Id;
                formularioCampos.CamposId     = campo.Id;

                this._context.FormularioCampos.Add(formularioCampos);
                this._context.SaveChanges();

                foreach (Opcoes opcao in item.Options)
                {
                    Opcoes opcoes = new Opcoes(opcao.Key, opcao.Value);
                    this._context.Opcoes.Add(opcoes);
                    this._context.SaveChanges();

                    CamposOpcoes camposOpcoes = new CamposOpcoes(campo.Id, opcoes.Id);
                    this._context.CamposOpcoes.Add(camposOpcoes);
                    this._context.SaveChanges();
                }
            }
        }
        private void editarFormularioBaseDto(FormularioDTO formularioDTO)
        {
            var formulario = _context.Formulario.Where(x => x.Id == formularioDTO.Id).FirstOrDefault();

            formulario.Nome = formularioDTO.Nome;

            this._context.Formulario.Update(formulario);
            this._context.SaveChanges();

            // REMOVER CAMPOS
            // 1º - REMOVER NA TABELA CamposOpcoes
            var camposOpcoes_rm = (from co in _context.CamposOpcoes
                                   join c in _context.Campos on co.CamposId equals c.Id
                                   join fc in _context.FormularioCampos on c.Id equals fc.CamposId
                                   where fc.FormularioId == formulario.Id
                                   select co).ToList();

            // 2º - REMOVER NA TABELA CamposOpcoes
            var opcoes_rm = (from o in _context.Opcoes
                             join co in _context.CamposOpcoes on o.Id equals co.OpcoesId
                             join c in _context.Campos on co.CamposId equals c.Id
                             join fc in _context.FormularioCampos on c.Id equals fc.CamposId
                             where fc.FormularioId == formulario.Id
                             select o).ToList();

            _context.CamposOpcoes.RemoveRange(camposOpcoes_rm);
            _context.SaveChanges();

            _context.Opcoes.RemoveRange(opcoes_rm);
            _context.SaveChanges();

            // 3º - REMOVER NA TABELA Campos
            var campos = (from c in _context.Campos
                          join fc in _context.FormularioCampos on c.Id equals fc.CamposId
                          where fc.FormularioId == formulario.Id
                          select c).ToList();

            _context.Campos.RemoveRange(campos);
            _context.SaveChanges();

            // 4º - REMOVER NA TABELA FormularioCampos
            var formulariosCampos = _context.FormularioCampos.Where(x => x.FormularioId == formulario.Id).ToList();

            _context.FormularioCampos.RemoveRange(formulariosCampos);
            _context.SaveChanges();

            // 5º - ADICIONAR NA TABELA Opcoes
            foreach (CamposDTO item in formularioDTO.CamposDTO)
            {
                Campos campo = new Campos(item.Value, item.Key, item.Label, item.Required, item.Order, item.ControlType, item.Type, item.Mask, item.Placeholder);
                this._context.Campos.Add(campo);
                this._context.SaveChanges();

                var formularioCampos = new FormularioCampos();
                formularioCampos.FormularioId = formulario.Id;
                formularioCampos.CamposId     = campo.Id;
                this._context.FormularioCampos.Add(formularioCampos);
                this._context.SaveChanges();

                foreach (Opcoes opcao in item.Options)
                {
                    Opcoes opcoes = new Opcoes(opcao.Key, opcao.Value);
                    this._context.Opcoes.Add(opcoes);
                    this._context.SaveChanges();

                    // 5º - ADICIONAR NA TABELA CamposOpcoes
                    CamposOpcoes camposOpcoes = new CamposOpcoes(campo.Id, opcoes.Id);
                    this._context.CamposOpcoes.Add(camposOpcoes);
                    this._context.SaveChanges();
                }
            }
        }