public async Task <IActionResult> Registrar([Bind("nombre,apellido,fechanacimiento,edad,correo,contraseña,rol,tipoVia,numeroVia,numeroViaSecundario,numeroCasa,tipoInmueble,numeroInmueble,ciudad,departamento,pais")] RegistroUsuarioViewModel usuarioCompuesto)
        {
            if (ModelState.IsValid)
            {
                Usuario user = new Usuario();
                user.nombre     = usuarioCompuesto.nombre;
                user.apellido   = usuarioCompuesto.apellido;
                user.correo     = usuarioCompuesto.correo;
                user.contraseña = usuarioCompuesto.contraseña;
                //Hay que calcular la edad
                user.edad            = usuarioCompuesto.edad;
                user.fechanacimiento = usuarioCompuesto.fechanacimiento;
                user.rol             = 1;


                user.tipoVia             = usuarioCompuesto.tipoVia;
                user.numeroVia           = usuarioCompuesto.numeroVia;
                user.numeroViaSecundario = usuarioCompuesto.numeroViaSecundario;
                user.numeroCasa          = usuarioCompuesto.numeroCasa;
                user.tipoInmueble        = usuarioCompuesto.tipoInmueble;
                user.numeroInmueble      = usuarioCompuesto.numeroInmueble;

                CiudadDepPais ciudad = new CiudadDepPais();
                ciudad.ciudad = usuarioCompuesto.ciudad;

                Departamento dep = new Departamento();
                dep.departamento = usuarioCompuesto.departamento;

                Pais pais = new Pais();
                pais.pais = usuarioCompuesto.pais;


                _context.Pais.Add(pais);
                await _context.SaveChangesAsync();

                dep.idPais = pais.idPais;


                _context.Departamentos.Add(dep);
                await _context.SaveChangesAsync();

                ciudad.idDepartamento = dep.idDepartamento;

                _context.CiudadDepPais.Add(ciudad);
                await _context.SaveChangesAsync();

                user.idCiudadDepPais = ciudad.idCiudadDepPais;

                _context.Usuario.Add(user);
                await _context.SaveChangesAsync();


                return(RedirectToAction("InicioDeSesion", "Usuario"));
            }
            return(RedirectToAction("Registro", "Usuario"));
        }
        public async Task <IActionResult> RegistrarProveedor([Bind("nombreProveedor,telefono,tipoVia,numeroVia,numeroViaSecundario,numeroCasa,tipoInmueble,numeroInmueble,ciudad,departamento,pais")] RegistroProveedorViewModel proveedorCompuesto)
        {
            if (proveedorCompuesto.nombreProveedor != null && proveedorCompuesto.telefono != null && proveedorCompuesto.tipoVia != null && proveedorCompuesto.numeroVia != null && proveedorCompuesto.numeroViaSecundario != null && proveedorCompuesto.numeroCasa != null && proveedorCompuesto.tipoInmueble != null && proveedorCompuesto.numeroInmueble != null && proveedorCompuesto.ciudad != null && proveedorCompuesto.departamento != null && proveedorCompuesto.pais != null)
            {
                if (ModelState.IsValid)
                {
                    Proveedor prov = new Proveedor();
                    prov.nombreProveedor     = proveedorCompuesto.nombreProveedor;
                    prov.telefono            = proveedorCompuesto.telefono;
                    prov.tipoVia             = proveedorCompuesto.tipoVia;
                    prov.numeroVia           = proveedorCompuesto.numeroVia;
                    prov.numeroViaSecundario = proveedorCompuesto.numeroViaSecundario;
                    prov.numeroCasa          = proveedorCompuesto.numeroCasa;
                    prov.tipoInmueble        = proveedorCompuesto.tipoInmueble;
                    prov.numeroInmueble      = proveedorCompuesto.numeroInmueble;

                    CiudadDepPais ciudad = new CiudadDepPais();
                    ciudad.ciudad = proveedorCompuesto.ciudad;

                    Departamento dep = new Departamento();
                    dep.departamento = proveedorCompuesto.departamento;

                    Pais pais = new Pais();
                    pais.pais = proveedorCompuesto.pais;

                    ciudad.Departamento = dep;
                    dep.Pais            = pais;
                    prov.CiudadDepPais  = ciudad;

                    _context.Pais.Add(pais);
                    await _context.SaveChangesAsync();

                    dep.idPais = pais.idPais;


                    _context.Departamentos.Add(dep);
                    await _context.SaveChangesAsync();

                    ciudad.idDepartamento = dep.idDepartamento;

                    _context.CiudadDepPais.Add(ciudad);
                    await _context.SaveChangesAsync();

                    prov.idCiudadDepPais = ciudad.idCiudadDepPais;

                    _context.Proveedor.Add(prov);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
            }
            return(View("Create", proveedorCompuesto));
        }