public FormacionAttr(Formacion formacion, Repositorio repositorio)
        {
            InitializeComponent();
            pFormacion = formacion;
            validables.Add(new Validator <Formacion>(pFormacion, ReglaConcreta <Formacion> .dePresencia(unaFormacion => unaFormacion.Nombre), errorNombreLbl, bindingSourceFormacion));
            validables.Add(new Validator <Formacion>(pFormacion, ReglaConcreta <Formacion> .dePositivo(unaFormacion => unaFormacion.KilometrosMantenimiento), errorDistanciaLbl, bindingSourceFormacion));
            validables.Add(new Validator <Formacion>(pFormacion, ReglaConcreta <Formacion> .dePositivo(unaFormacion => unaFormacion.DuracionMantenimiento), errorTiempoManteLbl, bindingSourceFormacion));
            validables.Add(new Validator <Formacion>(pFormacion, new ReglaConcreta <Formacion>(unaFormacion => unaFormacion.TiposCoche.Keys.Count > 0, "Debe tener por lo menos un tipo de coche"), errorCochesLbl));

            cochesListados = AgrupacionCoche.From(formacion.TiposCoche);
            var modelos = repositorio.Listar <Coche>();

            modeloCbo.Items.AddRange(modelos.ToArray());

            validablesParaLista.Add(new Validator <AgrupacionCoche>(pCocheEditando, ReglaConcreta <AgrupacionCoche> .dePositivo(unaAgrupacionCoche => unaAgrupacionCoche.Cantidad), errorCantidadLbl));
            validablesParaLista.Add(new Validator <AgrupacionCoche>(pCocheEditando, new ReglaCompuesta <AgrupacionCoche>(new List <Regla <AgrupacionCoche> > {
                new ReglaConcreta <AgrupacionCoche>(unaAgrupacion => unaAgrupacion.Coche != null, "Este campo es requerido"),
                new ReglaConcreta <AgrupacionCoche>(unaAgrupacion => cochesListados.TrueForAll(otraAgrupacion => !unaAgrupacion.Coche.Equals(otraAgrupacion.Coche)), "No se puede usar el mismo tipo\n de coche dos veces")
            }), errorModeloLbl));


            bindingSourceFormacion.DataSource     = pFormacion;
            bindingSourceCocheEditando.DataSource = pCocheEditando;
            this.dibujarListado();

            distanciaManteField.IsNumeric = true;
            tiempoEnManteField.IsNumeric  = true;
            cantidadCocheField.IsNumeric  = true;
        }
Example #2
0
 public RenglonDeAgrupacionCoche(AgrupacionCoche agrupacion, DelAgrupacion handleRemove)
 {
     InitializeComponent();
     this.Agrupacion       = agrupacion;
     this.modeloLbl.Text   = agrupacion.Coche.Modelo;
     this.cantidadLbl.Text = agrupacion.Cantidad.ToString();
     this.handleRemove     = handleRemove;
 }
 public bool applyTo(Formacion formacion)
 {
     this.pFormacion.TiposCoche = AgrupacionCoche.ToDictionary(cochesListados);
     validables.ForEach(validable => validable.mostrarError());
     return(validables.TrueForAll(validable => validable.esValido()));
 }
 private void onCocheRemove(AgrupacionCoche agrupacion)
 {
     this.cochesListados.Remove(agrupacion);
     this.dibujarListado();
 }
 private Control renglonDe(AgrupacionCoche agrupacionCoche)
 {
     return(new RenglonDeAgrupacionCoche(agrupacionCoche, this.onCocheRemove));
 }