/// <summary>
 /// Obtiene un asociado en la ventas por el código nacional.
 /// </summary>
 /// <param name="codNacional"></param>
 /// <returns>Identificador de Asociado</returns>
 public string GetAsociado(long codNacional)
 {
     using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
     {
         var sql = "SELECT a.asociado FROM ventas_cruzadas v " +
                   "INNER JOIN asociados_cruzadas a ON a.idVentaCruzada = v.id " +
                   "WHERE a.asociado = '" + codNacional + "' " +
                   "AND v.eliminado = 0 AND v.activo = 1 LIMIT 0,1";
         var query = db.Database.SqlQuery <string>(sql).ToList();
         return(query.Count != 0 ? query.First() : null);
     }
 }
 /// <summary>
 /// Obtiene los códigos de barras de los sinónimos y formatea la salida de los mismos.
 /// </summary>
 /// <returns>Códigos de barras formateados</returns>
 public string[] GetCodigoBarraSinonimos()
 {
     using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
     {
         var sql   = "SELECT GROUP_CONCAT(DISTINCT SUBSTRING(cod_barras, 1, 3) SEPARATOR ';') AS codBarras FROM sinonimos WHERE NOT cod_barras IS NULL";
         var query = db.Database.SqlQuery <string>(sql).ToList();
         if (query.Count == 1)
         {
             return(query[0].Split(';'));
         }
         return(new string[0]);
     }
 }
 /// <summary>
 /// Obtiene el cdódigo nacional de la primera categorización
 /// </summary>
 /// <returns></returns>
 public long?GetCategorizacion()
 {
     using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
     {
         var sql   = "SELECT cod_nacional FROM categorizacion LIMIT 0,1";
         var query = db.Database.SqlQuery <long>(sql).ToList();
         if (query.Count != 0)
         {
             return(query[0]);
         }
         return(null);
     }
 }
 /// <summary>
 /// Obtiene el código nacional de un medicamento según un filtro aplicado a los códigos de barra
 /// </summary>
 /// <param name="filter"></param>
 /// <returns>código nacioanal</returns>
 public long?GetCodigoNacionalMedicamento(string filter)
 {
     using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
     {
         var sql   = "SELECT cod_nacional FROM medicamentos WHERE SUBSTRING(cod_barras, 1, 12) LIKE '" + filter + "%'";
         var query = db.Database.SqlQuery <long>(sql).ToList();
         if (query.Count != 0)
         {
             return(query[0]);
         }
         return(null);
     }
 }
 /// <summary>
 /// Obtiene el identificador de un trabajador con una determinada tarjeta
 /// </summary>
 /// <param name="tarjeta"></param>
 /// <returns></returns>
 public long?GetTrabajador(string tarjeta)
 {
     using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
     {
         var sql   = "SELECT id FROM trabajador WHERE tarjeta = '" + tarjeta + "'";
         var query = db.Database.SqlQuery <long>(sql).ToList();
         if (query.Count != 0)
         {
             return(query[0]);
         }
         return(null);
     }
 }
 /// <summary>
 /// Obtiene el código nacional de un asociado con ventas de medicamentos, según un código nacional
 /// </summary>
 /// <param name="codNacional"></param>
 /// <returns>Código nacional</returns>
 public string GetAnyAsociadoMedicamento(long codNacional)
 {
     using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
     {
         var sql = "SELECT m.cod_nacional AS asociado " +
                   "FROM ventas_cruzadas v " +
                   "INNER JOIN asociados_cruzadas a ON a.idVentaCruzada = v.id " +
                   "INNER JOIN medicamentos m ON m.familia = SUBSTRING_INDEX(a.asociado,':',-1) OR m.laboratorio = a.asociado " +
                   "WHERE m.cod_nacional = @codNacional AND (v.tipoAsociado = 'Por Familia/Subfamilia' OR v.tipoAsociado = 'Por Laboratorio') " +
                   "AND v.eliminado = 0 AND v.activo = 1 LIMIT 0,1";
         var query = db.Database.SqlQuery <long>(sql, new MySqlParameter("@codNacional", codNacional)).ToArray();
         return(query.Length != 0 ? query[0].ToString() : null);
     }
 }
 /// <summary>
 /// Obtiene el código nacional de un asociado categorizado con ventas, según un código nacioanal
 /// </summary>
 /// <param name="codNacional"></param>
 /// <returns></returns>
 public string GetAsociadoCategorizacion(long codNacional)
 {
     using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
     {
         var sql = "SELECT c.cod_nacional AS asociado " +
                   "FROM ventas_cruzadas v " +
                   "INNER JOIN asociados_cruzadas a ON a.idVentaCruzada = v.id " +
                   "INNER JOIN categorizacion c ON IF(INSTR(a.asociado,':') > 0, c.subfamilia = SUBSTRING_INDEX(a.asociado,':',-1), 1 = 1) AND c.familia = SUBSTRING_INDEX(a.asociado,':',1) " +
                   "WHERE c.cod_nacional = @codNacional AND v.tipoAsociado = 'Por Familia/Subfamilia' " +
                   "AND v.eliminado = 0 AND v.activo = 1 LIMIT 0,1";
         var query = db.Database.SqlQuery <long>(sql, new MySqlParameter("@codNacional", codNacional)).ToArray();
         return(query.Length != 0 ? query[0].ToString() : null);
     }
 }
 /// <summary>
 /// Obtiene un artículo de las ventas según el código nacional
 /// </summary>
 /// <param name="codNacional"></param>
 /// <returns></returns>
 public string GetArticulo(long codNacional)
 {
     using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
     {
         var sql = "SELECT la.cod_articulo AS asociado " +
                   "FROM ventas_cruzadas v " +
                   "INNER JOIN asociados_cruzadas a ON a.idVentaCruzada = v.id " +
                   "INNER JOIN listas_articulos la ON la.cod_lista = a.asociado " +
                   "WHERE la.cod_articulo = '" + codNacional + "' AND v.tipoAsociado = 'Por Listas' " +
                   "AND v.eliminado = 0 AND v.activo = 1 LIMIT 0,1";
         var query = db.Database.SqlQuery <int>(sql).ToList();
         return(query.Count != 0 ? query[0].ToString() : null);
     }
 }
        /// <summary>
        /// Obtiene un asociado en la ventas por el código nacional.
        /// </summary>
        /// <param name="codNacional"></param>
        /// <returns>Identificador de Asociado</returns>
        public string GetAsociado(long codNacional)
        {
            using (var db = new SisFarmaEntities(DatabaseServer, DatabaseCatalog))
            {
                var fechaActual = DateTime.Now.Date.ToString("yyyy-MM-dd");

                var sql = "SELECT a.asociado FROM ventas_cruzadas v " +
                          "INNER JOIN asociados_cruzadas a ON a.idVentaCruzada = v.id " +
                          "WHERE a.asociado = '" + codNacional + "' " +
                          "AND v.eliminado = 0 AND v.mostrarEnPantalla = 1 AND '" + fechaActual + "' BETWEEN DATE(v.fechaInicio) AND DATE(v.fechaFin) AND v.activo = 1 LIMIT 0,1";
                var query = db.Database.SqlQuery <string>(sql).ToList();
                return(query.Count != 0 ? query.First() : null);
            }
        }