using System; using System.Collections; using Gtk; using Glade; using Controlador.Afiliacion; using Dominio.Afiliados; using Dominio; public class VAgregarAfiliado { Glade.XML xml; [Widget] TreeView lista; public VAgregarAfiliado () { xml = new Glade.XML (null, "agregar_afiliado.glade", "agregar_afiliado", null); xml.Autoconnect (this); TreeStore store = new TreeStore (typeof(string), typeof(int), typeof (string), typeof (string)); lista.Model = store; /* Columnas */ lista.HeadersVisible = true; lista.AppendColumn ("Tipo Doc.", new CellRendererText (), "text", 0); lista.AppendColumn ("Nro Doc.", new CellRendererText (), "text", 1); lista.AppendColumn ("Apellido", new CellRendererText (), "text", 2); lista.AppendColumn ("Nombre", new CellRendererText (), "text", 3); CargarParaAfiliar (); } private void CargarParaAfiliar () { TreeStore store = (TreeStore)lista.Model; ArrayList afiliados; AfiliadoSolicitanteController c = new AfiliadoSolicitanteController (); afiliados = c.ObtenerSolicitantesAfiliar (); foreach (Solicitante s in afiliados) { TreeIter iter = store.AppendValues (s.TipoDocumento.ToString (), s.NroDocumento, s.Nombre, s.Apellido); CargarFamiliaresDe (s, iter, c); } c.Dispose (); } private void CargarFamiliaresDe (Solicitante spadre, TreeIter padre, AfiliadoSolicitanteController c) { TreeStore store = (TreeStore)lista.Model; ArrayList familiares = c.ObtenerFamiliaresAfiliar (spadre); foreach (Solicitante s in familiares) { TreeIter iter = store.AppendValues (padre, s.TipoDocumento.ToString (), s.NroDocumento, s.Nombre, s.Apellido); } } public void OnAfiliar (object o, EventArgs args) { TreeIter iter; TreeModel model; TreeSelection sel = lista.Selection; if (sel.GetSelected(out model, out iter) == true) { ETipoDocumento tipoDoc = (ETipoDocumento)Enum.Parse (typeof (ETipoDocumento), (string)model.GetValue (iter, 0), true); int nroDoc = (int)model.GetValue (iter, 1); AfiliadoSolicitanteController c = new AfiliadoSolicitanteController (); Afiliado a = c.ExisteAfiliado (tipoDoc, nroDoc); if (a == null) { Afiliar (model, iter, c); } else { Console.WriteLine ("Lo borro o lo reactivo!"); } c.Dispose (); } } private void Afiliar (TreeModel model, TreeIter parent, AfiliadoSolicitanteController c) { ETipoDocumento tipoDoc = (ETipoDocumento)Enum.Parse (typeof (ETipoDocumento), (string)model.GetValue (parent, 0), true); int nroDoc = (int)model.GetValue (parent, 1); /* Afilio el titular */ Afiliado AfiTitular = c.AfiliarTitular (tipoDoc, nroDoc, null); Console.WriteLine ("Titular afiliado!! {0} {1}", tipoDoc, nroDoc); /* Obtengo el primer familiar, si es que existe */ TreeIter iter; if (model.IterChildren (out iter, parent) == true) { tipoDoc = (ETipoDocumento)Enum.Parse (typeof (ETipoDocumento), (string)model.GetValue (iter, 0), true); nroDoc = (int)model.GetValue (iter, 1); Console.WriteLine ("Titular familiar!! {0} {1}", tipoDoc, nroDoc); while (model.IterNext (ref iter) == true) { tipoDoc = (ETipoDocumento)Enum.Parse (typeof (ETipoDocumento), (string)model.GetValue (iter, 0), true); nroDoc = (int)model.GetValue (iter, 1); Console.WriteLine ("Titular familiar!! {0} {1}", tipoDoc, nroDoc); c.AfiliarFamiliar (AfiTitular, tipoDoc, nroDoc, null); } } } public void Run () { Dialog w = (Dialog)xml.GetWidget ("agregar_afiliado"); w.Run (); w.Destroy (); } }