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); }