Beispiel #1
0
        public bool Actualizar(Verificacion entidad)
        {
            CategoriaRepositorio categoriaRepositorio;
            PreguntaRepositorio  preguntaRepositorio;
            RespuestaRepositorio respuestaRepositorio;

            using (_contexto = new ALICORPContexto(true))
            {
                bool respuesta = false;
                try
                {
                    _repositorio         = new VerificacionRepositorio(_contexto.Connection, _contexto.Transaction);
                    categoriaRepositorio = new CategoriaRepositorio(_contexto.Connection, _contexto.Transaction);
                    preguntaRepositorio  = new PreguntaRepositorio(_contexto.Connection, _contexto.Transaction);
                    respuestaRepositorio = new RespuestaRepositorio(_contexto.Connection, _contexto.Transaction);

                    if (_repositorio.Actualizar(entidad) && entidad.Categorias != null)
                    {
                        foreach (var item in entidad.Categorias)
                        {
                            if (item.Id > 0)
                            {
                                respuesta = categoriaRepositorio.Actualizar(item);
                            }
                            else
                            {
                                item.VerificacionId = entidad.Id;
                                respuesta           = categoriaRepositorio.Guardar(item);
                            }
                            if (respuesta && item.Preguntas != null)
                            {
                                foreach (var subItem in item.Preguntas)
                                {
                                    if (subItem.Id > 0)
                                    {
                                        respuesta = preguntaRepositorio.Actualizar(subItem);
                                    }
                                    else
                                    {
                                        subItem.CategoriaId = item.Id;
                                        respuesta           = preguntaRepositorio.Guardar(subItem);
                                    }

                                    if (respuesta && subItem.Respuestas != null)
                                    {
                                        respuestaRepositorio.Limpiar(subItem.Id);
                                        foreach (var subItem2 in subItem.Respuestas)
                                        {
                                            subItem2.PreguntaId = subItem.Id;
                                            respuestaRepositorio.Guardar(subItem2);
                                        }
                                    }
                                }
                            }
                        }
                    }

                    _contexto.Transaction.Commit();

                    return(respuesta);
                }
                catch (Exception ex)
                {
                    _contexto?.Transaction.Rollback();
                    throw ex;
                }
            }
        }