Exferia/Exferia_KairosPro/Exferia_KairosPRO/4_Vistas/PE_Jornada.cs

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
}
}