예제 #1
0
        public Decimal ActualizarAssesmentCenter(Decimal ID_ASSESMENT,
            String NOMBRE_ASSESMENT,
            String DESCRIPCION_ASSESMENT,
            Boolean ACTIVO,
            List<CompetenciaAssesment> listaCompetencias,
            Byte[] ARCHIVO_DOCUMENTO,
            Int32 ARCHIVO_TAMANO,
            String ARCHIVO_EXTENSION,
            String ARCHIVO_TYPE)
        {
            Boolean correcto = true;
            Conexion conexion = new Conexion(Empresa);
            conexion.IniciarTransaccion();

            try
            {
                if (ID_ASSESMENT <= 0)
                {
                    ID_ASSESMENT = AdicionarAssesmentCenter(NOMBRE_ASSESMENT, DESCRIPCION_ASSESMENT, ACTIVO, conexion);

                    if (ID_ASSESMENT <= 0)
                    {
                        conexion.DeshacerTransaccion();
                        correcto = false;
                        ID_ASSESMENT = 0;
                    }
                }
                else
                {
                    if (ActualizarSelRegAssesmentCenter(ID_ASSESMENT, NOMBRE_ASSESMENT, DESCRIPCION_ASSESMENT, ACTIVO, conexion) == false)
                    {
                        conexion.DeshacerTransaccion();
                        correcto = false;
                        ID_ASSESMENT = 0;
                    }
                }

                if (correcto == true)
                {
                    if (ARCHIVO_DOCUMENTO != null)
                    {
                        Decimal ID_DOCUMENTO = conexion.ExecuteEscalarParaAdicionarDocsParaAssesmentCenter(ID_ASSESMENT, ARCHIVO_DOCUMENTO, ARCHIVO_EXTENSION, ARCHIVO_TAMANO, ARCHIVO_TYPE, Usuario);

                        if (ID_DOCUMENTO <= 0)
                        {
                            conexion.DeshacerTransaccion();
                            correcto = false;
                            ID_ASSESMENT = 0;
                            MensajeError = "Error intentando insertar o actualizar el documento relacionado con el Assesment Center.";
                        }
                    }
                }

                if (correcto == true)
                {
                    DataTable tablaCompetenciasActuales = ObtenerCompetenciasAssesmentActivas(ID_ASSESMENT, conexion);

                    Boolean competenciaExiste = false;

                    foreach (DataRow filaCompetenciaActual in tablaCompetenciasActuales.Rows)
                    {
                        Decimal ID_COMPETENCIA_ASSESMENT_ACTUAL = Convert.ToDecimal(filaCompetenciaActual["ID_COMPETENCIA_ASSESMENT"]);

                        foreach (CompetenciaAssesment competencia in listaCompetencias)
                        {
                            if (ID_COMPETENCIA_ASSESMENT_ACTUAL == competencia.ID_COMPETENCIA_ASSESMENT)
                            {
                                competenciaExiste = true;
                                break;
                            }
                        }

                        if (competenciaExiste == false)
                        {
                            if (EliminarCompetenciaAssesment(ID_COMPETENCIA_ASSESMENT_ACTUAL, conexion) == false)
                            {
                                conexion.DeshacerTransaccion();
                                correcto = false;
                                ID_ASSESMENT = 0;
                            }
                        }
                    }

                    if (correcto == true)
                    {
                        foreach (CompetenciaAssesment competencia in listaCompetencias)
                        {
                            if (competencia.ID_COMPETENCIA_ASSESMENT <= 0)
                            {
                                if (AdicionarCompetenciaAssesment(ID_ASSESMENT, competencia.ID_COMPETENCIA, conexion) <= 0)
                                {
                                    conexion.DeshacerTransaccion();
                                    correcto = false;
                                    ID_ASSESMENT = 0;
                                }
                            }
                        }
                    }
                }

                if (correcto == true)
                {
                    conexion.AceptarTransaccion();
                }
            }
            catch (Exception ex)
            {
                conexion.DeshacerTransaccion();
                MensajeError = ex.Message;
                correcto = false;
                ID_ASSESMENT = 0;
            }
            finally
            {
                conexion.Desconectar();
            }

            return ID_ASSESMENT;
        }