GetMantesModulosCommand.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Data;
4 using System.Linq;
5 using System.Text;
6 using sage.ew.db;
7 using sage.ew.interficies;
8 
9 namespace Sage.ES.S50.Addons
10 {
11  internal class GetMantesModulosCommand : Command
12  {
13  string lcWhere = string.Empty;
14  public GetMantesModulosCommand(IAddonsManager addons) : base(addons)
15  {
16  Name = "GetMantesModulosCommand";
17  }
18 
19  protected override bool Condition(params object[] parameters)
20  {
21  Func<string> Where_Mantes = parameters[1] as Func<string>;
22  lcWhere = Where_Mantes();
23  return base.Condition(parameters);
24  }
25  protected override void CommandModulo(IModulo modulo, params object[] parameters)
26  {
27  string lcConexion = modulo._NombreConexion;
28  string lcNombre = modulo._Nombre;
29  DataTable tdtResultados = parameters[0] as DataTable;
30  Func<string, string> RevisarDescripcion = parameters[2] as Func<string, string>;
31 
32  if (DB._SQLExisteTablaBBDD(lcConexion, "MANTES"))
33  {
34  //si la tabla existe en el módulo, obtenemos los registros de listados
35  string lcSql = "select id, pantalla, nombre, grafica, graf_fil, graf_com, '" + lcNombre + "' as bd_origen "
36  + " from " + DB.SQLDatabase(lcNombre, "mantes")
37  + " where " + lcWhere
38  + " order by nombre";
39 
40  DataTable ldtTemp = new DataTable();
41  DB.SQLExec(lcSql, ref ldtTemp);
42  if (ldtTemp != null && ldtTemp.Rows.Count > 0)
43  {
44  foreach (DataRow ldrMante in ldtTemp.Rows)
45  {
46  //añadimos al nombre del listado, entre parentesis el nombre del módulo al que pertenece
47  ldrMante["nombre"] = RevisarDescripcion(ldrMante["nombre"].ToString());
48  ldrMante["nombre"] = ldrMante["nombre"].ToString().Trim() + " (" + lcNombre + ")";
49 
50  DataRow[] foundMante = tdtResultados.Select("pantalla = '" + ldrMante["pantalla"].ToString().Trim() + "'");
51  if (foundMante.Length != 0)
52  {
53  //eliminar la fila del datatable tdtResultados puesto que a mismo nombre de pantalla tendrá preferencia la del módulo
54  foundMante[0].Delete();
55  tdtResultados.AcceptChanges();
56  }
57  }
58  tdtResultados.Merge(ldtTemp); //añadimos los registros al DataTable de resultados
59  }
60 
61  }
62  }
63  protected override object Return(params object[] parameters)
64  {
65  ((DataTable)parameters[0]).DefaultView.Sort = "nombre asc";
66  ((DataTable)parameters[0]).DefaultView.ToTable();
67  return base.Return(parameters);
68  }
69  protected override ExpectedParameters GetExpectedParameters()
70  {
71  return new ExpectedParameters(new Type[] { typeof(DataTable), typeof(Func<string>), typeof(Func<string, string>) });
72  }
73  }
74 }
PE-93426 Interficie para los módulos de la aplicación
Definition: IModulo.cs:22
string _NombreConexion
Nombre real de la base de datos
Definition: IModulo.cs:59
string _Nombre
Nombre interno del módulo y nombre del directorio de instación
Definition: IModulo.cs:49