// PRE: p != null. // POS: actualiza en la BD el objeto p. public static void Modificar(MD.Presupuesto p) { if (BD.Presupuestos != null) { BD.UPDATEPresupuesto(presupuestoAPresupuestoDato(p)); } }
// PRE: p != null. // POS: devuelve un objeto de tipo MD.Presupuesto si p es encontrado en la BD, null en caso contrario. public static MD.Presupuesto Buscar(MD.Presupuesto p) { if (BD.Presupuestos != null) { PresupuestoDato pd = presupuestoAPresupuestoDato(p); PresupuestoDato res = BD.SELECTPresupuesto(pd); if (res != null) { Dictionary <MD.Vehiculo, double> valoraciones = new Dictionary <MD.Vehiculo, double>(); foreach (KeyValuePair <VehiculoDato, double> kvp in res.Valoraciones) { valoraciones.Add(PersistenciaVehiculo.VehiculoDatoAVehiculo(kvp.Key), kvp.Value); } return(new MD.Presupuesto(res.FechaRealizacion, Persistencia.PersistenciaCliente.CambioACliente(res.Cliente), valoraciones)); } else { return(null); } } else { return(null); } }
// PRE: p != null. // POS: elimina de la BD el objeto p si éste existe en ella. public static void Eliminar(MD.Presupuesto p) { if (BD.Presupuestos != null) { BD.DELETEPresupuesto(presupuestoAPresupuestoDato(p)); } }
// PRE: p != null. // POS: inserta en la BD un objeto de tipo MD.Presupuesto. public static void Añadir(MD.Presupuesto p) { if (BD.Presupuestos != null) { BD.INSERTPresupuesto(presupuestoAPresupuestoDato(p)); } }
// PRE: p != null. // POS: devuelve un objeto de tipo MD.Presupuesto, creado a partir de un objeto de tipo PresupuestoDato. private static MD.Presupuesto presupuestoDatoAPresupuesto(PresupuestoDato pDato) { Dictionary <MD.Vehiculo, double> valoraciones = new Dictionary <MD.Vehiculo, double>(); foreach (KeyValuePair <VehiculoDato, double> kvp in pDato.Valoraciones) { valoraciones.Add(PersistenciaVehiculo.VehiculoDatoAVehiculo(kvp.Key), kvp.Value); } MD.Estado estado = MD.Estado.Pendiente; switch (pDato.Estado) { case EstadoDato.Aceptado: estado = MD.Estado.Aceptado; break; case EstadoDato.Desestimado: estado = MD.Estado.Desestimado; break; } MD.Presupuesto presupuesto = new MD.Presupuesto(pDato.FechaRealizacion, Persistencia.PersistenciaCliente.CambioACliente(pDato.Cliente), valoraciones); presupuesto.Vehiculo = Persistencia.PersistenciaVehiculo.VehiculoDatoAVehiculo(pDato.Vehiculo); presupuesto.Estado = estado; return(presupuesto); }
// PRE: // POS: realiza la compra del vehículo seleccionado de la sección de valoraciones en caso de que el presupuesto // POS: cumpla los requisitos (estar en Estado "Pendiente") y desactiva el botón de compra. private void btnComprar_Click(object sender, EventArgs e) { DialogResult res = new DialogResult(); res = MessageBox.Show("¿Quieres confirmar la compra?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Information); switch (res) { case DialogResult.Yes: MD.Presupuesto presupuesto = (MD.Presupuesto)bindingNavigator.BindingSource.Current; MD.Vehiculo vehiculo = null; foreach (KeyValuePair <MD.Vehiculo, double> kvp in presupuesto.Valoracion) { if ((kvp.Key.Marca + " " + kvp.Key.Modelo + " " + kvp.Key.Año + ", " + kvp.Value + "€").Equals((string)lboxValoraciones.SelectedItem)) { vehiculo = kvp.Key; } } if (LNPresupuesto.Presupuesto.ComprarVehiculo(presupuesto, vehiculo)) { MessageBox.Show("La compra se ha realizado con éxito", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); actualizar(); } else { MessageBox.Show("La compra no se puede llevar a cabo, el presupuesto seleccionado no es válido", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning); } break; case DialogResult.No: MessageBox.Show("La compra se ha cancelado", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information); break; } }
// PRE: // POS: marca el estado de un presupuesto como Desestimado. public static void DesestimarPresupuesto(MD.Presupuesto presupuesto) { if (presupuesto != null) { presupuesto.Estado = MD.Estado.Desestimado; Persistencia.PersistenciaPresupuesto.Modificar(presupuesto); } }
// PRE: // POS: devuelve verdad si presupuesto está en Estado "Pendiente" y se le asigna el vehículo pasado como // POS: parámetro como vehículo comprado, además de actualizar el Estado a "Aceptado", falso en caso contrario. public static bool ComprarVehiculo(MD.Presupuesto presupuesto, MD.Vehiculo vehiculo) { if (presupuesto != null && vehiculo != null) { if (presupuesto.Estado == MD.Estado.Pendiente) { presupuesto.Vehiculo = vehiculo; presupuesto.Estado = MD.Estado.Aceptado; Persistencia.PersistenciaPresupuesto.Modificar(presupuesto); return(true); } } return(false); }
// PRE: // POS: cambia el estado del presupuesto actual a Desestimado (si este está en el estado Pendiente) en el caso // POS: de que se haya detectado un error y se quiera revocar su validez. private void btnRevocar_Click(object sender, EventArgs e) { DialogResult res = MessageBox.Show("¿Quieres confirmar la operación?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (res == DialogResult.Yes) { MD.Presupuesto presupuesto = (MD.Presupuesto)bindingNavigator.BindingSource.Current; if (presupuesto.Estado == MD.Estado.Pendiente) { LNPresupuesto.Presupuesto.DesestimarPresupuesto(presupuesto); MessageBox.Show("El presupuesto ha sido desestimado"); actualizar(); } } }
// PRE: // POS: introduce en la lista de valoraciones, las valoraciones asignadas al presupuesto mostrado. // POS: si el estado del presupuesto es Aceptado, el botón de compra está deshabilitado. private void actualizar() { MD.Presupuesto presupuesto = (MD.Presupuesto)bindingNavigator.BindingSource.Current; if (presupuesto != null) { lboxValoraciones.Items.Clear(); foreach (KeyValuePair <MD.Vehiculo, double> kvp in presupuesto.Valoracion) { lboxValoraciones.Items.Add(kvp.Key.Marca + " " + kvp.Key.Modelo + " " + kvp.Key.Año + ", " + kvp.Value + "€"); } lboxValoraciones.SelectedIndex = 0; txtCliente.Text = presupuesto.Cliente.Nombre + ", " + presupuesto.Cliente.DNI; btnComprar.Visible = (presupuesto.Estado == MD.Estado.Aceptado || presupuesto.Estado == MD.Estado.Desestimado ? false : true); txtVehiculo.Text = (presupuesto.Estado == MD.Estado.Aceptado ? (txtVehiculo.Text = presupuesto.Vehiculo.Marca + " " + presupuesto.Vehiculo.Modelo + " " + presupuesto.Vehiculo.Año) : ""); btnRevocar.Visible = (presupuesto.Estado == MD.Estado.Aceptado || presupuesto.Estado == MD.Estado.Desestimado ? false : true); txtEstado.Text = presupuesto.Estado.ToString(); } }
// PRE: p != null. // POS: devuelve un objeto de tipo PresupuestoDato, creado a partir de un objeto de tipo MD.Presupuesto. private static PresupuestoDato presupuestoAPresupuestoDato(MD.Presupuesto p) { Dictionary <VehiculoDato, double> valoraciones = new Dictionary <VehiculoDato, double>(); foreach (KeyValuePair <MD.Vehiculo, double> kvp in p.Valoracion) { valoraciones.Add(PersistenciaVehiculo.VehiculoAVehiculoDato(kvp.Key), kvp.Value); } EstadoDato estado = EstadoDato.Pendiente; switch (p.Estado) { case MD.Estado.Aceptado: estado = EstadoDato.Aceptado; break; case MD.Estado.Desestimado: estado = EstadoDato.Desestimado; break; } return(new PresupuestoDato(p.FechaRealizacion, Persistencia.PersistenciaCliente.CambioAClienteDato(p.Cliente), Persistencia.PersistenciaVehiculo.VehiculoAVehiculoDato(p.Vehiculo), estado, valoraciones)); }
// PRE: presupuesto != null. // POS: devuelve el objeto de tipo Vehiculo asociado al presupuesto pasado como parámetro. public static MD.Vehiculo GetVehiculo(MD.Presupuesto presupuesto) { return(presupuesto.Vehiculo); }
// PRE: presupuesto != null. // POS: devuelve el objeto de tipo Cliente asociado al presupuesto pasado como parámetro. public static MD.Cliente GetCliente(MD.Presupuesto presupuesto) { return(presupuesto.Cliente); }
// PRE: presupuesto != null. // POS: devuelve la fecha de la creación del presupuesto pasado como parámetro. public static DateTime GetFecha(MD.Presupuesto presupuesto) { return(presupuesto.FechaRealizacion); }
// PRE: presupuesto != null. // POS: estado = "estado" y vehiculo = "vehiculo", obtenidos del objeto de tipo Presupuesto pasado como parámetro. public static void GetVehiculoComprado(MD.Presupuesto presupuesto, out MD.Estado estado, out MD.Vehiculo vehiculo) { estado = presupuesto.Estado; vehiculo = presupuesto.Vehiculo; }
// PRE: presupuseto != null. // POS: devuevlve verdadero si el presupuesto ha sido aceptado, falso en caso contrario. public static bool EsAceptado(MD.Presupuesto presupuesto) { return(presupuesto.Estado.Equals(MD.Estado.Aceptado)); }
// PRE: presupuesto != null. // POS: devuelve el Estado en el que se encuentra un objeto de tipo Presupuesto. public static MD.Estado GetEstado(MD.Presupuesto presupuesto) { return(presupuesto.Estado); }