using Exferia_Aplicacion.General; using Exferia_Aplicacion.Visualizacion; using Exferia_KairosPRO._1_Modelos; using Exferia_KairosPRO._2_Datos; using Exferia_KairosPRO._4_Vistas.ControlesPersonalizados_DentroPaneles; using Exferia_KairosPRO.General; using Exferia_KairosPRO_EF; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace Exferia_KairosPRO._4_Vistas { public partial class PE_Jornada : Exferia_Formularios.P_Base { #region Varibles privadas private long g_lng_IdJornadaCabecera = -1; private long g_lng_idEmpleado = -1; private DateTime? g_dtt_Fecha = null; private string g_str_Jornada = "Jornada"; public bool g_bol_Termino_CargaDatos_Inicial = false;//Se utiliza para saber cuando se termina la carga de los datos estaticos //Clase de negocio necesarias para cargar la jornada linea private KRS_JornadasLinea_Datos g_obj_KRS_JornadasLinea_Datos = new KRS_JornadasLinea_Datos(); //Tareea Asincrona de carga de datos private BackgroundWorker g_obj_TareaAsincrona_CargarDatos; //Variables para la creacion de las lineas de la jornada... private int g_int_NumeroLineas = 0; private int g_int_PosicionY_Lineas = 5; private List g_Array_ListadoLineas = new List(); private List g_lst_Tipos_INTERNO_ComboBox_Modelo = new List(); #endregion #region Constructor public PE_Jornada(long _lng_IdJornadaCabecera,long _lng_idEmpleado,DateTime _dtt_Fecha) { InitializeComponent(); g_lng_IdJornadaCabecera = _lng_IdJornadaCabecera; g_lng_idEmpleado = _lng_idEmpleado; g_dtt_Fecha = _dtt_Fecha; Repintar.Empezar(this); //Cargar para los combos Cargar_Combos(); g_bol_Termino_CargaDatos_Inicial = true; //Cargamos la Jornada y sus lineas CargarDatosJornada(); } #endregion #region Cargar Combos private void Cargar_Combos() { try { g_lst_Tipos_INTERNO_ComboBox_Modelo = ListadosEstaticos.Devolver_Tipos_JornadasLinea(); } catch (Control_Errores) { } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(PE_Jornada) + "/" + nameof(Cargar_Combos)); } } #endregion #region CargarDatos Jornada public void CargarDatosJornada() { try { //Bloqueo el formulario para que no se pueda hacer nada hasta que termine Enabled = false; ex_pnl_PE_Jornada_JornadaLinea.Controls.Clear(); //Si a tarea asincrona esta en marcha la paro // Si la tarea asincrona esta en marcha la paro if (g_obj_TareaAsincrona_CargarDatos != null) { while (g_obj_TareaAsincrona_CargarDatos.IsBusy) Application.DoEvents(); } else { g_obj_TareaAsincrona_CargarDatos = new BackgroundWorker(); g_obj_TareaAsincrona_CargarDatos.DoWork += new DoWorkEventHandler(TareaAsincrona_CargarDatosJornada_DoWork); g_obj_TareaAsincrona_CargarDatos.ProgressChanged += new ProgressChangedEventHandler(TareaAsincrona_CargarDatosJornada_ProgressChanged); g_obj_TareaAsincrona_CargarDatos.RunWorkerCompleted += new RunWorkerCompletedEventHandler(TareaAsincrona_CargarDatosJornada_Completed); g_obj_TareaAsincrona_CargarDatos.WorkerReportsProgress = true; } //(Tarea Asincrona) Cargar Datos ################################################################## g_obj_TareaAsincrona_CargarDatos.RunWorkerAsync(); //################################################################################################# } catch (Exception ex) { Enabled = true; throw new Control_Errores(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA(), ex, nameof(PE_Jornada) + "/" + nameof(CargarDatosJornada), true); } } private void TareaAsincrona_CargarDatosJornada_DoWork(object sender, DoWorkEventArgs e) { INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo(); mdl_ValorDevuelto_Modelo.TodoCorrecto = true; try { //Cargar valores if(g_bol_Termino_CargaDatos_Inicial == false) { mdl_ValorDevuelto_Modelo.TodoCorrecto = false; mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA(); } else { if(ex_pnl_PE_Jornada_JornadaLinea.Controls.Count == 0) { List lst_KRS_JornadasLinea = g_obj_KRS_JornadasLinea_Datos.Obtener_ModeloListado_Por_JornadaCabecera(g_lng_IdJornadaCabecera); if(lst_KRS_JornadasLinea != null && lst_KRS_JornadasLinea.Count() > 0) { List lst_INTERNO_VerificacionFichajes_JornadasLinea_Modelo = new List(); foreach (KRS_JornadasLinea mdl_KRS_JornadasLinea in lst_KRS_JornadasLinea) { INTERNO_VerificacionFichajes_JornadasLinea_Modelo mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo = new INTERNO_VerificacionFichajes_JornadasLinea_Modelo(); mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.id = mdl_KRS_JornadasLinea.id; mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.hora = mdl_KRS_JornadasLinea.hora; mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.tipo = mdl_KRS_JornadasLinea.tipo; if (mdl_KRS_JornadasLinea.tipo == Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_AUSENCIAOBLIGADA) { mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.tipo_Descripcion = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_AUSENCIAOBLIGADA; } else if (mdl_KRS_JornadasLinea.tipo == Variables_KairosPRO.G_LNG_JORNADALINEA_TIPO_CODIGO_FLEXIBLE) { mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.tipo_Descripcion = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_FLEXIBLE; } else { mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.tipo_Descripcion = Variables_KairosPRO.G_STR_JORNADALINEA_TIPO_DESCRIPCION_PRESENCIAOBLIGADA; } mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.sumaTiempo = mdl_KRS_JornadasLinea.sumaTiempo; mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.saltaDia = mdl_KRS_JornadasLinea.saltaDia; lst_INTERNO_VerificacionFichajes_JornadasLinea_Modelo.Add(mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo); } //Añadir Solicitudes Ausentismo si lo hubiera Funciones_KairosPRO.Obtener_JornadaLineas_ConSolicitudesDeAusentismoPorHoras(g_lng_idEmpleado, g_dtt_Fecha.Value, ref lst_INTERNO_VerificacionFichajes_JornadasLinea_Modelo); foreach (INTERNO_VerificacionFichajes_JornadasLinea_Modelo mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo in lst_INTERNO_VerificacionFichajes_JornadasLinea_Modelo) { ((BackgroundWorker)sender).ReportProgress(1, mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo); } } else { g_str_Jornada = "Sin Jornada"; } } } } catch (ThreadAbortException ex) { Control_Errores.Errores_Log("", ex, nameof(PE_Jornada) + "/" + nameof(TareaAsincrona_CargarDatosJornada_DoWork)); mdl_ValorDevuelto_Modelo.TodoCorrecto = false; mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA(); } catch (Control_Errores) { mdl_ValorDevuelto_Modelo.TodoCorrecto = false; mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA(); } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(PE_Jornada) + "/" + nameof(TareaAsincrona_CargarDatosJornada_DoWork)); mdl_ValorDevuelto_Modelo.TodoCorrecto = false; mdl_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA(); } finally { e.Result = mdl_ValorDevuelto_Modelo; } } private void TareaAsincrona_CargarDatosJornada_ProgressChanged(object sender, ProgressChangedEventArgs e) { try { if(e.ProgressPercentage == 1) { Crear_Linea((INTERNO_VerificacionFichajes_JornadasLinea_Modelo)e.UserState); } } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(PE_Jornada) + "/" + nameof(TareaAsincrona_CargarDatosJornada_ProgressChanged)); } } private void TareaAsincrona_CargarDatosJornada_Completed(object sender, RunWorkerCompletedEventArgs e) { //Desbloquear el Formulario Enabled = true; try { INTERNO_ValorDevuelto_Modelo mdl_ValorDevuelto_Modelo_Resultado = (INTERNO_ValorDevuelto_Modelo)e.Result; //Mostrar si tuviera algun mensaje if (mdl_ValorDevuelto_Modelo_Resultado.TodoCorrecto == false) { Mensajes.MostrarMensaje(mdl_ValorDevuelto_Modelo_Resultado.Mensaje); } else { P_Base_TituloPantalla = g_str_Jornada; } } catch (Exception ex) { Control_Errores.Errores_Log("", ex, nameof(PE_Jornada) + "/" + nameof(TareaAsincrona_CargarDatosJornada_Completed)); Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA()); g_bol_Termino_CargaDatos_Inicial = false; } finally { g_bol_Termino_CargaDatos_Inicial = true; } } #region Jornada Linea private void Crear_Linea(INTERNO_VerificacionFichajes_JornadasLinea_Modelo _mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo) { //añadir control Creado del subproceso en el hilo principal........... if (InvokeRequired) { Invoke((MethodInvoker)delegate { Crear_Linea(_mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo); }); return; } g_int_NumeroLineas += 1; //Calcular el tamaño del panel ########### int int_AnchoPanelprincipal = 518; if (ex_pnl_PE_Jornada_JornadaLinea.Controls != null && ex_pnl_PE_Jornada_JornadaLinea.Controls.Count > 0 && g_Array_ListadoLineas.Count > 0) { int_AnchoPanelprincipal = ex_pnl_PE_Jornada_JornadaLinea.Controls.Find("controlusuario_CTU_P_Jornada_Lineas" + g_Array_ListadoLineas[0], false).FirstOrDefault().Width; } //Clonar el listado List lst_Tipos_INTERNO_ComboBox_Modelo = Funciones.Clonar(g_lst_Tipos_INTERNO_ComboBox_Modelo); //Objeto Personalizado CTU_P_Jornada_Lineas_Sololectura controlusuario_CTU_P_Jornada_Lineas_Sololectura = new CTU_P_Jornada_Lineas_Sololectura( g_int_NumeroLineas, _mdl_INTERNO_VerificacionFichajes_JornadasLinea_Modelo); controlusuario_CTU_P_Jornada_Lineas_Sololectura.Name = "controlusuario_CTU_P_Jornada_Lineas" + g_int_NumeroLineas; controlusuario_CTU_P_Jornada_Lineas_Sololectura.Size = new Size(int_AnchoPanelprincipal, 23); controlusuario_CTU_P_Jornada_Lineas_Sololectura.Location = new Point(5, g_int_PosicionY_Lineas); controlusuario_CTU_P_Jornada_Lineas_Sololectura.Anchor = (AnchorStyles.Top | AnchorStyles.Left); //Añadir al panel Principal ex_pnl_PE_Jornada_JornadaLinea.Controls.Add(controlusuario_CTU_P_Jornada_Lineas_Sololectura); g_Array_ListadoLineas.Add(g_int_NumeroLineas); //Sumar Posicion g_int_PosicionY_Lineas += controlusuario_CTU_P_Jornada_Lineas_Sololectura.Height + 5; } #endregion #endregion } }