예제 #1
0
        private async Task <bool> Crear()
        {
            bool     creado = false;
            Vehiculo v      = new Vehiculo()
            {
                Matricula = textMatricula.Text.ToUpper(),
                Marca     = new Marca()
                {
                    Id = 0
                },
                Modelo          = textModelo.Text,
                Capacidad       = -1,
                Anio            = textAño.Text,
                CostoDia        = -1,
                Caracteristicas = vehiculo.Caracteristicas
            };

            try
            {
                int capacidad = Int16.Parse(textCapacidad.Text);
                v.Capacidad = capacidad;
            }
            catch (Exception ex)
            {
                MessageBox.Show("La capacidad no es correcta.");
            }
            try
            {
                float costoDia = float.Parse(textCosto.Text);
                v.CostoDia = costoDia;
            }
            catch (Exception ex)
            {
                MessageBox.Show("El costo no es correcto");
            }
            try
            {
                Marca marca = new Marca()
                {
                    Id = (int)comboBoxMarca.SelectedValue
                };
                v.Marca = marca;
            }
            catch (Exception ex)
            {
                MessageBox.Show("La marca no es correcta.");
            }



            ValidacionVehiculo validator = new ValidacionVehiculo();
            ValidationResult   results   = validator.Validate(v);

            if (!results.IsValid)
            {
                string mensaje = results.Errors[0].ErrorMessage;
                MessageBox.Show(mensaje);
            }
            else
            {
                string rutaRelativa = "";



                try
                {
                    //Guarda la imagen en la carpeta y retorna la ruta relativa de la imagen
                    //para guardarla en la base de datos
                    //Lanza una excepcion, en tal caso no se guarda el vehiculo


                    if (FotoCambiada)
                    {
                        rutaRelativa = _repositorioFotografia.Guardar(FotoVehiculo.Image);
                        v.PathFoto   = rutaRelativa;
                        creado       = await _repositorioVehiculo.Crear(v);
                    }
                    else
                    {
                        MessageBox.Show("El vehiculo debe tener una fotografia");
                    }
                }
                catch (MatriculaYaExisteException matriculaYaExisteException)
                {
                    Console.WriteLine(matriculaYaExisteException.Message);
                    MessageBox.Show("La matrícula ya es usada por otro vehículo");
                    //si falla el insert se borra la imagen
                    _repositorioFotografia.Borrar(rutaRelativa);
                }
                catch (Exception)
                {
                    //si falla el insert se borra la imagen
                    _repositorioFotografia.Borrar(rutaRelativa);
                    Console.WriteLine("Ocurrió un error");
                }
            }
            return(creado);
        }