viernes, 20 de febrero de 2015

Portafolio de proyectos


Aplicación de Mérida Catastro:

El logo tipo de la aplicación es la siguiente:
Esta aplicación esta hecha para aplicaciones Android 2.3 hasta Android 4.4

La finalidades es atender servicios de pre-registro de servicios catastrales, con el principio de agilizar tiempos al usuario y aumentar la eficiencia en atención con la ayuda de las tecnologías.

Los servicios que son atendidos con esta aplicación son las siguientes:
Agenda citas para pre-servicios catastrales
*Expedición de cédula por revalidación
*Expedición de oficio de historial del predio
*Copias certificadas
*Expedición de oficio de historial de valor
*Expedición de constancia de número oficial de predio
*Copia simple
*Expedición de constancias de valor catastral vigente
*Expedición de constancia de no propiedad
*Expedición de oficio de información de bienes inmuebles
*Expedición de constancia de única propiedad
*Seguimiento de solicitudes

Estas son las capturas de algunas pantallas del aplicativo:

Inicio de sesión:
Dialogo de consulta de datos en el loguin:
Suscripción de de usuarios al sistema:

Se envía la fotografía del documento para su revisión:


Una ves que se tiene registrado el usuario, por automático puedes utilizar los servicios que se dispongan en la aplicación. Esto es dependiendo de ciertos servicios que se puedan realizar, como por ejemplo, para activar la cuenta que ya registraste, se verifica la cuenta de correo, validación que llega a tu correo, para esto también tienes que firmar un documento que acredita la información. Esta información es administrada por el catastro.

Para esto realizas una cita disponible en el servidor. Esta cita es verificada primero la disponibilidad y dependiendo de los módulos, las horas de jornada, el tiempo estimado en los servicios, etc.

Puedes descargar notificaciones, como cuando se lleva un estado de un servicio que has solicitado:
El sistema está en fase de liberación, por cuestión de políticas gubernamentales.

Este sistema funciona a la mano con una pagina web.

http://bbmap.merida.gob.mx/catastrowebdes/

Que tiene similitud en su funcionalidad.

Este sistema también cubre otras áreas del catastro:

Existe una necesidad de verificar servicios externos por trabajadores del catastro que trabajan en campo, donde ellos generan información de planos, los cuales tienen que regresar al catastro para continuar con el servicio, bien, pues con el sistema que se encuentra incorporado en esta pagina tambien, ya no tienen que regresar, ya que el sistema les permite enviar el plano y su ubicacón de donde lo envia. Esta utilidad es igual en pagina web y aplicaciones nativas:

http://bbmap.merida.gob.mx/catastrowebDes/ServicioCampo/

Aplicativo de windows phone movile 6.5:

Cuando se tiene el plano en el servidor, se puede descargar en cualquier parte, ya se un dispositovo movil o una aplicaciones de escritorio. La información de ese servicio se puede visualizar de manera cómoda desde la aplicacion web, esta aplicacion web es para los administradores del sistema, se visualiza así:


Pantalla de acceso:


Versión del sistema:


Accediendo al sistema para ver las tareas en campo a cubrir:


El listado de las tareas:


En esta parte sube el archivo DXF, y para ello requiere de las coordenadas de donde se encuentra el dispositivo para enviar el plano y ser visualizado en la página web los detalles del servicio y que se vean en el google map.


Visualización de los servicios atendidos después de subir el archivo del plano


se puede interactuar con estos elementos del mapa para saber mas detalles de ellos:





Aplicativo Agendate:






Aplicativo BuscoDoctor















viernes, 10 de julio de 2009

Hacer un control de usuarios en ASP.NET

Para empezar de debe realizar un Login.... Asi

puede insertar este código



Por favor escriba nombre usuario y contrase¤a para ingresar al sistema

BorderColor="Silver" BorderStyle="Solid" BorderWidth="1px">












Nombre usuario:

runat="server" Width="80%" />
ID="UsernameRequiredValidator" runat="server"
ErrorMessage="*" ControlToValidate="UsernameText" />


ID="UsernameValidator" runat="server"
ControlToValidate="UsernameText"
ErrorMessage="Invalido nombre usuario"
ValidationExpression="[\w ]*" />

Contrase¤a:

Width="80%" TextMode="Password" />
runat="server" ErrorMessage="*"
ControlToValidate="PasswordText" />


runat="server" ControlToValidate="PasswordText"
ErrorMessage="Invalido contrase¤a"
ValidationExpression='[\w !"õ$%&/()=\-?\*]*' />



OnClick="LoginAction_Click" Text="Login" />

EnableViewState="false" Text="" />




Luego de insertar este código construirá objetos que le ayudarán a controlar un login.

Ahora, Si usa una base de datos en sql o mysql u otro gestor de base de datos, debe tomar en cuenta la forma de hacer esa conexion...

Bien ahora puede hacer la consulta de la siguiente forma con la obtencion de los nombres y contraseña que inserte el usuario y validarlo

en los webform se crean clases de los form. Digamos Login.aspx.cs o Login.aspx.vb , ese archivo pondrán en el medo del boton...

