using Exferia_Aplicacion.General; using Exferia_Aplicacion.Modelos_Listado_Filtros; using Exferia_KairosPRO_EF; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Exferia_KairosPRO._2_Datos { public class Compartidas_Datos_KairosPRO { #region BuscarCodigoSiguiente public static string Buscar_CodigoSiguiente(string _str_Tabla_Nombre, string _str_Campo_Nombre, bool _bol_TieneFechaBorrado, int _int_Campo_CaracteresMaximo) { KairosProEntities obj_KairosProEntities = null; string str_CodigoSiguiente = "1"; try { obj_KairosProEntities = new KairosProEntities(); obj_KairosProEntities.Configuration.LazyLoadingEnabled = false; string str_SQL = "SELECT convert(bigint," + _str_Campo_Nombre + ") as Valor FROM " + _str_Tabla_Nombre + " WHERE ISNUMERIC(" + _str_Campo_Nombre + " + '.0e0')= 1 and codigoCliente=" + Variables.G_LNG_IDCLIENTE_LICENCIAVALIDADO + " " ; //Orden str_SQL += " ORDER BY convert(bigint," + _str_Campo_Nombre + ") DESC "; INTERNA_SQLQUERY_LONG mdl_INTERNA_SQLQUERY_LONG = obj_KairosProEntities.Database.SqlQuery(str_SQL).FirstOrDefault(); if (mdl_INTERNA_SQLQUERY_LONG != null && mdl_INTERNA_SQLQUERY_LONG.Valor > 0) { str_CodigoSiguiente = (mdl_INTERNA_SQLQUERY_LONG.Valor + 1).ToString(); } //Si el tamaño del campo es menor que el del valor calculado if (str_CodigoSiguiente.Length > _int_Campo_CaracteresMaximo) { str_CodigoSiguiente = "-1"; } } catch (Exception ex) { throw new Control_Errores(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BUSCARCODIGOSIGUIENTE(), ex, nameof(Compartidas_Datos_KairosPRO) + "/" + nameof(Buscar_CodigoSiguiente), true); } finally { obj_KairosProEntities.Database.Connection.Close(); obj_KairosProEntities.Dispose(); } return str_CodigoSiguiente; } public static string Buscar_CodigoSiguiente(string _str_Tabla_Nombre, string _str_Campo_Nombre, string _str_CampoAuxiliar_Nombre, long _lng_CampoAuxiliar_Valor, bool _bol_TieneFechaBorrado, int _int_Campo_CaracteresMaximo) { KairosProEntities obj_KairosProEntities = null; string str_CodigoSiguiente = "1"; try { obj_KairosProEntities = new KairosProEntities(); obj_KairosProEntities.Configuration.LazyLoadingEnabled = false; string str_SQL = "SELECT convert(bigint," + _str_Campo_Nombre + ") as Valor FROM " + _str_Tabla_Nombre + " WHERE ISNUMERIC(" + _str_Campo_Nombre + " + '.0e0')= 1 and codigoCliente=" + Variables.G_LNG_IDCLIENTE_LICENCIAVALIDADO + " " ; //Campo Auxiliar str_SQL += " AND " + _str_CampoAuxiliar_Nombre + "=" + _lng_CampoAuxiliar_Valor; //Filtrar que la fecha Borrado sea Nula si la Tuviera if (_bol_TieneFechaBorrado) { str_SQL += " AND fechaBorrado is null "; } //Orden str_SQL += " ORDER BY convert(bigint," + _str_Campo_Nombre + ") DESC "; INTERNA_SQLQUERY_LONG mdl_INTERNA_SQLQUERY_LONG = obj_KairosProEntities.Database.SqlQuery(str_SQL).FirstOrDefault(); if (mdl_INTERNA_SQLQUERY_LONG != null && mdl_INTERNA_SQLQUERY_LONG.Valor > 0) { str_CodigoSiguiente = (mdl_INTERNA_SQLQUERY_LONG.Valor + 1).ToString(); } //Si el tamaño del campo es menor que el del valor calculado if (str_CodigoSiguiente.Length > _int_Campo_CaracteresMaximo) { str_CodigoSiguiente = "-1"; } } catch (Exception ex) { throw new Control_Errores(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BUSCARCODIGOSIGUIENTE(), ex, nameof(Compartidas_Datos_KairosPRO) + "/" + nameof(Buscar_CodigoSiguiente), true); } finally { obj_KairosProEntities.Database.Connection.Close(); obj_KairosProEntities.Dispose(); } return str_CodigoSiguiente; } public static string Buscar_CodigoSiguiente_Numerico(string _str_Tabla_Nombre, string _str_Campo_Nombre, bool _bol_TieneFechaBorrado, int _int_Campo_CaracteresMaximo) { KairosProEntities obj_KairosProEntities = null; string str_CodigoSiguiente = "1"; try { obj_KairosProEntities = new KairosProEntities(); obj_KairosProEntities.Configuration.LazyLoadingEnabled = false; string str_SQL = "SELECT " + _str_Campo_Nombre + " as Valor FROM " + _str_Tabla_Nombre; string str_Where = "WHERE codigoCliente=" + Variables.G_LNG_IDCLIENTE_LICENCIAVALIDADO + " "; //Filtrar que la fecha Borrado sea Nula si la Tuviera if (_bol_TieneFechaBorrado) { str_Where += " AND fechaBorrado is null "; } //Orden str_SQL += " ORDER BY " + _str_Campo_Nombre + " DESC "; INTERNA_SQLQUERY_LONG mdl_INTERNA_SQLQUERY_LONG = obj_KairosProEntities.Database.SqlQuery(str_SQL).FirstOrDefault(); if (mdl_INTERNA_SQLQUERY_LONG != null && mdl_INTERNA_SQLQUERY_LONG.Valor > 0) { str_CodigoSiguiente = (mdl_INTERNA_SQLQUERY_LONG.Valor + 1).ToString(); } //Si el tamaño del campo es menor que el del valor calculado if (str_CodigoSiguiente.Length > _int_Campo_CaracteresMaximo) { str_CodigoSiguiente = "-1"; } } catch (Exception ex) { throw new Control_Errores(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BUSCARCODIGOSIGUIENTE(), ex, nameof(Compartidas_Datos_KairosPRO) + "/" + nameof(Buscar_CodigoSiguiente_Numerico), true); } finally { obj_KairosProEntities.Database.Connection.Close(); obj_KairosProEntities.Dispose(); } return str_CodigoSiguiente; } public static string Buscar_CodigoSiguiente_Numerico(string _str_Tabla_Nombre, string _str_Campo_Nombre, string _str_CampoAuxiliar_Nombre, long _lng_CampoAuxiliar_Valor, bool _bol_TieneFechaBorrado, int _int_Campo_CaracteresMaximo) { KairosProEntities obj_KairosProEntities = null; string str_CodigoSiguiente = "1"; try { obj_KairosProEntities = new KairosProEntities(); obj_KairosProEntities.Configuration.LazyLoadingEnabled = false; string str_SQL = "SELECT " + _str_Campo_Nombre + " as Valor FROM " + _str_Tabla_Nombre + " WHERE codigoCliente = " + Variables.G_LNG_IDCLIENTE_LICENCIAVALIDADO + " "; //Campo Auxiliar str_SQL += " AND " + _str_CampoAuxiliar_Nombre + "=" + _lng_CampoAuxiliar_Valor; //Filtrar que la fecha Borrado sea Nula si la Tuviera if (_bol_TieneFechaBorrado) { str_SQL += " AND fechaBorrado is null "; } //Orden str_SQL += " ORDER BY " + _str_Campo_Nombre + " DESC "; INTERNA_SQLQUERY_LONG mdl_INTERNA_SQLQUERY_LONG = obj_KairosProEntities.Database.SqlQuery(str_SQL).FirstOrDefault(); if (mdl_INTERNA_SQLQUERY_LONG != null && mdl_INTERNA_SQLQUERY_LONG.Valor > 0) { str_CodigoSiguiente = (mdl_INTERNA_SQLQUERY_LONG.Valor + 1).ToString(); } //Si el tamaño del campo es menor que el del valor calculado if (str_CodigoSiguiente.Length > _int_Campo_CaracteresMaximo) { str_CodigoSiguiente = "-1"; } } catch (Exception ex) { throw new Control_Errores(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_BUSCARCODIGOSIGUIENTE(), ex, nameof(Compartidas_Datos_KairosPRO) + "/" + nameof(Buscar_CodigoSiguiente_Numerico), true); } finally { obj_KairosProEntities.Database.Connection.Close(); obj_KairosProEntities.Dispose(); } return str_CodigoSiguiente; } #endregion public static List Buscar_Datos_Filtros_Relacionados(string _str_Tabla_Nombre, string _str_Campo_Id, string _str_Campo_Codigo, string _str_Campo_Descripcion, string _str_Campo_FechaBorrado, string _str_Where) { KairosProEntities obj_KairosProEntities = null; List lst_INTERNO_Listado_Simple_Modelo = null; try { obj_KairosProEntities = new KairosProEntities(); obj_KairosProEntities.Configuration.LazyLoadingEnabled = false; //Formar los campos a Devolver ........................................................................ string str_Campos = ""; str_Campos += _str_Campo_Id + " as " + nameof(INTERNO_Listado_Simple_Modelo.ID) + ","; str_Campos += _str_Campo_Codigo + " as " + nameof(INTERNO_Listado_Simple_Modelo.CODIGO) + ","; str_Campos += _str_Campo_Descripcion + " as " + nameof(INTERNO_Listado_Simple_Modelo.DESCRIPCION) + ","; if (_str_Campo_FechaBorrado.Trim().Length > 0) { str_Campos += _str_Campo_FechaBorrado + " as " + nameof(INTERNO_Listado_Simple_Modelo.FECHABORRADO) + ","; } str_Campos = str_Campos.Substring(0, str_Campos.Length - 1); if (_str_Where.Trim().Length > 0) { _str_Where = " WHERE " + _str_Where; } //Formar Consulta SQLServer .................................................... string str_SQL = "SELECT " + str_Campos + " FROM " + _str_Tabla_Nombre + _str_Where; //Ejecutar Conuslta lst_INTERNO_Listado_Simple_Modelo = obj_KairosProEntities.Database.SqlQuery(str_SQL).ToList(); } catch (Exception ex) { throw new Control_Errores("", ex, nameof(Compartidas_Datos_KairosPRO) + "/" + nameof(Buscar_Datos_Filtros_Relacionados), true); } finally { obj_KairosProEntities.Database.Connection.Close(); obj_KairosProEntities.Dispose(); } return lst_INTERNO_Listado_Simple_Modelo; } internal class INTERNA_SQLQUERY_INT { public int Valor { get; set; } } internal class INTERNA_SQLQUERY_LONG { public long Valor { get; set; } } } }