//----------------------------------------------------------------------------------------------------------------------- //------------------------------------------------PRESUPUESTO------------------------------------------------------------ //----------------------------------------------------------------------------------------------------------------------- /// <summary> /// PRE:la clase que se pasa como parametro debe de estar incializada /// POST: Dado un Presupuesto, se añade a la BD (Sin comprobar si existe ya). /// Se añade tambien a la tabla presupuestoVehiculo las filas correspondientes /// dando por echo que los vehiculos asociados ya se encuentran en la bd. /// (Se da por echo tambien que el cliente asociado y el vehiculo comprado ya existen en la bd) /// </summary> /// <param name="p"></param> public static void Añadir(Presupuesto p) { String vehiculoComprado = ""; if (p.VehiculoComprado == null) { vehiculoComprado = ""; } else { vehiculoComprado = p.VehiculoComprado.NumBastidor; } /*string cliente = ""; * if (p.ClienteAsociado != null) * { * vehiculoComprado = p.VehiculoComprado.NumBastidor; * }*/ PresupuestosDato presupuesto = new PresupuestosDato(p.Id, p.ClienteAsociado.DNI, p.FechaRealizacion, p.Estado, vehiculoComprado); BD.InsertPresupuesto(presupuesto); if (p.Vehiculos.Count != 0) { foreach (Vehiculo e in p.Vehiculos) { //no comprobamos si los vehiculos estan porque solo se pueden hacer presupuestos de vehiculos que ya están en la bd BD.InsertPresupuesto_Vehiculos(new Presupuesto_VehiculosDato(new Presupuesto_VehiculoClave(p.Id, e.NumBastidor))); } } }
/// <summary> /// PRE:la clase que se pasa como parametro debe de estar incializada /// POST: Dado un Presupuesto (Del que solo se utilizara la clave), obtendremos un Presupuesto con todos sus campos, /// no se contempla el caso en el que el Presupuesto no esta en la BD /// </summary> /// <param name="p"></param> /// <returns></returns> public static Presupuesto Buscar(Presupuesto p) { PresupuestosDato presupuesto = new PresupuestosDato(p.Id, null, p.FechaRealizacion, p.Estado, ""); //Solo nos interesa la clave PresupuestosDato dev = BD.SelectPresupuesto(presupuesto); //Cliente asociado: Cliente c = Persistencia.Buscar(new Cliente(dev.Cliente)); //Vehiculo comprado: Vehiculo vehiculoComprado; if (dev.VehiculoComprado == "") { vehiculoComprado = null; } else { if (Persistencia.Existe(new VehiculoNuevo(dev.VehiculoComprado))) { //Se trata de un vehiculo nuevo: vehiculoComprado = Persistencia.Buscar(new VehiculoNuevo(dev.VehiculoComprado)); } else { //Se trata de un vehiculo de segunda mano: vehiculoComprado = Persistencia.Buscar(new VehiculoSegundaMano(dev.VehiculoComprado)); } } //Lista de vehiculos: List <Vehiculo> l = new List <Vehiculo>(); Presupuesto_VehiculosTabla t = BD.Presupuesto_vehiculos; int tam = t.Count(); for (int i = 0; i < tam; i++) { Presupuesto_VehiculosDato pv = t[i]; //vamos cogiendo elemento a elemento y miramos si coincide el id para si eso agregarlo a la lista if (pv.Clave.Id.Equals(p.Id)) { Vehiculo vehiculoActual; if (Persistencia.Existe(new VehiculoNuevo(pv.Clave.Vehiculo))) { //Se trata de un vehiculo nuevo: vehiculoActual = Persistencia.Buscar(new VehiculoNuevo(pv.Clave.Vehiculo)); } else { //Se trata de un vehiculo de segunda mano: vehiculoActual = Persistencia.Buscar(new VehiculoSegundaMano(pv.Clave.Vehiculo)); } l.Add(vehiculoActual); } } return(new Presupuesto(dev.Id, c, dev.FechaRealizacion, dev.Estado, l, vehiculoComprado)); }
/// <summary> /// PRE:la clase que se pasa como parametro debe de estar incializada /// POST:Dado un Presupuesto (Puede ser que solo contenga la clave), se borrara sin comprobar si existe o no, su aparicion en la bd /// Se borran tambien las filas de presupuestoVehiculo /// </summary> /// <param name="p"></param> public static void Borrar(Presupuesto p) { foreach (Vehiculo v in p.Vehiculos) //borramos las referencias en la tabla intermedia { BD.DeletePresupuesto_Vehiculos(new Presupuesto_VehiculosDato(new Presupuesto_VehiculoClave(p.Id, v.NumBastidor))); } PresupuestosDato presupuesto = new PresupuestosDato(p.Id, p.ClienteAsociado.DNI, p.FechaRealizacion, p.Estado, ""); //Solo nos interesa la clave BD.DeletePresupuesto(presupuesto); }
/// <summary> /// Devuelve la lista de todos los presupuestos del concesionario /// </summary> /// <returns></returns> public static List <Presupuesto> listaPresupuesto() { List <Presupuesto> lista = new List <Presupuesto>(); int tam = BD.Presupuestos.Count; for (int i = 0; i < tam; i++) { List <Vehiculo> vehiculos = new List <Vehiculo>(); PresupuestosDato pd = BD.Presupuestos[i]; Cliente c = new Cliente(pd.Cliente); c = Buscar(c); VehiculoNuevo vnuevo = new VehiculoNuevo(pd.VehiculoComprado); Vehiculo v = null; if (Existe(vnuevo)) { if (ExisteVehiculoNuevo(vnuevo)) { v = Buscar(vnuevo); } else { v = Buscar(new VehiculoSegundaMano(pd.VehiculoComprado)); } } int t = BD.Presupuesto_vehiculos.Count; for (int i2 = 0; i2 < t; i2++) { Presupuesto_VehiculosDato pvd = BD.Presupuesto_vehiculos[i2]; if (pd.Id.Equals(pvd.Clave.Id)) { VehiculoNuevo vn = new VehiculoNuevo(pvd.Clave.Vehiculo); if (ExisteVehiculoNuevo(vn)) { vehiculos.Add(Buscar(vn)); } else { VehiculoSegundaMano vs = new VehiculoSegundaMano(pvd.Clave.Vehiculo); vehiculos.Add(Buscar(vs)); } } } Presupuesto p = new Presupuesto(pd.Id, c, pd.FechaRealizacion, pd.Estado, vehiculos, v); lista.Add(p); } return(lista); }
/// <summary> /// PRE: La clase que se pasa como parametro debe de estar incializada /// POST: Dice si existe el Presupuesto en la bd, si es asi devuelve true y falso en caso contrario /// </summary> /// <param name="p"></param> /// <returns></returns> public static bool ExistsPresupuesto(PresupuestosDato p) { return(BD.Presupuestos.Contains(p.Identificador)); }
/// <summary> /// PRE: La clase que se pasa como parametro debe de estar incializada y debe existir /// POST: Actualiza el Presupuesto con esa clave de la bd, el Presupuesto que se pasa como parametro es el que tiene los datos actualizados /// </summary> /// <param name="p"></param> public static void UpdatePresupuesto(PresupuestosDato p) { BD.DeletePresupuesto(p); BD.InsertPresupuesto(p); }
/// <summary> /// PRE: La clase que se pasa como parametro debe de estar incializada y debe existir /// POST: Devuelve el Presupuesto /// </summary> /// <param name="p"></param> /// <returns></returns> public static PresupuestosDato SelectPresupuesto(PresupuestosDato p) { return(BD.Presupuestos[p.Identificador]); }
/// <summary> /// PRE: La clase que se pasa como parametro debe de estar incializada y debe existir /// POST: Elimina el presupuesto de la bd /// </summary> /// <param name="p"></param> public static void DeletePresupuesto(PresupuestosDato p) { BD.Presupuestos.Remove(p.Identificador); }
/// <summary> /// PRE: La clase que se pasa como parametro debe de estar incializada /// POST: Añade el presupuesto a la bd /// </summary> /// <param name="p"></param> public static void InsertPresupuesto(PresupuestosDato p) { BD.Presupuestos.Add(p); }
/// <summary> /// PRE:la clase que se pasa como parametro debe de estar incializada /// POST:Dado un Presupuesto (Del que solo se utilizara la clave), devuelve true si existe un presupuesto cuya clave coincida con c, false en caso contrario /// </summary> /// <param name="p"></param> /// <returns></returns> public static bool Existe(Presupuesto p) { PresupuestosDato presupuesto = new PresupuestosDato(p.Id, null, p.FechaRealizacion, p.Estado, ""); //Solo nos interesa la clave return(BD.ExistsPresupuesto(presupuesto)); }