namespace Controlador { namespace Afiliacion { using Dominio.Afiliados; using Dominio.Planes; using Dominio; using com.db4o; using com.db4o.query; using System; using System.Collections; public class AfiliadoSolicitanteController : Controller { private ArrayList _afiliados; private ArrayList _solicitantes; public AfiliadoSolicitanteController ():base() { } public ArrayList ObtenerSolicitantesAfiliar () { Query query = Db.query(); query.constrain(typeof(Solicitante)); query.descend("_promotor").constrain(null); query.descend("_pendiente").constrain(false); query.descend("_titular").constrain(null); ObjectSet result = query.execute(); ArrayList lst = ObjectSetToArrayList (result); return lst; } public ArrayList ObtenerFamiliaresAfiliar (Solicitante s) { Query query = Db.query(); query.constrain(typeof(Solicitante)); query.descend("_promotor").constrain(null); query.descend("_pendiente").constrain(false); query.descend("_titular").constrain(s); ObjectSet result = query.execute(); ArrayList lst = ObjectSetToArrayList (result); return lst; } public Afiliado ExisteAfiliado (ETipoDocumento tipoDoc, int nroDoc) { Afiliado afil = new Afiliado (tipoDoc, nroDoc); ObjectSet result = Db.get (afil); afil = (Afiliado)result.next (); return afil; } public bool ExisteAfiliado (int codigo) { foreach (Afiliado afil in _afiliados) { if (afil.Codigo == codigo) return true; } return false; } public ArrayList ObtenerFamiliares (ETipoDocumento tipoDoc, int nroDoc) { ArrayList salida = new ArrayList (); /* Afiliado a = GETAFILIADO(tipoDoc, nroDoc * foreach(Solicitante s in _solicitantes) * if (s.Titular == a) * salida.Add (s) **/ return salida; } public Afiliado AfiliarTitular (ETipoDocumento tipoDoc, int nroDoc, Plan plan) { /* Obtengo el Solicitante asi luego lo borro */ Solicitante s = new Solicitante (tipoDoc, nroDoc, null, null); s.Pendiente = false; s.Promotor = null; ArrayList a = GetSolicitantes (s); s = (Solicitante)a[0]; if (s == null) Console.WriteLine ("ERROR"); /* Creo el afiliado */ Afiliado afil = new Afiliado (s, plan, DateTime.Now); /* Agrego el afiliado */ Db.set (afil); /* Saco el solicitante */ Db.delete (s); return afil; } public Afiliado AfiliarFamiliar (Afiliado AfiTi, ETipoDocumento tipoDoc, int nroDoc, Plan plan) { /* Obtengo el Solicitante asi luego lo borro */ Solicitante s = new Solicitante (tipoDoc, nroDoc, null, null); s.Pendiente = false; s.Promotor = null; ArrayList a = GetSolicitantes (s); s = (Solicitante)a[0]; if (s == null) Console.WriteLine ("ERROR"); /* Creo el afiliado */ Afiliado afil = new Afiliado (s, plan, DateTime.Now); afil.Titular = AfiTi; /* Agrego el afiliado */ Db.set (afil); /* Saco el solicitante */ Db.delete (s); return afil; } public ArrayList Buscar (ETipoDocumento tipoDoc, int nroDoc) { ArrayList salida = new ArrayList (); /* Hacer busqueda */ return salida; } public void EstablecerPendiente() {} public void Visitado () {} public void EliminarSolicitante () {} public bool ExisteSolicitante (ETipoDocumento tipoDoc, int nroDoc) { Solicitante c = new Solicitante (tipoDoc, nroDoc, null, null); bool existe = false; try { //do something with Db4o ObjectSet result = Db.get(c); if (result.next() != null) existe = true; } catch (Exception e) { Console.WriteLine (e); } return existe; } public void AgregarSolicitante ( ETipoDocumento tipoDoc, int nroDoc, string nombre, string apellido, string email, DateTime fechaNac, string calle, int numero, int piso, string dpto, string telefono, ESexo sexo, string disponibilidad, int cantidadfamiliares, string observaciones ) { Solicitante s = new Solicitante (tipoDoc, nroDoc, nombre, apellido); s.EMail = email; s.FechaNacimiento = fechaNac; s.Sexo = sexo; s.Disponibilidad = disponibilidad; s.Familiares = cantidadfamiliares; s.Observaciones = observaciones; s.Pendiente = true; s.Promotor = null; /* La direccion */ SDireccion d = new SDireccion (); d.Calle = calle; d.Numero = numero; d.Piso = piso; d.Departamento = dpto; d.CodigoPostal = ""; d.Provincia = EProvincia.RIO_NEGRO; d.Telefono = telefono; s.Direccion = d; SaveSolicitante (s); } public void EliminarAfiliado () {} public void ModificarAfiliado () {} private bool SaveAfiliado (Afiliado a) { /* Salva en la DB */ return true; } public bool SaveSolicitante (Solicitante s) { try { //do something with db4o Db.set (s); } catch (Exception e) { Console.WriteLine (e); } return true; } public Solicitante GetSolicitante (ETipoDocumento tipoDoc, int nroDoc) { Solicitante s = new Solicitante (tipoDoc, nroDoc, null, null); ArrayList lst = GetSolicitantes (s); if (lst.Count == 0) return null; return (Solicitante)lst[0]; } public ArrayList GetSolicitantes (Solicitante s) { ArrayList lst = new ArrayList (); try { ObjectSet result = Db.get(s); if (result == null) return lst; while ((s = (Solicitante)result.next ()) != null) { lst.Add (s); } } catch (Exception e) { Console.WriteLine (e); } return lst; } public void AsociarPromotor (ETipoDocumento tipoDoc, int nroDoc, int promotor) { try { Solicitante s = GetSolicitante (tipoDoc, nroDoc); Promotor p = new Promotor (ETipoDocumento.DNI, 12345678, "123", "123"); s.Promotor = p; s.Pendiente = false; SaveSolicitante (s); } catch (Exception e) { Console.WriteLine (e); } } } } }