private async void frmMantenciones_Load(object sender, EventArgs e)
        {
            Main.Enabled = false;
            do
            {
                Depto = await ClienteHttp.Peticion.Get <Departamento>(idDepto);
            } while (Depto == null);
            pEdicion.Height = 0;
            funcionarios    = new List <Funcionario>();
            Fun             = await ClienteHttp.Peticion.Get <PersonaUsuario>("localidad/asignado/" + Depto.Id_localidad, SesionManager.Token, urlEspecial : true);

            Thread.Sleep(300);
            cbTipo.DataSource    = Main.Repos.TipoMantenciones;
            cbTipo.DisplayMember = "Nombre";
            cbTipo.ValueMember   = "Id_tipo";
            dtFecha.MinDate      = DateTime.Now;
            CargarDatos();
        }
        public async Task <IActionResult> Post([FromBody] PersonaUsuario creador, [FromHeader(Name = "User-Agent")] String userAgent)
        {
            if (!ConexionOracle.Activa)
            {
                ConexionOracle.Open();
                if (!ConexionOracle.Activa)
                {
                    return(StatusCode(504, ConexionOracle.NoConResponse));
                }
            }
            try
            {
                Usuario usuario = creador.Usuario;
                Persona persona = creador.Persona;
                usuario.Username = usuario.Username.ToLower();
                if (!userAgent.Equals("TurismoRealDesktop"))
                {
                    usuario.Id_rol = 5;
                    usuario.Clave  = Tools.Encriptar(usuario.Clave);
                }
                else
                {
                    usuario.Clave = Tools.Encriptar(Tools.CodigoAleatorio(persona.Rut));
                }
                usuario.Activo    = '1';
                usuario.Frecuente = '0';
                usuario.Rut       = persona.Rut;
                if (userAgent.Equals("TurismoRealDesktop"))
                {
                    usuario.Activo = '0';
                    usuario.Clave  = Tools.Encriptar(Tools.CodigoAleatorio(usuario.Username));
                    var reset = new ClaveReset
                    {
                        Codigo      = Tools.CodigoAleatorio(persona.Rut, 20),
                        Fecha       = DateTime.Now,
                        Vencimiento = DateTime.Now.AddMonths(1),
                        Canjeado    = '0',
                        Username    = usuario.Username
                    };
                    if (await cmd.Insert(reset))
                    {
                        if (await cmd.Insert(persona, false))
                        {
                            if (await cmd.Insert(usuario, false))
                            {
                                var rol = await cmd.Get <Rol>(usuario.Id_rol);

                                String salt = Tools.EncriptarUrlCompatible(usuario.Username + reset.Codigo);
                                var    m    = Mensajes.ActivacionCuenta;
                                m.AgregarDestinatario(persona.Email, persona.Nombres + " " + persona.Apellidos);
                                m.ConfigurarAsunto("rol", rol.Nombre);
                                m.ConfigurarMensaje("rol", rol.Nombre);
                                m.ConfigurarMensaje("usuario", usuario.Username);
                                m.ConfigurarMensaje("codigo", reset.Codigo);
                                m.ConfigurarMensaje("salt", salt);
                                ClienteSmtp.Enviar(m);
                                return(Ok());
                            }
                            await cmd.Delete(usuario);
                        }
                        await cmd.Delete(persona);
                    }
                }
                else if (await cmd.Insert(persona, false))
                {
                    if (await cmd.Insert(usuario, false))
                    {
                        return(Ok(Tools.GenerarToken(usuario, persona)));
                    }
                    await cmd.Delete(persona);
                }
                return(BadRequest());
            }
            catch (Exception e)
            {
                var a = new
                {
                    Error = new
                    {
                        Mensaje = e.Message,
                        Inner   = e.InnerException,
                        Fuente  = e.Source
                    }
                };
                return(StatusCode(400, a));
            }
        }
        private async void PrepararModificar()
        {
            Main.EstadoTrabajo = EstadoTrabajo.Modificando;
            usuarioActual      = null;
            do
            {
                usuarioActual = await ClienteHttp.Peticion.Get <PersonaUsuario>(tablaUsuarios.SelectedRows[0].Cells[0].Value.ToString(), SesionManager.Token);
            } while (usuarioActual == null);
            lbEstado.Visible  = true;
            chkActivo.Visible = true;
            btnAplicar.Text   = "Aplicar";
            chkClave.Checked  = false;
            claveVisible      = false;
            btnOjo.Image      = imgCerrado;
            pClave.Visible    = true;
            chkClave.Visible  = true;
            pClave.Enabled    = false;
            PrepararComboboxes();
            //Se preparan los campos
            var u = usuarioActual.Usuario;
            var p = usuarioActual.Persona;

            txtClave.Text       = "";
            txtUsername.Text    = u.Username;
            txtUsername.Enabled = false;
            chkActivo.Checked   = u.Activo == '1';
            txtFrecuente.Text   = (u.Frecuente == '1') ? "Si" : "No";
            if (u.Id_rol == 5)
            {
                txtFrecuente.Visible = true;
                lbFrecuente.Visible  = true;
            }
            else
            {
                txtFrecuente.Visible = false;
                lbFrecuente.Visible  = false;
            }
            txtRut.Text       = p.Rut;
            txtRut.Enabled    = false;
            txtNombres.Text   = p.Nombres;
            txtApellidos.Text = p.Apellidos;
            try
            {
                dtNacimiento.Value = p.Nacimiento;
            }
            catch (Exception e)
            {
                dtNacimiento.Value = dtNacimiento.MaxDate;
            }
            txtEmail.Text         = p.Email;
            txtTelefono.Text      = p.Telefono.ToString();
            txtDireccion.Text     = p.Direccion;
            cbRol.SelectedItem    = Repositorios.Buscar((List <Rol>)cbRol.DataSource, "Id_rol", u.Id_rol);
            cbRegion.SelectedItem = Repositorios.Buscar((List <ProxyRegion>)cbRegion.DataSource, "Region", p.Region);
            cbRegion_SelectionChangeCommitted(cbRegion);
            cbComuna.SelectedItem = Repositorios.Buscar((List <Comuna>)cbComuna.DataSource, "Nombre", p.Comuna);
            cbGenero.SelectedItem = Repositorios.Buscar((List <Genero>)cbGenero.DataSource, "Id_genero", p.Id_genero);
            cbRegion.Refresh();
            cbComuna.Refresh();
            cbGenero.Refresh();
            cbRol.Refresh();
        }