1358 lines
63 KiB
C#
1358 lines
63 KiB
C#
using Exferia_Aplicacion.General;
|
|
using Exferia_Aplicacion.Visualizacion;
|
|
using Exferia_Controles;
|
|
using Exferia_EntityFramework;
|
|
using Exferia_General;
|
|
using Exferia_KairosPRO._4_Vistas.Controladoras;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using static Exferia_Aplicacion.General.Enumerados;
|
|
using System.Linq;
|
|
using Exferia_KairosPRO._1_Modelos;
|
|
using Exferia_KairosPRO._4_Vistas.ListadosSeleccion;
|
|
using Exferia_Formularios;
|
|
using System.Threading;
|
|
|
|
namespace Exferia_KairosPRO._4_Vistas
|
|
{
|
|
public partial class P_ArbolJerarquico : Exferia_Formularios.P_Base_Mantenimientos
|
|
{
|
|
#region Variables General
|
|
private P_ArbolJerarquico_Controladora g_obj_Controladora;
|
|
|
|
private bool g_bol_ConstructorPantalla_Terminado_Correctamente = true;
|
|
public PRV_OpcionesDetalle g_mdl_PRV_OpcionesDetalle = null;
|
|
|
|
internal List<INTERNO_Permisos_Modelo> g_lst_INTERNO_Permisos_Modelo = null;
|
|
|
|
public bool g_bol_BloquearPorCargaInicial_Empleados = false;
|
|
private INTERNO_ConfiguracionPantalla_Modelo g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS = null;
|
|
|
|
#endregion
|
|
|
|
#region Objetos en Pantalla
|
|
|
|
//Exferia_BarraProgreso
|
|
internal Exferia_BarraProgreso Exferia_BarraProgreso_Empleados { get { return ex_pgb_P_ArbolJerarquico_Empleados; } }
|
|
|
|
//Exferia_Button
|
|
internal Exferia_Button Exferia_Button_Empleados_OrdenListado { get { return ex_btn_P_ArbolJerarquico_Empleados_OrdenListado; } }
|
|
|
|
//Exferia_ComboBox
|
|
internal Exferia_ComboBox Exferia_ComboBox_Empleados_OrdenListado { get { return ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado; } }
|
|
|
|
//Exferia_DataGridView
|
|
internal Exferia_DataGridView Exferia_DataGridView_Empleados { get { return ex_dgv_P_ArbolJerarquico_Empleados; } }
|
|
|
|
//Exferia_TabControl
|
|
internal Exferia_TabControl Exferia_TabControl_AusenciasProgramadasTipos { get { return ex_tbc_P_ArbolJerarquico_AusenciasProgramadasTipos; } }
|
|
|
|
//Exferia_TreeView
|
|
internal Exferia_TreeView Exferia_TreeView_Arbol { get { return ex_trv_P_ArbolJerarquico_Arbol; } }
|
|
|
|
|
|
#endregion
|
|
|
|
#region Constructor
|
|
public P_ArbolJerarquico(INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo, DateTime _dtt_FechaTrabajo, PRV_OpcionesDetalle _mdl_PRV_OpcionesDetalle)
|
|
{
|
|
InitializeComponent();
|
|
|
|
try
|
|
{
|
|
Repintar.Empezar(this);
|
|
|
|
CheckForIllegalCrossThreadCalls = false;
|
|
|
|
g_bol_BloquearPorCargaInicial_Empleados = true;
|
|
|
|
//Comprobamos que el codigo cliente exista y este bien
|
|
if (Variables.G_LNG_IDCLIENTE_LICENCIAVALIDADO.Equals(-1))
|
|
{
|
|
//Tendriamos que avisar y no dejar abrir la pantalla
|
|
Mensajes.MostrarMensaje(Mensajes.G_STR_LICENCIA_VALIDACIONES_LICENCIANOESTAACTIVA);
|
|
Salir_P_Base();
|
|
}
|
|
|
|
//Empresa seleccionada y fecha de trabajo ....................................................
|
|
P_Base_ValoresGenerales = _mdl_INTERNO_ValoresGenerales_Modelo;
|
|
P_Base_FechaTrabajo = _dtt_FechaTrabajo;
|
|
|
|
//Instanciar Controladora
|
|
g_obj_Controladora = new P_ArbolJerarquico_Controladora(this);
|
|
|
|
//Datos de Opciones detalle
|
|
g_mdl_PRV_OpcionesDetalle = _mdl_PRV_OpcionesDetalle;
|
|
|
|
//Buscar los Permisos
|
|
//g_lst_INTERNO_Permisos_Modelo = Datos_Generales.Permisos_Buscar(g_mdl_PRV_OpcionesDetalle.opcion);
|
|
|
|
//Mirar si hay que bloquear los controles, si solo puede ver los datos
|
|
if ((P_Base_TipoAperturaPantalla != 0 && Datos_Generales.Permisos_Comprobar(g_mdl_PRV_OpcionesDetalle.opcion, g_lst_INTERNO_Permisos_Modelo, (int)G_ENUM_PERMISOS.Modificar, false)) == false)
|
|
{
|
|
//Bloqueo los Controles
|
|
SoloLectura.Empezar(this, true);
|
|
}
|
|
|
|
//Titulo de la Pantalla ............................................................................
|
|
P_Base_TituloPantalla = _mdl_PRV_OpcionesDetalle.descripcion_TituloMantenimiento;
|
|
|
|
|
|
if (Variables.G_DCT_CONFIGURACIONPANTALLA != null && Variables.G_DCT_CONFIGURACIONPANTALLA.Count > 0)
|
|
{
|
|
//Empleados
|
|
if (Variables.G_DCT_CONFIGURACIONPANTALLA.ContainsKey(g_obj_Controladora.g_obj_ABS_Listado_KRS_Empleados_P_ArbolJerarquico.NOMBRELISTADO_ALMACENARCONFIGURACION()))
|
|
{
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS = Variables.G_DCT_CONFIGURACIONPANTALLA[g_obj_Controladora.g_obj_ABS_Listado_KRS_Empleados_P_ArbolJerarquico.NOMBRELISTADO_ALMACENARCONFIGURACION()];
|
|
}
|
|
}
|
|
|
|
|
|
//Label con Empresa Seleccionada
|
|
if (P_Base_ValoresGenerales != null)
|
|
{
|
|
try
|
|
{
|
|
P_Base_Mantenimientos_InformacionEmpresaSeleccionada = P_Base_ValoresGenerales.str_Empresa_Descripcion + " - " +
|
|
"(" + P_Base_FechaTrabajo.ToString("dd/MM/yyyy") + ")";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//No se muestra mensaje pero se guarda en el log
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(P_ArbolJerarquico));
|
|
}
|
|
}
|
|
//..................................................................................................................................
|
|
|
|
//Bloquear pantalla hasta que termine la carga por defecto.....
|
|
Enabled = false;
|
|
//.............................................................
|
|
}
|
|
catch (Control_Errores)
|
|
{
|
|
g_bol_ConstructorPantalla_Terminado_Correctamente = false;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
g_bol_ConstructorPantalla_Terminado_Correctamente = false;
|
|
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(P_ArbolJerarquico));
|
|
}
|
|
finally
|
|
{
|
|
//Bloquear pantalla hasta que termine la carga por defecto .....
|
|
Enabled = true;
|
|
//.............................................................
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Inicio de pantalla
|
|
private void P_ArbolJerarquico_Load(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
#region EMPELADOS
|
|
//Crear Columnas Listado
|
|
CrearColumnas_Listado_Empleados();
|
|
|
|
//Poner el tipo de orden si lo hubiera por defecto ######################################
|
|
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS != null &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_ORDEN_DIRECCION_PORDEFECTO != null &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_ORDEN_DIRECCION_PORDEFECTO.Trim().Length > 0)
|
|
{
|
|
//Descendente
|
|
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_ORDEN_DIRECCION_PORDEFECTO.Equals("1"))
|
|
{
|
|
Funciones.Cambiar_Imagen_Boton_Orden(0, ex_btn_P_ArbolJerarquico_Empleados_OrdenListado);
|
|
ex_btn_P_ArbolJerarquico_Empleados_OrdenListado.Tag = "1";
|
|
|
|
}
|
|
//Ascendente
|
|
else
|
|
{
|
|
Funciones.Cambiar_Imagen_Boton_Orden(1, ex_btn_P_ArbolJerarquico_Empleados_OrdenListado);
|
|
ex_btn_P_ArbolJerarquico_Empleados_OrdenListado.Tag = "0";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (g_obj_Controladora.g_obj_ABS_Listado_KRS_Empleados_P_ArbolJerarquico.ORDENACION_TIPO_PORDEFECTO().Trim().Length > 0)
|
|
{
|
|
//Descendente
|
|
if (g_obj_Controladora.g_obj_ABS_Listado_KRS_Empleados_P_ArbolJerarquico.ORDENACION_TIPO_PORDEFECTO().Equals("1"))
|
|
{
|
|
Funciones.Cambiar_Imagen_Boton_Orden(0, ex_btn_P_ArbolJerarquico_Empleados_OrdenListado);
|
|
ex_btn_P_ArbolJerarquico_Empleados_OrdenListado.Tag = "1";
|
|
}
|
|
//Ascendente
|
|
else
|
|
{
|
|
Funciones.Cambiar_Imagen_Boton_Orden(1, ex_btn_P_ArbolJerarquico_Empleados_OrdenListado);
|
|
ex_btn_P_ArbolJerarquico_Empleados_OrdenListado.Tag = "0";
|
|
|
|
}
|
|
}
|
|
}
|
|
//########################################################################################
|
|
|
|
//Seleccionar Orden por Defecto en Combo #################################################
|
|
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS != null &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_ORDEN_COLUMNA_PORDEFECTO != null &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_ORDEN_COLUMNA_PORDEFECTO.Trim().Length > 0)
|
|
{
|
|
ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem = ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.Items.Cast<INTERNO_ComboBox_Modelo>().Where(m => m.Descripcion.Equals(g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_ORDEN_COLUMNA_PORDEFECTO)).FirstOrDefault();
|
|
}
|
|
else
|
|
{
|
|
if (g_obj_Controladora.g_obj_ABS_Listado_KRS_Empleados_P_ArbolJerarquico.ORDENACION_NOMBRECOLUMNA_PORDEFECTO().Trim().Length > 0)
|
|
{
|
|
ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem = ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.Items.Cast<INTERNO_ComboBox_Modelo>().Where(m => m.Identificador.Equals(g_obj_Controladora.g_obj_ABS_Listado_KRS_Empleados_P_ArbolJerarquico.ORDENACION_NOMBRECOLUMNA_PORDEFECTO())).FirstOrDefault();
|
|
}
|
|
else
|
|
{
|
|
ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem = ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.Items.Cast<INTERNO_ComboBox_Modelo>().FirstOrDefault();
|
|
}
|
|
|
|
}
|
|
|
|
g_bol_BloquearPorCargaInicial_Empleados = false;
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//No se muestra mensaje pero se guarda en el log
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(P_ArbolJerarquico_Load));
|
|
|
|
g_bol_ConstructorPantalla_Terminado_Correctamente = false;
|
|
}
|
|
}
|
|
|
|
private void P_ArbolJerarquico_Shown(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (g_bol_ConstructorPantalla_Terminado_Correctamente)
|
|
{
|
|
//Agraga Rama principal
|
|
g_obj_Controladora.Agregar_Rama_Inicial();
|
|
|
|
//rellenar Asientos
|
|
g_obj_Controladora.CargaInicial();
|
|
}
|
|
else
|
|
{
|
|
Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
|
|
Salir_P_Base();
|
|
}
|
|
|
|
}
|
|
catch (Control_Errores)
|
|
{
|
|
Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
|
|
Salir_P_Base();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//No se muestra mensaje pero se guarda en el log
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(P_ArbolJerarquico_Shown));
|
|
|
|
Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
|
|
Salir_P_Base();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Empleados
|
|
private void CrearColumnas_Listado_Empleados()
|
|
{
|
|
ex_dgv_P_ArbolJerarquico_Empleados.AutoGenerateColumns = false;
|
|
|
|
List<INTERNO_ABS_Listado_ColumnasDatos_Modelo> lst_ListadoCampos = g_obj_Controladora.g_obj_ABS_Listado_KRS_Empleados_P_ArbolJerarquico.LISTADO_COLUMNAS().Values.ToList();
|
|
|
|
foreach (INTERNO_ABS_Listado_ColumnasDatos_Modelo mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo in lst_ListadoCampos)
|
|
{
|
|
dynamic dgv_Columna = null;
|
|
|
|
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.BOTON) ||
|
|
mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.EsBoton == 1)
|
|
{
|
|
dgv_Columna = new DataGridViewButtonColumn();
|
|
}
|
|
else
|
|
{
|
|
dgv_Columna = new DataGridViewTextBoxColumn();
|
|
}
|
|
dgv_Columna.DataPropertyName = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna;
|
|
dgv_Columna.Name = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna;
|
|
dgv_Columna.HeaderText = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_AMostrar;
|
|
|
|
//Poner visible o no .........................................................................
|
|
bool bol_Visible = true;
|
|
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Oculto)
|
|
{
|
|
bol_Visible = false;
|
|
}
|
|
else if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS != null &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNASAMOSTRAR != null &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNASAMOSTRAR.Count > 0)
|
|
{
|
|
if (!g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNASAMOSTRAR.Contains(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna))
|
|
{
|
|
bol_Visible = false;
|
|
}
|
|
}
|
|
else if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Mostrado_PorDefecto == false)
|
|
{
|
|
bol_Visible = false;
|
|
}
|
|
dgv_Columna.Visible = bol_Visible;
|
|
|
|
if (bol_Visible)
|
|
{
|
|
g_obj_Controladora.g_lst_ColumnasAMostrar_EMPLEADOS.Add(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna);
|
|
}
|
|
//.....................................................................................................
|
|
|
|
//Poner Ancho Columna ................................................................................
|
|
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS != null &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNAS_ANCHO != null &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNAS_ANCHO.Count > 0 &&
|
|
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNAS_ANCHO.ContainsKey(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna))
|
|
{
|
|
dgv_Columna.Width = g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNAS_ANCHO[mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna];
|
|
}
|
|
else
|
|
{
|
|
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Ancho > 0)
|
|
{
|
|
dgv_Columna.Width = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Ancho;
|
|
}
|
|
}
|
|
//................................................................................................................
|
|
|
|
dgv_Columna.ReadOnly = true;
|
|
|
|
//Poner alineado segun tipo de datos ......................................................................................
|
|
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.DECIMAL) ||
|
|
mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.LONG) ||
|
|
mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.INT))
|
|
{
|
|
dgv_Columna.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
|
|
}
|
|
else
|
|
{
|
|
dgv_Columna.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
|
|
}
|
|
//..............................................................................................................................
|
|
|
|
ex_dgv_P_ArbolJerarquico_Empleados.Columns.Add(dgv_Columna);
|
|
|
|
//RELLENAR EL ORDEN EN COMBO
|
|
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Oculto == false)
|
|
{
|
|
ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.Items.Add(new INTERNO_ComboBox_Modelo(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna, mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_AMostrar, null));
|
|
}
|
|
}
|
|
|
|
//Cambiar el orden de las columnas ........
|
|
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS != null && g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNAS_ORDEN != null && g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNAS_ORDEN.Count > 0)
|
|
{
|
|
foreach (KeyValuePair<string, int> kvp_Valores in g_mdl_INTERNO_ConfiguracionPantalla_Modelo_EMPLEADOS.LISTADO_COLUMNAS_ORDEN)
|
|
{
|
|
ex_dgv_P_ArbolJerarquico_Empleados.Columns[kvp_Valores.Key].DisplayIndex = kvp_Valores.Value;
|
|
}
|
|
}
|
|
//.........................................
|
|
}
|
|
|
|
#region Ordenar
|
|
private void ex_btn_P_ArbolJerarquico_Empleados_OrdenListado_Click(object sender, EventArgs e)
|
|
{
|
|
//Esta Descedente
|
|
if (ex_btn_P_ArbolJerarquico_Empleados_OrdenListado.Tag.ToString().Equals("1"))
|
|
{
|
|
Funciones.Cambiar_Imagen_Boton_Orden(1, ex_btn_P_ArbolJerarquico_Empleados_OrdenListado);
|
|
}
|
|
//Esta Ascendente
|
|
else
|
|
{
|
|
Funciones.Cambiar_Imagen_Boton_Orden(0, ex_btn_P_ArbolJerarquico_Empleados_OrdenListado);
|
|
}
|
|
|
|
Listado_Empleados_Ordenar_DataGridView();
|
|
}
|
|
private void ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (g_bol_BloquearPorCargaInicial_Empleados == false)
|
|
{
|
|
//Saber el Tipo de Ordenacion .................................
|
|
ListSortDirection obj_ListSortDirection = ListSortDirection.Ascending;
|
|
if (ex_btn_P_ArbolJerarquico_Empleados_OrdenListado.Tag.ToString().Equals("1"))
|
|
{
|
|
obj_ListSortDirection = ListSortDirection.Descending;
|
|
}
|
|
//..............................................................
|
|
|
|
//Cambiar el tipo Orden en Listado
|
|
ex_dgv_P_ArbolJerarquico_Empleados.Sort(ex_dgv_P_ArbolJerarquico_Empleados.Columns[((INTERNO_ComboBox_Modelo)ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem).Identificador], obj_ListSortDirection);
|
|
|
|
Listado_Empleados_Ordenar_DataGridView();
|
|
}
|
|
}
|
|
|
|
private void ex_dgv_P_ArbolJerarquico_Empleados_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
//Mostrar u Ocultar las columnas
|
|
if (e.Button == MouseButtons.Left)
|
|
{
|
|
string str_CambioOrdenAnterior = "";
|
|
if (ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem != null)
|
|
{
|
|
str_CambioOrdenAnterior = ((INTERNO_ComboBox_Modelo)ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem).Identificador;
|
|
}
|
|
|
|
//Seleccionar la columna en el Combo de orden
|
|
ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem = ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.Items.Cast<INTERNO_ComboBox_Modelo>().Where(m => m.Identificador.Equals(ex_dgv_P_ArbolJerarquico_Empleados.Columns[e.ColumnIndex].Name)).FirstOrDefault();
|
|
|
|
if (str_CambioOrdenAnterior.Equals(((INTERNO_ComboBox_Modelo)ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem).Identificador))
|
|
{
|
|
//Si estaba Ascendente lo pongo descendente
|
|
if (ex_dgv_P_ArbolJerarquico_Empleados.SortOrder == SortOrder.Ascending)
|
|
{
|
|
Funciones.Cambiar_Imagen_Boton_Orden(1, ex_btn_P_ArbolJerarquico_Empleados_OrdenListado);
|
|
}
|
|
//Si estaba descendente lo pongo Ascendente
|
|
else
|
|
{
|
|
Funciones.Cambiar_Imagen_Boton_Orden(0, ex_btn_P_ArbolJerarquico_Empleados_OrdenListado);
|
|
}
|
|
}
|
|
|
|
Listado_Empleados_Ordenar_DataGridView();
|
|
}
|
|
}
|
|
catch
|
|
{ }
|
|
}
|
|
public void Listado_Empleados_Ordenar_DataGridView()
|
|
{
|
|
try
|
|
{
|
|
if (ex_dgv_P_ArbolJerarquico_Empleados.Rows.Count > 0)
|
|
{
|
|
//Saber el Tipo de Ordenacion .................................
|
|
ListSortDirection obj_ListSortDirection = ListSortDirection.Ascending;
|
|
if (ex_btn_P_ArbolJerarquico_Empleados_OrdenListado.Tag.ToString().Equals("1"))
|
|
{
|
|
obj_ListSortDirection = ListSortDirection.Descending;
|
|
}
|
|
//..............................................................
|
|
|
|
if (ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem != null && ((INTERNO_ComboBox_Modelo)ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem).Identificador.Trim().Length > 0)
|
|
{
|
|
ex_dgv_P_ArbolJerarquico_Empleados.Sort(ex_dgv_P_ArbolJerarquico_Empleados.Columns[((INTERNO_ComboBox_Modelo)ex_cbo_P_ArbolJerarquico_Empleados_OrdenListado.SelectedItem).Identificador], obj_ListSortDirection);
|
|
}
|
|
else
|
|
{
|
|
ex_dgv_P_ArbolJerarquico_Empleados.Sort(ex_dgv_P_ArbolJerarquico_Empleados.Columns[g_obj_Controladora.g_obj_ABS_Listado_KRS_Empleados_P_ArbolJerarquico.ORDENACION_NOMBRECOLUMNA_PORDEFECTO()], obj_ListSortDirection);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{ }
|
|
}
|
|
#endregion
|
|
|
|
#region Mover Opciones
|
|
private bool g_bol_TieneSeleccion = false;
|
|
private void ex_dgv_P_ArbolJerarquico_Empleados_MouseDown(object sender, MouseEventArgs e)
|
|
{
|
|
g_bol_TieneSeleccion = false;
|
|
if (e.Button != MouseButtons.Left)
|
|
return;
|
|
|
|
ex_dgv_P_ArbolJerarquico_Empleados.MouseMove += ex_dgv_P_ArbolJerarquico_Empleados_MouseMove;
|
|
}
|
|
|
|
private void ex_dgv_P_ArbolJerarquico_Empleados_MouseMove(object sender, MouseEventArgs e)
|
|
{
|
|
if (g_bol_TieneSeleccion == false)
|
|
{
|
|
g_bol_TieneSeleccion = true;
|
|
|
|
ex_dgv_P_ArbolJerarquico_Empleados.MouseMove -= ex_dgv_P_ArbolJerarquico_Empleados_MouseMove;
|
|
|
|
if (e.Button != MouseButtons.Left)
|
|
return;
|
|
|
|
List<DataGridViewRow> lst_Rows = new List<DataGridViewRow>();
|
|
|
|
foreach (DataGridViewRow dgvr_Opcion in ex_dgv_P_ArbolJerarquico_Empleados.SelectedRows)
|
|
{
|
|
lst_Rows.Add(dgvr_Opcion);
|
|
}
|
|
|
|
ex_dgv_P_ArbolJerarquico_Empleados.DoDragDrop(lst_Rows, DragDropEffects.Move);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void ex_dgv_P_ArbolJerarquico_Empleados_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
|
|
{
|
|
if (e.ColumnIndex == 2)
|
|
{
|
|
if (e.Value != null &&
|
|
e.Value.ToString().Length > 0 &&
|
|
e.Value.ToString()=="X")
|
|
{
|
|
//Color Fondo
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.BackColor = Colores.G_COLOR_FONDO_TREEVIEW_ARBOLJERARQUICO_SELECCIONADO_PADRE;
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.SelectionBackColor = Colores.G_COLOR_FONDO_TREEVIEW_ARBOLJERARQUICO_SELECCIONADO_PADRE;
|
|
|
|
//Color Letra
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.ForeColor = Colores.G_COLOR_LETRA_TREEVIEW_ARBOLJERARQUICO_SELECCIONADO_PADRE;
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.SelectionForeColor = Colores.G_COLOR_LETRA_TREEVIEW_ARBOLJERARQUICO_SELECCIONADO_PADRE;
|
|
}
|
|
else
|
|
{
|
|
if (e.RowIndex % 2 == 0)
|
|
{
|
|
//Color celda
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.BackColor = Colores.G_COLOR_LISTADO_FILANORMAL_FONDO;
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.ForeColor = Colores.G_COLOR_LISTADO_FILANORMAL_LETRA;
|
|
}
|
|
else
|
|
{
|
|
//Color celda
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.BackColor = Colores.G_COLOR_LISTADO_FILAALTERNATIVA_FONDO;
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.ForeColor = Colores.G_COLOR_LISTADO_FILAALTERNATIVA_LETRA;
|
|
}
|
|
|
|
//Color celda Seleccion
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.SelectionBackColor = Colores.G_COLOR_FONDO_SELECCION;
|
|
ex_dgv_P_ArbolJerarquico_Empleados[e.ColumnIndex, e.RowIndex].Style.SelectionForeColor = Colores.G_COLOR_LETRA_SELECCION;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Arbol
|
|
private void ex_trv_P_ArbolJerarquico_Arbol_ItemDrag(object sender, ItemDragEventArgs e)
|
|
{
|
|
//Mueve el nodo usando el click izquierdo del raton.
|
|
if (e.Button == MouseButtons.Left)
|
|
{
|
|
DoDragDrop(e.Item, DragDropEffects.Move);
|
|
}
|
|
|
|
//Copia el nodo usando mel click derecho del raton
|
|
else if (e.Button == MouseButtons.Right)
|
|
{
|
|
DoDragDrop(e.Item, DragDropEffects.Copy);
|
|
}
|
|
}
|
|
private void ex_trv_P_ArbolJerarquico_Arbol_DragEnter(object sender, DragEventArgs e)
|
|
{
|
|
e.Effect = DragDropEffects.Move;
|
|
}
|
|
private void ex_trv_P_ArbolJerarquico_Arbol_DragOver(object sender, DragEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
// Recupera las coordenadas de la posicion del raton
|
|
Point Posicion = ex_trv_P_ArbolJerarquico_Arbol.PointToClient(new Point(e.X, e.Y));
|
|
|
|
// Seleciona el nodo en la posicion del ratón
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = ex_trv_P_ArbolJerarquico_Arbol.GetNodeAt(Posicion);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_trv_P_ArbolJerarquico_Arbol_DragOver));
|
|
}
|
|
}
|
|
private void ex_trv_P_ArbolJerarquico_Arbol_DragDrop(object sender, DragEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
// Recupera las coordenadas de la posicion del raton
|
|
Point Posicion = ex_trv_P_ArbolJerarquico_Arbol.PointToClient(new Point(e.X, e.Y));
|
|
|
|
// Recupera la posicion de colocacion del nodo
|
|
TreeNode trn_Nodo_Objetivo = ex_trv_P_ArbolJerarquico_Arbol.GetNodeAt(Posicion);
|
|
|
|
string str_MensajeError = "";
|
|
|
|
if (e.Data.GetData(typeof(TreeNode)) != null)
|
|
{
|
|
// Recupera el nodo que fue arrastrado
|
|
TreeNode trn_Nodo_En_Movimiento = (TreeNode)e.Data.GetData(typeof(TreeNode));
|
|
if (trn_Nodo_Objetivo != null)
|
|
{
|
|
//Confirma si el nodo esta en la posicion de colocacion y si es un nodo o un descendiente de nodo
|
|
if (!trn_Nodo_En_Movimiento.Equals(trn_Nodo_Objetivo))
|
|
{
|
|
long lng_idEmpleado = long.Parse(trn_Nodo_En_Movimiento.Tag.ToString());
|
|
long lng_idEmpleadoPadre = -1;
|
|
string str_NombreEmpleado = trn_Nodo_Objetivo.Text;
|
|
|
|
if (trn_Nodo_Objetivo.Tag.ToString().Trim().Length>0)
|
|
{
|
|
lng_idEmpleadoPadre = long.Parse(trn_Nodo_Objetivo.Tag.ToString());
|
|
}
|
|
|
|
if (trn_Nodo_Objetivo.Tag.ToString().Trim().Length == 0 || Nodos_HijoYPadreALaVez_Descendente(trn_Nodo_En_Movimiento, lng_idEmpleadoPadre) == false)
|
|
{
|
|
//Si se trata de un movimiento, elimina el nodo y lo agrega al nodo de colocacion
|
|
if (e.Effect == DragDropEffects.Move)
|
|
{
|
|
trn_Nodo_En_Movimiento.Remove();
|
|
trn_Nodo_Objetivo.Nodes.Add(trn_Nodo_En_Movimiento);
|
|
|
|
//Quitar los empleados (Supereriores) que no sean padres
|
|
List<long> lst_idEmpleadosPadres = new List<long>();
|
|
Nodos_Devolver_EmpleadosSupervisores(ref lst_idEmpleadosPadres, lng_idEmpleado);
|
|
|
|
//Grupos
|
|
g_obj_Controladora.AusenciasProgramadasTipos_EmpleadosBorrarQueNoSonSupervisores(lng_idEmpleado, lst_idEmpleadosPadres);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
str_MensajeError += str_NombreEmpleado + " ya ha sido introducido en este grupo, no se puede mover." + System.Environment.NewLine;
|
|
}
|
|
|
|
//Selccionar Nodos
|
|
Nodos_Seleccionar(trn_Nodo_En_Movimiento);
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = trn_Nodo_En_Movimiento;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
|
|
//Expande el nodo
|
|
trn_Nodo_Objetivo.Expand();
|
|
}
|
|
}
|
|
}
|
|
//Listado de Opciones Seleccionadas
|
|
else if (e.Data.GetData(typeof(List<DataGridViewRow>)) != null)
|
|
{
|
|
List<DataGridViewRow> lst_Rows = (List<DataGridViewRow>)e.Data.GetData(typeof(List<DataGridViewRow>));
|
|
|
|
if (lst_Rows != null && lst_Rows.Count > 0)
|
|
{
|
|
if (trn_Nodo_Objetivo != null)
|
|
{
|
|
//Si se trata de un movimiento, elimina el nodo y lo agrega al nodo de colocacion
|
|
if (e.Effect == DragDropEffects.Move)
|
|
{
|
|
TreeNode trn_NodoNuevo = null;
|
|
|
|
TreeNode trn_NodoUltimoIntroducido = null;
|
|
|
|
long lng_idEmpleado = -1;
|
|
string str_NombreEmpleado= "";
|
|
|
|
//Añadimos tantos nodos como filas haya
|
|
foreach (DataGridViewRow dgvr_Filas in lst_Rows)
|
|
{
|
|
//Datos del Empleado
|
|
lng_idEmpleado = long.Parse(dgvr_Filas.Cells[nameof(INTERNO_KRS_Empleados_Modelo.id)].Value.ToString());
|
|
str_NombreEmpleado = dgvr_Filas.Cells[nameof(INTERNO_KRS_Empleados_Modelo.nombre)].Value.ToString();
|
|
|
|
if (Nodos_HijoYPadreALaVez_Ascedente(trn_Nodo_Objetivo, lng_idEmpleado) ==false)
|
|
{
|
|
//Creacion del nodo
|
|
trn_NodoNuevo = new TreeNode(str_NombreEmpleado);
|
|
trn_NodoNuevo.Name = g_obj_Controladora.g_lng_idArbol_NuevosNodos.ToString();
|
|
trn_NodoNuevo.Text = str_NombreEmpleado;
|
|
trn_NodoNuevo.Tag = lng_idEmpleado;
|
|
|
|
//Agregar Nodo
|
|
trn_Nodo_Objetivo.Nodes.Add(trn_NodoNuevo);
|
|
|
|
trn_NodoUltimoIntroducido = trn_NodoNuevo;
|
|
|
|
//Agregar al Diccionario
|
|
List<TreeNode> lst_TreeNode = null;
|
|
if (g_obj_Controladora.g_dct_NodosArbolEmpleados.ContainsKey(lng_idEmpleado))
|
|
{
|
|
lst_TreeNode = g_obj_Controladora.g_dct_NodosArbolEmpleados[lng_idEmpleado];
|
|
lst_TreeNode.Add(trn_NodoNuevo);
|
|
|
|
g_obj_Controladora.g_dct_NodosArbolEmpleados[lng_idEmpleado] = lst_TreeNode;
|
|
}
|
|
else
|
|
{
|
|
lst_TreeNode = new List<TreeNode>();
|
|
lst_TreeNode.Add(trn_NodoNuevo);
|
|
g_obj_Controladora.g_dct_NodosArbolEmpleados.Add(lng_idEmpleado, lst_TreeNode);
|
|
}
|
|
|
|
//Selccionar Nodos
|
|
Nodos_Seleccionar(trn_NodoNuevo);
|
|
|
|
//Sumar -1
|
|
g_obj_Controladora.g_lng_idArbol_NuevosNodos += -1;
|
|
}
|
|
else
|
|
{
|
|
str_MensajeError += str_NombreEmpleado + " ya ha sido introducido en este grupo." + System.Environment.NewLine;
|
|
}
|
|
|
|
}
|
|
|
|
//Seleccionar el ultimo introducido
|
|
if (trn_NodoUltimoIntroducido != null)
|
|
{
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = trn_NodoUltimoIntroducido;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
}
|
|
|
|
//Expande el nodo
|
|
trn_Nodo_Objetivo.Expand();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (str_MensajeError.Trim().Length > 0)
|
|
{
|
|
Mensajes.MostrarMensaje(str_MensajeError);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_trv_P_ArbolJerarquico_Arbol_DragDrop));
|
|
}
|
|
}
|
|
|
|
private void ex_trv_P_ArbolJerarquico_Arbol_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
|
|
{
|
|
Nodos_Seleccionar(e.Node);
|
|
}
|
|
|
|
#region Mover
|
|
private void ex_btn_P_ArbolJerarquico_IzquierdaNodo_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
TreeNode trn_NodoSeleccionado = ex_trv_P_ArbolJerarquico_Arbol.SelectedNode;
|
|
if (trn_NodoSeleccionado != null)
|
|
{
|
|
//No puede ser el prinicipal
|
|
if (trn_NodoSeleccionado.Tag.ToString().Trim().Length>0)
|
|
{
|
|
//Tiene que tener un padre
|
|
if (trn_NodoSeleccionado.Parent != null)
|
|
{
|
|
//Tiene que un Abuelo apra poder moverlo
|
|
if (trn_NodoSeleccionado.Parent.Parent != null)
|
|
{
|
|
TreeNode trn_NodoAbuelo = trn_NodoSeleccionado.Parent.Parent;
|
|
long lng_idEmpleadoAbuelo = -1;
|
|
if (trn_NodoAbuelo.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
lng_idEmpleadoAbuelo = long.Parse(trn_NodoAbuelo.Tag.ToString());
|
|
}
|
|
long lng_idEmpleado = long.Parse(trn_NodoSeleccionado.Tag.ToString());
|
|
string str_EmpleadoNombre = trn_NodoSeleccionado.Text;
|
|
|
|
if (Nodos_HijoYPadreALaVez_Descendente(trn_NodoSeleccionado, lng_idEmpleadoAbuelo) == false)
|
|
{
|
|
trn_NodoSeleccionado.Remove();
|
|
trn_NodoAbuelo.Nodes.Add(trn_NodoSeleccionado);
|
|
//Expande el nodo
|
|
trn_NodoAbuelo.Expand();
|
|
|
|
//Quitar los empleados (Supereriores) que no sean padres
|
|
List<long> lst_idEmpleadosPadres = new List<long>();
|
|
Nodos_Devolver_EmpleadosSupervisores(ref lst_idEmpleadosPadres, lng_idEmpleado);
|
|
|
|
//Grupos
|
|
g_obj_Controladora.AusenciasProgramadasTipos_EmpleadosBorrarQueNoSonSupervisores(lng_idEmpleado, lst_idEmpleadosPadres);
|
|
}
|
|
else
|
|
{
|
|
Mensajes.MostrarMensaje(str_EmpleadoNombre + " ya ha sido introducido en este grupo, no se puede mover.");
|
|
}
|
|
}
|
|
|
|
//Seleccionar Nodo
|
|
Nodos_Seleccionar(trn_NodoSeleccionado);
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = trn_NodoSeleccionado;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_btn_P_ArbolJerarquico_IzquierdaNodo_Click));
|
|
}
|
|
}
|
|
private void ex_btn_P_ArbolJerarquico_DerechaNodo_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
TreeNode trn_NodoSeleccionado = ex_trv_P_ArbolJerarquico_Arbol.SelectedNode;
|
|
if (trn_NodoSeleccionado != null)
|
|
{
|
|
//No puede ser el prinicipal
|
|
if (trn_NodoSeleccionado.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
//Tiene que existir un nodo a la derecha debajo
|
|
if (trn_NodoSeleccionado.NextNode != null)
|
|
{
|
|
string str_Empleado_Siguiente = trn_NodoSeleccionado.NextNode.Text;
|
|
long lng_idEmpleado_Siguiente = long.Parse(trn_NodoSeleccionado.NextNode.Tag.ToString());
|
|
|
|
if (Nodos_HijoYPadreALaVez_Descendente(trn_NodoSeleccionado, lng_idEmpleado_Siguiente) == false)
|
|
{
|
|
TreeNode trn_NodoSiguiente = trn_NodoSeleccionado.NextNode;
|
|
trn_NodoSeleccionado.Remove();
|
|
trn_NodoSiguiente.Nodes.Add(trn_NodoSeleccionado);
|
|
|
|
//Expande el nodo
|
|
trn_NodoSiguiente.Expand();
|
|
}
|
|
else
|
|
{
|
|
Mensajes.MostrarMensaje(str_Empleado_Siguiente + " ya ha sido introducido en este grupo.");
|
|
}
|
|
}
|
|
|
|
//Seleccionar Nodo
|
|
Nodos_Seleccionar(trn_NodoSeleccionado);
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = trn_NodoSeleccionado;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_btn_P_ArbolJerarquico_DerechaNodo_Click));
|
|
}
|
|
}
|
|
private void ex_btn_P_ArbolJerarquico_PrimeroNodo_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
int int_Posicion;
|
|
|
|
TreeNode trn_NodoSeleccionado = ex_trv_P_ArbolJerarquico_Arbol.SelectedNode;
|
|
if (trn_NodoSeleccionado != null)
|
|
{
|
|
//No puede ser el prinicipal
|
|
if (trn_NodoSeleccionado.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
if (trn_NodoSeleccionado.Parent != null)
|
|
{
|
|
TreeNode trn_nodoPadre = trn_NodoSeleccionado.Parent;
|
|
int_Posicion = trn_nodoPadre.Nodes[0].Index;
|
|
trn_NodoSeleccionado.Remove();
|
|
trn_nodoPadre.Nodes.Insert(int_Posicion - 1, trn_NodoSeleccionado);
|
|
}
|
|
|
|
//Seleccionar Nodo
|
|
Nodos_Seleccionar(trn_NodoSeleccionado);
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = trn_NodoSeleccionado;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_btn_P_ArbolJerarquico_PrimeroNodo_Click));
|
|
}
|
|
}
|
|
private void ex_btn_P_ArbolJerarquico_SubirNodo_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
int int_Posicion;
|
|
|
|
TreeNode trn_NodoSeleccionado = ex_trv_P_ArbolJerarquico_Arbol.SelectedNode;
|
|
if (trn_NodoSeleccionado != null)
|
|
{
|
|
//No puede ser el prinicipal
|
|
if (trn_NodoSeleccionado.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
if (trn_NodoSeleccionado.Parent != null)
|
|
{
|
|
TreeNode trn_nodoPadre = trn_NodoSeleccionado.Parent;
|
|
int_Posicion = trn_nodoPadre.Nodes.IndexOf(trn_NodoSeleccionado);
|
|
trn_NodoSeleccionado.Remove();
|
|
trn_nodoPadre.Nodes.Insert(int_Posicion - 1, trn_NodoSeleccionado);
|
|
}
|
|
|
|
//Seleccionar Nodo
|
|
Nodos_Seleccionar(trn_NodoSeleccionado);
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = trn_NodoSeleccionado;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_btn_P_ArbolJerarquico_SubirNodo_Click));
|
|
}
|
|
}
|
|
private void ex_btn_P_ArbolJerarquico_BajarNodo_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
int int_Posicion;
|
|
|
|
TreeNode trn_NodoSeleccionado = ex_trv_P_ArbolJerarquico_Arbol.SelectedNode;
|
|
if (trn_NodoSeleccionado != null)
|
|
{
|
|
//No puede ser el prinicipal
|
|
if (trn_NodoSeleccionado.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
if (trn_NodoSeleccionado.Parent != null)
|
|
{
|
|
TreeNode trn_NodoPadre = trn_NodoSeleccionado.Parent;
|
|
int_Posicion = trn_NodoPadre.Nodes.IndexOf(trn_NodoSeleccionado);
|
|
trn_NodoSeleccionado.Remove();
|
|
trn_NodoPadre.Nodes.Insert(int_Posicion + 1, trn_NodoSeleccionado);
|
|
}
|
|
|
|
//Seleccionar Nodo
|
|
Nodos_Seleccionar(trn_NodoSeleccionado);
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = trn_NodoSeleccionado;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_btn_P_ArbolJerarquico_BajarNodo_Click));
|
|
}
|
|
}
|
|
private void ex_btn_P_ArbolJerarquico_UltimoNodo_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
int int_Posicion;
|
|
|
|
TreeNode trn_NodoSeleccionado = ex_trv_P_ArbolJerarquico_Arbol.SelectedNode;
|
|
if (trn_NodoSeleccionado != null)
|
|
{
|
|
//No puede ser el prinicipal
|
|
if (trn_NodoSeleccionado.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
if (trn_NodoSeleccionado.Parent != null)
|
|
{
|
|
TreeNode trn_nodoPadre = trn_NodoSeleccionado.Parent;
|
|
int_Posicion = trn_nodoPadre.Nodes[trn_nodoPadre.Nodes.Count - 1].Index;
|
|
trn_NodoSeleccionado.Remove();
|
|
trn_nodoPadre.Nodes.Insert(int_Posicion + 1, trn_NodoSeleccionado);
|
|
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = trn_NodoSeleccionado;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_btn_P_ArbolJerarquico_UltimoNodo_Click));
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Borrar
|
|
private void ex_btn_P_ArbolJerarquico_EliminarRama_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
TreeNode trn_NodoSeleccionado = ex_trv_P_ArbolJerarquico_Arbol.SelectedNode;
|
|
|
|
if (trn_NodoSeleccionado != null)
|
|
{
|
|
//No puede ser el prinicipal
|
|
if (trn_NodoSeleccionado.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
//Borrar del listado de nodos que esta en el diccionario
|
|
Borrar_Nodo_EnDiccionario_Recursivo(trn_NodoSeleccionado);
|
|
|
|
//Borrar nodo
|
|
trn_NodoSeleccionado.Remove();
|
|
|
|
//Borrar diccinario
|
|
Borrar_Diccionario();
|
|
|
|
//Restructurar grupos, quitando los supervisores que faltan
|
|
List<long> lst_idEmpleadosUtilizados = new List<long>();
|
|
Restructurar_Grupos(ex_trv_P_ArbolJerarquico_Arbol.Nodes[0],ref lst_idEmpleadosUtilizados);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(ex_btn_P_ArbolJerarquico_EliminarRama_Click));
|
|
}
|
|
}
|
|
|
|
private void Borrar_Nodo_EnDiccionario_Recursivo(TreeNode _trn_NodoSeleccionado)
|
|
{
|
|
try
|
|
{
|
|
//Si no es la principal
|
|
if (_trn_NodoSeleccionado.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
foreach (KeyValuePair<long,List<TreeNode>> kvp_PorEmpleados in g_obj_Controladora.g_dct_NodosArbolEmpleados)
|
|
{
|
|
kvp_PorEmpleados.Value.RemoveAll(m => m.Name.Equals(_trn_NodoSeleccionado.Name));
|
|
}
|
|
}
|
|
|
|
//Hijos
|
|
if (_trn_NodoSeleccionado.Nodes != null && _trn_NodoSeleccionado.Nodes.Count > 0)
|
|
{
|
|
foreach (TreeNode trn_NodoSeleccionado in _trn_NodoSeleccionado.Nodes)
|
|
{
|
|
Borrar_Nodo_EnDiccionario_Recursivo(trn_NodoSeleccionado);
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(Borrar_Nodo_EnDiccionario_Recursivo));
|
|
}
|
|
}
|
|
|
|
private void Borrar_Diccionario()
|
|
{
|
|
try
|
|
{
|
|
List<long> lst_idEmpleados = new List<long>();
|
|
Nodos_Devolver_EmpleadosInferiores(ref lst_idEmpleados, ex_trv_P_ArbolJerarquico_Arbol.Nodes[0]);
|
|
|
|
List<long> lst_EmpleadosEnDiccionario = g_obj_Controladora.g_dct_NodosArbolEmpleados.Keys.ToList();
|
|
if (lst_EmpleadosEnDiccionario != null && lst_EmpleadosEnDiccionario.Count>0)
|
|
{
|
|
foreach (long lng_idEmpleado in lst_EmpleadosEnDiccionario)
|
|
{
|
|
if (lst_idEmpleados==null ||
|
|
lst_idEmpleados.Count==0 ||
|
|
!lst_idEmpleados.Contains(lng_idEmpleado))
|
|
{
|
|
g_obj_Controladora.g_dct_NodosArbolEmpleados.Remove(lng_idEmpleado);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(Borrar_Diccionario));
|
|
}
|
|
}
|
|
|
|
private void Restructurar_Grupos(TreeNode _trn_Rama,ref List<long> _lst_idEmpleadosUtilizados)
|
|
{
|
|
try
|
|
{
|
|
if (_trn_Rama.Nodes != null && _trn_Rama.Nodes.Count > 0)
|
|
{
|
|
foreach (TreeNode trn_Rama_Interna in _trn_Rama.Nodes)
|
|
{
|
|
//idEmpleado de la rama
|
|
long lng_idEmpleado = long.Parse(trn_Rama_Interna.Tag.ToString());
|
|
|
|
if (!_lst_idEmpleadosUtilizados.Contains(lng_idEmpleado))
|
|
{
|
|
//Obtener los Supervisores
|
|
List<long> lst_idEmpleadosSupervisores = new List<long>();
|
|
Nodos_Devolver_EmpleadosSupervisores(ref lst_idEmpleadosSupervisores, lng_idEmpleado);
|
|
|
|
//Borrar los que no son Supervisores
|
|
g_obj_Controladora.AusenciasProgramadasTipos_EmpleadosBorrarQueNoSonSupervisores(lng_idEmpleado,lst_idEmpleadosSupervisores);
|
|
|
|
//Añadirlo al listado para que no se vuelva a utilizar mas
|
|
_lst_idEmpleadosUtilizados.Add(lng_idEmpleado);
|
|
}
|
|
|
|
Restructurar_Grupos(trn_Rama_Interna, ref _lst_idEmpleadosUtilizados);
|
|
}
|
|
}
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(Restructurar_Grupos));
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void Nodos_Seleccionar(TreeNode _trn_Nodo)
|
|
{
|
|
try
|
|
{
|
|
#region Vaciar Seleccion anterior
|
|
g_obj_Controladora.AusenciasProgramadasTipos_ActualizarEmpleadoSeleccionadoArbol(null);
|
|
if (ex_trv_P_ArbolJerarquico_Arbol.Nodes != null && ex_trv_P_ArbolJerarquico_Arbol.Nodes.Count > 0)
|
|
{
|
|
Nodos_VaciarSeleccion(ex_trv_P_ArbolJerarquico_Arbol.Nodes);
|
|
}
|
|
#endregion
|
|
|
|
#region DataGridView Poner todos como hijos
|
|
foreach (DataGridViewRow dgvr_Empleado in ex_dgv_P_ArbolJerarquico_Empleados.Rows.Cast<DataGridViewRow>().ToList())
|
|
{
|
|
dgvr_Empleado.Cells[nameof(INTERNO_KRS_Empleados_Modelo.EsPadre_AUX)].Value = "";
|
|
}
|
|
ex_dgv_P_ArbolJerarquico_Empleados.Refresh();
|
|
#endregion
|
|
|
|
#region Vaciar grupos
|
|
g_obj_Controladora.AusenciasProgramadasTipos_Vaciar();
|
|
#endregion
|
|
|
|
//Seleccion de todos los nodos que sena del mismo empleado
|
|
if (_trn_Nodo.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
if (g_obj_Controladora.g_dct_NodosArbolEmpleados.Count > 0)
|
|
{
|
|
long lng_idEmpleado = long.Parse(_trn_Nodo.Tag.ToString());
|
|
|
|
if (g_obj_Controladora.g_dct_NodosArbolEmpleados.ContainsKey(lng_idEmpleado))
|
|
{
|
|
//Empleado seleccionado en arbol
|
|
g_obj_Controladora.AusenciasProgramadasTipos_ActualizarEmpleadoSeleccionadoArbol(g_obj_Controladora.g_lst_INTERNO_KRS_Empleados_Modelo.Where(m => m.id.Equals(lng_idEmpleado)).FirstOrDefault());
|
|
|
|
List<TreeNode> lst_Nodos = g_obj_Controladora.g_dct_NodosArbolEmpleados[lng_idEmpleado];
|
|
|
|
if (lst_Nodos != null && lst_Nodos.Count > 0)
|
|
{
|
|
foreach (TreeNode trn_NodoSeleccionado in lst_Nodos)
|
|
{
|
|
trn_NodoSeleccionado.BackColor = Colores.G_COLOR_FONDO_TREEVIEW_ARBOLJERARQUICO_SELECCIONADO;
|
|
trn_NodoSeleccionado.ForeColor = Colores.G_COLOR_LETRA_TREEVIEW_ARBOLJERARQUICO_SELECCIONADO;
|
|
|
|
|
|
//Seleccionar nodos padre de los nodos selccionados
|
|
if (trn_NodoSeleccionado.Parent!=null)
|
|
{
|
|
Nodos_Seleccionar_Padre(trn_NodoSeleccionado.Parent);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(Nodos_Seleccionar));
|
|
}
|
|
}
|
|
private void Nodos_Seleccionar_Padre(TreeNode _trn_Nodo)
|
|
{
|
|
try
|
|
{
|
|
if (_trn_Nodo.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
long lng_idEmpleado = long.Parse(_trn_Nodo.Tag.ToString());
|
|
|
|
_trn_Nodo.BackColor = Colores.G_COLOR_FONDO_TREEVIEW_ARBOLJERARQUICO_SELECCIONADO_PADRE;
|
|
_trn_Nodo.ForeColor = Colores.G_COLOR_LETRA_TREEVIEW_ARBOLJERARQUICO_SELECCIONADO_PADRE;
|
|
|
|
#region DataGridView Poner como Padre
|
|
DataGridViewRow dgvr_Seleccionada= ex_dgv_P_ArbolJerarquico_Empleados.Rows
|
|
.Cast<DataGridViewRow>()
|
|
.Where(r => r.Cells[0].Value.Equals(lng_idEmpleado)).FirstOrDefault();
|
|
if (dgvr_Seleccionada!=null)
|
|
{
|
|
dgvr_Seleccionada.Cells[nameof(INTERNO_KRS_Empleados_Modelo.EsPadre_AUX)].Value = "X";
|
|
}
|
|
ex_dgv_P_ArbolJerarquico_Empleados.Refresh();
|
|
#endregion
|
|
|
|
if (_trn_Nodo.Parent != null)
|
|
{
|
|
Nodos_Seleccionar_Padre(_trn_Nodo.Parent);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(Nodos_Seleccionar_Padre));
|
|
}
|
|
}
|
|
|
|
#region Nodos Devolver Empleados Supervisores
|
|
private void Nodos_Devolver_EmpleadosSupervisores(ref List<long> _lst_idEmpleadosSupervisores, long _lng_idEmpleado)
|
|
{
|
|
List<TreeNode> lst_Nodos = g_obj_Controladora.g_dct_NodosArbolEmpleados[_lng_idEmpleado];
|
|
|
|
if (lst_Nodos != null && lst_Nodos.Count > 0)
|
|
{
|
|
foreach (TreeNode trn_NodoSeleccionado in lst_Nodos)
|
|
{
|
|
Nodos_Devolver_EmpleadosSupervisores_Recursivo(ref _lst_idEmpleadosSupervisores, trn_NodoSeleccionado.Parent);
|
|
}
|
|
}
|
|
}
|
|
private void Nodos_Devolver_EmpleadosSupervisores_Recursivo(ref List<long> _lst_idEmpleadosSupervisores, TreeNode _trn_Nodo)
|
|
{
|
|
try
|
|
{
|
|
if (_trn_Nodo.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
_lst_idEmpleadosSupervisores.Add(long.Parse(_trn_Nodo.Tag.ToString()));
|
|
|
|
if (_trn_Nodo.Parent != null)
|
|
{
|
|
Nodos_Devolver_EmpleadosSupervisores_Recursivo(ref _lst_idEmpleadosSupervisores, _trn_Nodo.Parent);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Control_Errores.Errores_Log("", ex, nameof(P_ArbolJerarquico) + "/" + nameof(Nodos_Devolver_EmpleadosSupervisores));
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Nodos Devolver Empleados Inferiores
|
|
private void Nodos_Devolver_EmpleadosInferiores(ref List<long> _lst_idEmpleadosInferiores, TreeNode _trn_Rama)
|
|
{
|
|
//Si no es la principal
|
|
if (_trn_Rama.Tag.ToString().Trim().Length>0)
|
|
{
|
|
if (!_lst_idEmpleadosInferiores.Exists(m=>m==long.Parse(_trn_Rama.Tag.ToString())))
|
|
{
|
|
_lst_idEmpleadosInferiores.Add(long.Parse(_trn_Rama.Tag.ToString()));
|
|
}
|
|
}
|
|
|
|
//Hijos
|
|
if (_trn_Rama.Nodes != null && _trn_Rama.Nodes.Count > 0)
|
|
{
|
|
foreach (TreeNode trn_NodoSeleccionado in _trn_Rama.Nodes)
|
|
{
|
|
Nodos_Devolver_EmpleadosInferiores(ref _lst_idEmpleadosInferiores, trn_NodoSeleccionado);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void Nodos_VaciarSeleccion(TreeNodeCollection _lst_trn_Nodos)
|
|
{
|
|
ex_trv_P_ArbolJerarquico_Arbol.SelectedNode = null;
|
|
ex_trv_P_ArbolJerarquico_Arbol.Select();
|
|
|
|
foreach (TreeNode trn_Nodo in _lst_trn_Nodos)
|
|
{
|
|
if (trn_Nodo.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
trn_Nodo.BackColor = Color.White;
|
|
trn_Nodo.ForeColor = Color.Black;
|
|
}
|
|
|
|
//Tiene hijos
|
|
if (trn_Nodo.Nodes != null && trn_Nodo.Nodes.Count > 0)
|
|
{
|
|
Nodos_VaciarSeleccion(trn_Nodo.Nodes);
|
|
}
|
|
}
|
|
}
|
|
private bool Nodos_HijoYPadreALaVez_Ascedente(TreeNode _trn_Nodo_Padre,long _lng_idEmpleado)
|
|
{
|
|
bool bol_ValorDevuelto = false;
|
|
|
|
if (_trn_Nodo_Padre.Tag.ToString().Trim().Length>0)
|
|
{
|
|
long lng_idEmpleado_Padre = long.Parse(_trn_Nodo_Padre.Tag.ToString());
|
|
if (lng_idEmpleado_Padre== _lng_idEmpleado)
|
|
{
|
|
bol_ValorDevuelto= true;
|
|
}
|
|
}
|
|
|
|
//Tiene Padre
|
|
if (bol_ValorDevuelto==false && _trn_Nodo_Padre.Parent!=null)
|
|
{
|
|
bol_ValorDevuelto= Nodos_HijoYPadreALaVez_Ascedente(_trn_Nodo_Padre.Parent,_lng_idEmpleado);
|
|
}
|
|
|
|
return bol_ValorDevuelto;
|
|
}
|
|
private bool Nodos_HijoYPadreALaVez_Descendente(TreeNode _trn_Nodo, long _lng_idEmpleado)
|
|
{
|
|
bool bol_ValorDevuelto = false;
|
|
|
|
if (_trn_Nodo.Tag.ToString().Trim().Length > 0)
|
|
{
|
|
long lng_idEmpleado = long.Parse(_trn_Nodo.Tag.ToString());
|
|
if (lng_idEmpleado == _lng_idEmpleado)
|
|
{
|
|
bol_ValorDevuelto = true;
|
|
}
|
|
}
|
|
|
|
//Tiene Hijos
|
|
if (bol_ValorDevuelto == false && _trn_Nodo.Nodes != null)
|
|
{
|
|
foreach(TreeNode trn_Nodo in _trn_Nodo.Nodes)
|
|
{
|
|
bol_ValorDevuelto = Nodos_HijoYPadreALaVez_Descendente(trn_Nodo, _lng_idEmpleado);
|
|
|
|
if (bol_ValorDevuelto==true)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return bol_ValorDevuelto;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Grabar
|
|
private void ex_btn_P_ArbolJerarquico_Grabar_Click(object sender, EventArgs e)
|
|
{
|
|
Grabar();
|
|
}
|
|
private void Grabar()
|
|
{
|
|
if (//Modificar
|
|
(Datos_Generales.Permisos_Comprobar(g_mdl_PRV_OpcionesDetalle.opcion, g_lst_INTERNO_Permisos_Modelo, (int)G_ENUM_PERMISOS.Modificar, true)))
|
|
{
|
|
g_obj_Controladora.GrabarDatos();
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Teclas de acceso rapido
|
|
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
|
{
|
|
// Salir sin Seleccionar
|
|
if (keyData == Keys.F10)
|
|
{
|
|
Salir_P_Base();
|
|
return true;
|
|
}
|
|
// Grabar
|
|
else if (keyData == Keys.F2)
|
|
{
|
|
Grabar();
|
|
return true;
|
|
}
|
|
return base.ProcessCmdKey(ref msg, keyData);
|
|
}
|
|
#endregion
|
|
}
|
|
}
|