예제 #1
0
        public ServicioAttrs(Servicio servicio, Repositorio repositorio)
        {
            InitializeComponent();
            pServicio           = servicio;
            formacionesListadas = AgrupacionFormacion.From(servicio.TiposFormacion);
            var nombreFormaciones = repositorio.Listar <Formacion>();
            var nombreEstaciones  = repositorio.Listar <Estacion>();

            nombreFormacionCbo.Items.AddRange(nombreFormaciones.ToArray());
            origenTramoCbo.Items.AddRange(nombreEstaciones.ToArray());
            destinoTramoCbo.Items.AddRange(nombreEstaciones.ToArray());

            validables.Add(new Validator <Servicio>(pServicio, ReglaConcreta <Servicio> .dePresencia((unServicio => unServicio.Nombre)), this.errorNombreLbl, this.nombreField));
            validables.Add(new Validator <Servicio>(pServicio, ReglaConcreta <Servicio> .noNegativo((unServicio => unServicio.CantidadFormacionesInicio)), this.errorCantidadEnInicio, this.cantidadEnInicioField));
            validables.Add(new Validator <Servicio>(pServicio, new ReglaConcreta <Servicio>((unServicio => unServicio.Tramos.Count > 0), "Al menos debe tener un tramo"), this.errorTramoLbl));
            validables.Add(new Validator <Servicio>(pServicio, new ReglaConcreta <Servicio>((unServicio => unServicio.TiposFormacion.Keys.Count > 0), "Al menos debe tener una formación"), this.errorFormacionesLbl));

            BindingSourceServicio.DataSource          = pServicio;
            bindingSourceFormacionEditando.DataSource = pFormacionEditando;
            bindingSourceTramoEditando.DataSource     = pTramoEditando;
            this.dibujarListadoFormaciones();
            this.dibujarListadoTramos();

            materialSingleLineTextField1.IsNumeric = true;
            materialSingleLineTextField2.IsNumeric = true;
            materialSingleLineTextField3.IsNumeric = true;
            cantidadEnInicioField.IsNumeric        = true;
        }
예제 #2
0
        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;
        }
예제 #3
0
        public EstacionAttrs(Estacion estacion, Repositorio repositorio)
        {
            InitializeComponent();
            pEstacion = estacion;

            validables.Add(new Validator <Estacion>(pEstacion, ReglaConcreta <Estacion> .dePresencia((unaEstacion => unaEstacion.Nombre)), this.errorNombreLbl, this.nombreField));
            validables.Add(new Validator <Estacion>(pEstacion, ReglaCompuesta <Estacion> .minimoMaximoNoNegativos(e => e.PersonasEsperandoMinIda, e => e.PersonasEsperandoMaxIda),
                                                    this.errorSubidaIda, this.esperandoMaxIdaField));
            validables.Add(new Validator <Estacion>(pEstacion, ReglaCompuesta <Estacion> .minimoMaximoNoNegativos(e => e.PersonasEsperandoMinVuelta, e => e.PersonasEsperandoMaxVuelta),
                                                    this.errorSubidaVuelta, this.esperandoMaxVueltaField));
            validables.Add(new Validator <Estacion>(pEstacion, ReglaCompuesta <Estacion> .minimoMaximoNoNegativos(e => e.PersonasDesciendenMinIda, e => e.PersonasDesciendenMaxIda),
                                                    this.errorBajadaIda, this.desciendenMaxIdaField));
            validables.Add(new Validator <Estacion>(pEstacion, ReglaCompuesta <Estacion> .minimoMaximoNoNegativos(e => e.PersonasDesciendenMinVuelta, e => e.PersonasDesciendenMaxVuelta),
                                                    this.errorBajadaVuelta, this.desciendenMaxVueltaField));

            BindingSourceEstacion.DataSource = pEstacion;
            this.pIncidentes = repositorio.Listar <Incidente>();
            BindIncidentes();

            esperandoMinIdaField.IsNumeric     = true;
            esperandoMaxIdaField.IsNumeric     = true;
            esperandoMinVueltaField.IsNumeric  = true;
            esperandoMaxVueltaField.IsNumeric  = true;
            desciendenMinIdaField.IsNumeric    = true;
            desciendenMaxIdaField.IsNumeric    = true;
            desciendenMinVueltaField.IsNumeric = true;
            desciendenMaxVueltaField.IsNumeric = true;
        }
예제 #4
0
        public TrazaAttrs(Traza traza, Repositorio repositiorio)
        {
            InitializeComponent();
            pTraza = traza;

            validables.Add(new Validator <Traza>(pTraza, ReglaConcreta <Traza> .dePresencia((s => s.Nombre)), this.errorNombreLbl, this.nombreField));
            validables.Add(new Validator <Traza>(pTraza, new ReglaConcreta <Traza>((s => s.Servicios.Count > 0), "Debe haber al menos un servicio asignado"), this.errorServiciosLbl));

            BindingSourceTraza.DataSource = pTraza;
            pServicios = repositiorio.Listar <Servicio>();
            BindServicios();
        }
예제 #5
0
        public IncidenteAttrs(Incidente incidente)
        {
            InitializeComponent();
            pIncidente = incidente;

            validables.Add(new Validator <Incidente>(pIncidente, ReglaConcreta <Incidente> .dePresencia((unIncidente => unIncidente.Nombre)), this.errorNombreLbl, this.nombreField));
            validables.Add(new Validator <Incidente>(pIncidente,
                                                     new ReglaConcreta <Incidente>(unIncidente => unIncidente.ProbabilidadDeOcurrencia >= 0 && unIncidente.ProbabilidadDeOcurrencia <= 100, "Debe ser un valor entre 0 y 100"),
                                                     this.errorOcurrenciaLbl, this.probabilidadField));
            validables.Add(new Validator <Incidente>(pIncidente, ReglaConcreta <Incidente> .dePositivo((unIncidente => unIncidente.TiempoDemora)), this.errorDemoraLbl, this.demoraField));

            BindingSourceIncidente.DataSource = pIncidente;

            probabilidadField.IsNumeric = true;
            demoraField.IsNumeric       = true;
        }
