295 lines
14 KiB
C#
295 lines
14 KiB
C#
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<int> g_Array_ListadoLineas = new List<int>();
|
|
private List<INTERNO_ComboBox_Modelo> g_lst_Tipos_INTERNO_ComboBox_Modelo = new List<INTERNO_ComboBox_Modelo>();
|
|
#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<KRS_JornadasLinea> 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<INTERNO_VerificacionFichajes_JornadasLinea_Modelo> lst_INTERNO_VerificacionFichajes_JornadasLinea_Modelo = new List<INTERNO_VerificacionFichajes_JornadasLinea_Modelo>();
|
|
|
|
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<INTERNO_ComboBox_Modelo> 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
|
|
}
|
|
}
|