Exferia/Exferia_KairosPro/Exferia_KairosPRO/2_Datos/KRS_ArbolJerarquico_Datos.cs

206 lines
8.3 KiB
C#

using Exferia_Aplicacion.General;
using Exferia_EntityFramework;
using Exferia_KairosPRO._1_Modelos;
using Exferia_KairosPRO._1_Modelos.Herencia.Capas;
using Exferia_KairosPRO_EF;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading;
using System.Transactions;
using static Exferia_Aplicacion.General.Enumerados;
namespace Exferia_KairosPRO._2_Datos
{
public class KRS_ArbolJerarquico_Datos
{
#region Obtener
public List<KRS_ArbolJerarquico> Obtener()
{
KairosProEntities obj_KairosProEntities = null;
List<KRS_ArbolJerarquico> lst_KRS_ArbolJerarquico = null;
try
{
obj_KairosProEntities = new KairosProEntities();
obj_KairosProEntities.Configuration.LazyLoadingEnabled = false;
string str_SQL =
" SELECT " +
nameof(KRS_ArbolJerarquico.id) + "," +
nameof(KRS_ArbolJerarquico.codigoCliente) + "," +
nameof(KRS_ArbolJerarquico.idEmpleado) + "," +
nameof(KRS_ArbolJerarquico.idPadre) + "," +
nameof(KRS_ArbolJerarquico.orden) +
" FROM " + nameof(KRS_ArbolJerarquico) +
" WHERE " +
nameof(KRS_ArbolJerarquico.codigoCliente) + "=@codigoCliente ";
//Parametros
object[] arr_Parametros = new object[]
{
new SqlParameter("@codigoCliente", Variables.G_LNG_IDCLIENTE_LICENCIAVALIDADO)
};
//Rellenar el Modelo
lst_KRS_ArbolJerarquico = obj_KairosProEntities.Database.SqlQuery<KRS_ArbolJerarquico>(str_SQL, arr_Parametros).ToList();
if (lst_KRS_ArbolJerarquico!=null && lst_KRS_ArbolJerarquico.Count>0)
{
KRS_Empleados_Datos obj_KRS_Empleados_Datos = new KRS_Empleados_Datos();
List<KRS_Empleados> lst_KRS_Empleados = obj_KRS_Empleados_Datos.Obtener_ModeloListado_Por_Ids(lst_KRS_ArbolJerarquico.Select(m=>m.idEmpleado).ToList());
#region DESPUES SE LO VOY ASIGNANDO A LOS REGISTRO UNO A UNO
foreach (KRS_ArbolJerarquico mdl_KRS_ArbolJerarquico in lst_KRS_ArbolJerarquico)
{
//KRS_AusenciasProgramadasTipos #############################################
if (lst_KRS_Empleados != null &&
lst_KRS_Empleados.Count > 0)
{
mdl_KRS_ArbolJerarquico.KRS_Empleados = lst_KRS_Empleados.Where(m => m.id == mdl_KRS_ArbolJerarquico.idEmpleado).FirstOrDefault();
}
}
#endregion
}
}
catch (Control_Errores)
{
throw;
}
catch (Exception ex)
{
throw new Control_Errores("", ex, nameof(KRS_ArbolJerarquico_Datos) + "/" + nameof(Obtener), true);
}
finally
{
obj_KairosProEntities.Database.Connection.Close();
obj_KairosProEntities.Dispose();
}
return lst_KRS_ArbolJerarquico;
}
#endregion
#region Grabar
public INTERNO_ValorDevuelto_Modelo Grabar(KRS_ArbolJerarquico _mdl_KRS_ArbolJerarquico)
{
KairosProEntities obj_KairosProEntities = null;
INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = true;
try
{
obj_KairosProEntities = new KairosProEntities();
obj_KairosProEntities.Configuration.LazyLoadingEnabled = false;
//Tipo de Accion que se va a realizar
mdl_INTERNO_ValorDevuelto_Modelo.TipoAccion = G_ENUM_TIPOACCION.INT_INSERTAR;
string str_SQL_Insert = " INSERT INTO " + nameof(KRS_ArbolJerarquico) +
" (" +
nameof(KRS_ArbolJerarquico.codigoCliente) + "," +
nameof(KRS_ArbolJerarquico.idEmpleado) + "," +
nameof(KRS_ArbolJerarquico.idPadre) + "," +
nameof(KRS_ArbolJerarquico.orden) +
" ) " +
" OUTPUT INSERTED." + nameof(KRS_ArbolJerarquico.id) +
" VALUES " +
" ( " +
"@codigoCliente," +
"@idEmpleado," +
"@idPadre," +
"@orden" +
" ) ";
//Parametros
object[] arr_Parametros_Insert = new object[]
{
new SqlParameter("@codigoCliente", _mdl_KRS_ArbolJerarquico.codigoCliente),
new SqlParameter("@idEmpleado", _mdl_KRS_ArbolJerarquico.idEmpleado),
_mdl_KRS_ArbolJerarquico.idPadre != null
? new SqlParameter("@idPadre", _mdl_KRS_ArbolJerarquico.idPadre.Value)
: new SqlParameter("@idPadre", DBNull.Value),
new SqlParameter("@orden", _mdl_KRS_ArbolJerarquico.orden)
};
//Insertar
//Id de la tabla
mdl_INTERNO_ValorDevuelto_Modelo.Id = obj_KairosProEntities.Database.SqlQuery<long>(str_SQL_Insert, arr_Parametros_Insert).Single();
}
catch (Control_Errores)
{
throw;
}
catch (Exception ex)
{
throw new Control_Errores("", ex, nameof(KRS_ArbolJerarquico_Datos) + "/" + nameof(Grabar), true);
}
finally
{
//Finalizar transaccion
obj_KairosProEntities.Database.Connection.Close();
obj_KairosProEntities.Dispose();
}
return mdl_INTERNO_ValorDevuelto_Modelo;
}
#endregion
#region Borrar
public INTERNO_ValorDevuelto_Modelo Borrar(long _lng_CodigoCliente)
{
KairosProEntities obj_KairosProEntities = null;
INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = true;
//Tipo de Accion que se va a realizar
mdl_INTERNO_ValorDevuelto_Modelo.TipoAccion = G_ENUM_TIPOACCION.INT_ELIMINAR;
try
{
//Primer Intento de Borrado
obj_KairosProEntities = new KairosProEntities();
obj_KairosProEntities.Configuration.LazyLoadingEnabled = false;
#region Delete
string str_SQL_Delete = " DELETE FROM " + nameof(KRS_ArbolJerarquico) +
" WHERE " +
nameof(KRS_ArbolJerarquico.codigoCliente) + "=@codigoCliente ";
//Parametros
object[] arr_Parametros_Delete = new object[]
{
new SqlParameter("@codigoCliente", _lng_CodigoCliente)
};
#endregion
//Delete
obj_KairosProEntities.Database.ExecuteSqlCommand(str_SQL_Delete, arr_Parametros_Delete);
}
catch (Control_Errores)
{
throw;
}
catch (Exception ex)
{
throw new Control_Errores("", ex, nameof(KRS_ArbolJerarquico_Datos) + "/" + nameof(Borrar), true);
}
finally
{
obj_KairosProEntities.Database.Connection.Close();
obj_KairosProEntities.Dispose();
}
return mdl_INTERNO_ValorDevuelto_Modelo;
}
#endregion
}
}