/*
         * La mision que justifica la existencia de los gestores es hacer de "intermediario" entre las ENTIDADES y el resto del sistema
         * Por esto el gestor debe tener la responsabilidad de instanciar la/s que le corresponde gestionar
         */
        public PuestoEvaluado instanciarPuestoEvaluado(string codigo, string nombre, string empresa, string descripcion = null, List <Caracteristica> caracteristicas = null)
        {
            AdministradorBD admBD         = new AdministradorBD();
            PuestoEvaluado  nuevoPuestoEv = new PuestoEvaluado(codigo, nombre, empresa, DateTime.Now, descripcion, caracteristicas);

            return(nuevoPuestoEv);
        }
        public Bloque proximoBloque(Bloque bloqAnterior)
        {
            AdministradorBD admBD         = new AdministradorBD(); //intanciacion del administrador base de datos
            Cuestionario    cuestAsociado = bloqAnterior.CuestAsociado;

            int nroProxBloque = bloqAnterior.NroBloque;

            nroProxBloque += 1;
            Bloque proxBloque = admBD.retornarBloque(cuestAsociado, nroProxBloque);

            cuestAsociado.UltimoBloque = proxBloque; //seteo el ultimo bloque
            return(proxBloque);
        }
        public bool duplicar_Esquema_Para_Evaluacion(Puesto puestoAsociado, List <Candidato> cand_Seleccionados)
        {
            AdministradorBD admBD = new AdministradorBD();

            bool realizado = admBD.guardar_Evaluacion(puestoAsociado, cand_Seleccionados);

            if (realizado)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        } //establecer una forma de ordenamiento aleatorio... MIRAR

        public bool resguardarCuestionario(Cuestionario cuest_)
        {
            AdministradorBD admBD = new AdministradorBD();

            bool seGuardaronAtrubutos = admBD.guardarAtributosCuestionario(cuest_);

            if (seGuardaronAtrubutos == true)
            {
                return(true);
            }
            else
            {
                MessageBox.Show("Ocurrio un error al resguardar los datos del cuestionario\n\n\tReinicie su sesión\n\n\t\tDisculpe las molestias");
                return(false);
            }
        }
        public bool cambiarEstado(string alEstado, Cuestionario cuest)
        {
            AdministradorBD admBD = new AdministradorBD();  //intanciacion del administrador base de datos

            Estado nuevoEstado = new Estado(cuest, alEstado);

            cuest.Estado = nuevoEstado;
            bool seCambio_elEstado = admBD.guardarEstado(cuest.Estado); //se lo envia al Adm BD

            if (seCambio_elEstado == true)
            {
                return(true);
            }
            else
            {
                MessageBox.Show("\tNo se realizo el cambio de estado de su cuestionario\n\nPor favor reinicie su sesión", "ADVERTENCIA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(false);
            }
        }
        private bool crearBloque(List <PreguntaEvaluada> listaPreguntas, int pregXbloque, Cuestionario cuest)
        {
            AdministradorBD admBD = new AdministradorBD();  //intanciacion del administrador base de datos

            bool operacionRealizadaConExito = false;

            int numBloq = 1, contadorDeBloqueCreados = 0;
            int cantidadBloques = (listaPreguntas.Count / pregXbloque);

            for (int i = 0; i < listaPreguntas.Count;)
            {
                Bloque nuevoBloque = new Bloque(numBloq, cuest);
                for (int j = 0; j < pregXbloque; j++)
                {
                    nuevoBloque.addPreguntaEv(listaPreguntas[i]);
                    i++;
                }

                contadorDeBloqueCreados += 1;
                if (numBloq == 1)
                {
                    cuest.UltimoBloque = nuevoBloque;
                }
                numBloq++;

                switch (contadorDeBloqueCreados == cantidadBloques)
                {
                case true:
                {
                    nuevoBloque.marcarUltimobloque();
                    bool echo = admBD.guardarBloque(nuevoBloque);         // mensaje se envia al Adm de BD
                    if (echo)
                    {
                        operacionRealizadaConExito = true;
                    }
                    else
                    {
                        MessageBox.Show("\tNo se pudieron resguardar los datos de su evaluación\nComuniquese con su evaluador", "ADVERTENCIA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        operacionRealizadaConExito = false;
                    }
                }
                break;

                default:
                {
                    bool echo = admBD.guardarBloque(nuevoBloque);         // mensaje se envia al Adm de BD
                    if (echo)
                    {
                        operacionRealizadaConExito = true;
                    }
                    else
                    {
                        MessageBox.Show("\tNo se pudieron resguardar los datos de su evaluación\nComuniquese con su evaluador", "ADVERTENCIA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        operacionRealizadaConExito = false;
                    }
                }
                break;
                }
            }
            return(operacionRealizadaConExito);
        }