private void btnLogin_Click_(object sender, Evend....)
{
LoginCs loginacceso = new LoginCs();
/*esta funcion manda los datos a una clase llamada LoginCS datos del login al metodo DatosAcceso, decalrada como publica */
loginacceso.DatosAcceso(txtNombreUser.Tex.Trim(),txtClaveUser.Tex.Trim());
/* se crea una variable de tipo bool para seber la respuesta si hubo un usuario con ese nombre*/
bool Resp;
Resp=loginacceso.Respuesta_Usuario();
/*comparara el si la respuesta fue verdadera*/
if(Resp!=false)
{
/*ora recibira el valor de tipo permiso que tiene el usuario y almacenar en un clase de asp
llamada Session*/
Session["Permiso"]=loginacceso.Tipo_Usuario();
}
else
{
/*aqui puedes introducir el resultado de que no exista usuario como un label*/
this.Laber1.Tex="No existe usuario";
}
......
Digamos que en cierta página quieres que cierto usuario con cierto permiso pueda verlo

entonces pones esto en el medo...

private void Page_Init(object sender, Event...)
{
if(Session["Permiso] != null)
{
if(Session["Permiso"].Equals(sessionusuario.Session))
{
/*permitira que el usuario pueda ver la pagina*/
}
else
{
/*puedes introducir un switch que valide el permiso que tiene y redireccionar al usuario a cierta página*/
}
}
}
}
......................

Ahora Crea la clase llamada

LoginCs y luego introduce esto....

private string User;
private string Password;
private int Permiso_Usuario;
private bool Resp;
/*controlara la session recivida*/
private static object TipoSession;

public LoginCS()
{
this.User=String.Empty;
this.Password=String.Empty;
this.Permiso_Usuario=0;
this.Resp=false;

TipoSession=Session;
}

public void DatosAcceso(string User,string Password)
{
this.User=User;
this.Password=Password;
}

public void AccesoDatos()
{
/*aqui haces tu conexion de datos*/

cmdConsulta = "select Permiso where User=@User and Password= @Password";
SqlParameter pNombre = new SqlParameter("@User", SqlDbType.VarChar);
SqlParameter pContrasenia = new SqlParameter("@Password", SqlDbType.VarChar);
consulta = new SqlCommand(cmdConsulta, "conexion");
consulta.Parameters.Add(pNombre);
consulta.Parameters.Add(pContrasenia);
consulta.Parameters["@Nombre"].Value = this.User.ToString();
consulta.Parameters["@Contrasenia"].Value = this.Password.ToString();
try
{
consulta.Connection.Open();
this.Permiso_Usuario=Convert.ToInt32( consulta.ExecuteScalar());
if(this.Permiso_Usuario!=o)
{
this.Resp=true;
}
}
/*aqui es sale algo mal de guarda en un string
pero es una obcion lo puedes quitar lo que es el try y catch y finally pero sin quitar lo condigos que se encuentran ahi de try y finaly*/
catch(SqlException ex)
{
this.errorsql = ex.Message.ToString();
}
finally
{
consulta.Connection.Close();
}
}
/*luego la clase de retorno de valores*/

public bool Respuesta_Usuario()
{
return this.Resp;
}
public int Tipo_Usuario()
{
return this.Permiso_Usuario;
}

/*alamcena la session de tipo usuario*/
public object Session
{
get { return TipoSession; }
set { TipoSession = value; }
}
..........................

Y es asi como se haria un buen login con tu propia base de datos y con tus propio roles.

Cualquier duda este es mi correo JMikeCU@gmail.com, respondere con sus dudas con mucho gusto

viernes, 19 de junio de 2009

Autocompletar en un texbox.net Visual Studio 2008 mas sql server express

Para empezar, es necesario contar con el fremwork 3.5.



:)



Ahora crea una clase de tipo WebService.asmx <--- Este ultimo es el nombre del archivo tu puedes ponerle otro

luego introduce este código:


using System;
using System.Collections.Generic;
using System.Web.Services;
using System.Data;
//Para utilizar la base de datos sql
using System.Data.SqlClient;
//Este es necesario ingresar para utilizar en asp.net
[System.Web.Script.Services.ScriptService]
//-----------------------------------------
public class AutoComplete : WebService
{
public AutoComplete()
{
}
//Igual este es necesario
[WebMethod]
//------------------------
public string[] GetCompletionList(string prefixText, int count)
{
if (count == 0)
{
count = 10;
}
if (prefixText.Equals("xyz"))
{
return new string[0];
}
//Hace una lectura de los datos con la primera letra que se ingrese
//Se hace una conexion desde una clase que se determina
Conexion Clase_conector = new Conexion();
//------------------------------------------------
/*Ahora se almacena dentro de una variable de tipo string un comando select*/
string sql = "Select * from TipoUsuario Where Usuarios like @prefixText";
// "@prefixText" esta es la variable del metodo que recibe utilizado para sqlserver
/* se lee los datos que extrae junto con laco nexion*/
SqlDataAdapter da = new SqlDataAdapter(sql,Clase_conector.conectar_base_datos());
/* sobre carga el sqladataadapter junto la variable dellenguaje sql y el tipo junto conla variable que recibe el el metodo*/
da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText+ "%";
/*Se pone en una tabla los datos obtenidos para leerlas*/
DataTable dt = new DataTable();
/*en el adaptaadapter se carga las filas del datatable*/
da.Fill(dt);
/*de forma de un array se saca las columnas letra por letra*/
string[] items = new string[dt.Rows.Count];
int i = 0;
/*condicion que permite ver letra por letra*/
foreach (DataRow dr in dt.Rows)
{
/*envia el valor de la tabla que se lee uno por uno*/
items.SetValue(dr["Usuarios"].ToString(), i);
i++;
}
/*retorna el valor que se esta leyendo*/
return items;
}
}
Comentarios :)