예제 #6
0
        public CocheAttrs(Coche coche)
        {
            InitializeComponent();
            pCoche = coche;

            validables.Add(new Validator <Coche>(pCoche, ReglaConcreta <Coche> .dePresencia((unCoche => unCoche.Modelo)), this.errorModeloLbl, this.modeloField));
            validables.Add(new Validator <Coche>(pCoche, ReglaConcreta <Coche> .dePositivo((unCoche => unCoche.MaximoLegalPasajeros)), this.errorLegalLbl, this.capacidadLegalField));
            validables.Add(new Validator <Coche>(pCoche, reglaParaCapacidadMaxima, this.errorMaximaLbl, this.capacidadTotalField));
            validables.Add(new Validator <Coche>(pCoche, reglaParaAsientos, this.errorAsientosLbl, this.asientosField));

            BindingSourceCoche.DataSource = pCoche;

            asientosField.IsNumeric       = true;
            capacidadLegalField.IsNumeric = true;
            capacidadTotalField.IsNumeric = true;
        }
예제 #7
0
        public SimulacionAttrs(Simulacion simulacion, Repositorio repositorio)
        {
            InitializeComponent();
            pSimulacion = simulacion;

            validables.Add(new Validator <Simulacion>(pSimulacion, ReglaConcreta <Simulacion> .dePresencia((s => s.Nombre)), this.errorNombreLbl, this.nombreField));
            validables.Add(new Validator <Simulacion>(pSimulacion, ReglaConcreta <Simulacion> .dePresencia((s => s.TrazaSimulada)), this.errorTrazaLbl, this.ComboBoxTraza));
            validables.Add(new Validator <Simulacion>(pSimulacion, ReglaConcreta <Simulacion> .dePositivo((s => s.Duracion)), this.errorDuracionLbl, this.duracionField));

            BindingSourceSimulacion.DataSource = pSimulacion;
            List <Traza> list = repositorio.Listar <Traza>();

            BindingSourceTraza.DataSource = list;
            ComboBoxTraza.listaDatos      = list.Select(x => x.Nombre).ToList();
            if (pSimulacion.TrazaSimulada == null && list.Count > 0)
            {
                pSimulacion.TrazaSimulada = list[0];
            }
            contadorMinutosText.Text = (simulacion.Duracion * 1440).ToString();
            duracionField.IsNumeric  = true;
        }
예제 #8
0
        private void agregarTramoClick(object sender, EventArgs e)
        {
            List <Validable> validablesTramo = new List <Validable>();

            validablesTramo.Add(new Validator <Tramo>(pTramoEditando, ReglaConcreta <Tramo> .dePresencia((tramo => tramo.EstacionOrigen)), this.errorEstacionSalidaLbl));
            validablesTramo.Add(new Validator <Tramo>(pTramoEditando, ReglaConcreta <Tramo> .dePresencia((tramo => tramo.EstacionDestino)), this.errorEstacionLlegadaLbl));
            validablesTramo.Add(new Validator <Tramo>(pTramoEditando, ReglaConcreta <Tramo> .dePositivo((tramo => tramo.Distancia)), this.errorDistanciaLbl));
            validablesTramo.Add(new Validator <Tramo>(pTramoEditando, ReglaConcreta <Tramo> .dePositivo((tramo => tramo.TiempoViaje)), this.errorTiempoLbl));

            validablesTramo.ForEach(validable => validable.mostrarError());
            if (validablesTramo.TrueForAll(validable => validable.esValido()))
            {
                this.pServicio.Tramos.Add(pTramoEditando);
                this.listadoTramos.agregarRenglon(this.renglonDe(pTramoEditando));
                pTramoEditando = new Tramo();
                bindingSourceTramoEditando.DataSource = pTramoEditando;
                origenTramoCbo.SelectedItem           = null;
                destinoTramoCbo.SelectedItem          = null;

                errorTramoLbl.Visible = false;
            }
        }
예제 #9
0
        private void agregarBtn_Click(object sender, EventArgs e)
        {
            List <Validable> validablesFormacion = new List <Validable>();

            validablesFormacion.Add(new Validator <AgrupacionFormacion>(pFormacionEditando, ReglaConcreta <AgrupacionFormacion> .dePresencia((a => a.Formacion)), this.errorFormacionLbl));
            validablesFormacion.Add(new Validator <AgrupacionFormacion>(pFormacionEditando, ReglaConcreta <AgrupacionFormacion> .dePositivo((a => a.Cantidad)), this.errorCantidadLbl));

            validablesFormacion.ForEach(validable => validable.mostrarError());
            if (validablesFormacion.TrueForAll(validable => validable.esValido()))
            {
                formacionesListadas.Add(pFormacionEditando);
                this.listadoFormaciones.agregarRenglon(this.renglonDe(pFormacionEditando));
                pFormacionEditando = new AgrupacionFormacion();
                bindingSourceFormacionEditando.DataSource = pFormacionEditando;
                nombreFormacionCbo.SelectedItem           = null;

                errorFormacionesLbl.Visible = false;
            }
        }