using System;
using System.Security.Principal;
using System.Collections;

namespace Municipalidad.Utils
{
	/// <summary>
	/// Summary description for CustomPrincipal.
	/// </summary>
	public class CustomPrincipal : IPrincipal
	{
		private IIdentity _identity;
		private string[] _roles;
		private int _idUsuario;
		private string _Usuario;
		private string _idTrabajador;
		private int _idSistema;
		private string _linkHomeSistema;
		private string _idEmpresa;
		private string _idSucursal;
		private int _ano;
		private int _mes;
		private int _tipoUsuario;

		//Constructor
		public CustomPrincipal(IIdentity identity, string [] roles)
		{
			_identity = identity;
			_roles = new string[roles.Length];
			roles.CopyTo(_roles, 0);
			Array.Sort(_roles);
		}

		// Crea el Método IsInRole
		public bool IsInRole(string role)
		{
			return Array.BinarySearch( _roles, role ) >=0 ? true : false;
		}

		// Crea el Método que devuelve los objetos de un formulario especifico
		public ArrayList FindObjetos(string formulario)
		{
			int i;
			string tempFrm;
			ArrayList PermisosModulo = new ArrayList();
			
			for(i=0;i<=_roles.Length-1;i++)
			{
				if(_roles[i]!=null)
				{
					tempFrm = _roles[i].Substring(0,(formulario.Length>_roles[i].Length?_roles[i].Length:formulario.Length));
					if ( tempFrm == formulario)
							PermisosModulo.Add(_roles[i]);
				}
			}
			return PermisosModulo;
		}

		//Crea la propiedad de identidad
		public IIdentity Identity
		{
			get
			{
				return _identity;
			}
		}

		//Crea la propiedad para mantener el ID del Usuario
		public int idUsuario
		{
			get
			{
				return _idUsuario;
			}
			set
			{
				_idUsuario = value;
			}
		}

		public string Usuario
		{
			get
			{
				return _Usuario;
			}
			set
			{
				_Usuario = value;
			}
		}

		//Crea la propiedad para mantener el ID del Trabajador
		public string idTrabajador
		{
			get
			{
				return _idTrabajador;
			}
			set
			{
				_idTrabajador = value;
			}
		}

		//Crea la propiedad para mantener el ID del Sistema
		public int idSistema
		{
			get
			{
				return _idSistema;
			}
			set
			{
				_idSistema = value;
			}
		}

		//Crea la propiedad para mantener la dirección URL del Home del sistema
		public string linkHomeSistema
		{
			get
			{
				return _linkHomeSistema;
			}
			set
			{
				_linkHomeSistema = value;
			}
		}

		//Crea la propiedad para mantener la dirección URL del Home del sistema
		public int TipoUsuario
		{
			get
			{
				return _tipoUsuario;
			}
			set
			{
				_tipoUsuario = value;
			}
		}

		//Crea la propiedad para mantener el ID de la empresa
		public string idEmpresa
		{
			get
			{
				return _idEmpresa;
			}
			set
			{
				_idEmpresa = value;
			}
		}

		//Crea la propiedad para mantener el Mes de Trabajo
		public int Mes
		{
			get
			{
				return _mes;
			}
			set
			{
				_mes = value;
			}
		}

		//Crea la propiedad para mantener el Año de Trabajo
		public int Ano
		{
			get
			{
				return _ano;
			}
			set
			{
				_ano = value;
			}
		}

		//Crea la propiedad para mantener la Sucursal
		public string idSucursal
		{
			get
			{
				return _idSucursal;
			}
			set
			{
				_idSucursal = value;
			}
		}
	}
}
