using System.Collections;
using Seguridad.BusinessObjects;
using Seguridad.DataSetFT;

namespace Seguridad.EventsController
{
	public class Controller: ControllerCRUD
	{
		public enum Sistemas
		{
			ExpertaGSH = 2
		}

		public enum Meses
		{
			Enero,
			Febrero,
			Marzo,
			Abril,
			Mayo,
			Junio,
			Julio,
			Agosto,
			Septiembre,
			Octubre,
			Noviembre,
			Diciembre
		}

		//Fields
		private static Controller _instance = null;

		/// <summary>
		/// Constructor privado para impedir instancias libremente
		/// </summary>
		private Controller()
		{
		}

		/// <summary>
		/// Única forma de obtener una instancia de la clase
		/// </summary>
		/// <returns>Instancia de la clase controller</returns>
		public static Controller GetInstance()
		{
			if (_instance == null)
				_instance = new Controller();

			return _instance;
		}

		#region	Empresa

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSEmpresas GetEmpresas(int idSistema, int idUsuario, bool Exist)
		{
			RlsEmrpesa wBO = new RlsEmrpesa();
			return wBO.LoadEmpresasAll(idSistema, idUsuario, Exist);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSEmpresas GetEmpresas(int idSistema)
		{
			RlsEmrpesa wBO = new RlsEmrpesa();
			return wBO.LoadEmpresasAll(idSistema);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSEmpresaAno GetEmpresasAno(string idEmpresa, Sistemas idSistema)
		{
			RlsEmrpesa wBO = new RlsEmrpesa();
			return wBO.LoadEmpresasAno(idEmpresa, (int)idSistema);
		}

		#endregion

		#region Usuario

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public void UsuarioEmpresaSave(int idUsuarioWeb, int idSistema, ArrayList ArrayEmpresa)
		{
			RlsUsuarioWeb wBO = new RlsUsuarioWeb();
			wBO.UsuarioEmpresaSave(idUsuarioWeb, idSistema, ArrayEmpresa);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public void UsuarioSucursalSave(int idUsuarioWeb, ArrayList ArraySucursal)
		{
			RlsUsuarioWeb wBO = new RlsUsuarioWeb();
			wBO.UsuarioSucursalSave(idUsuarioWeb, ArraySucursal);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public void UsuarioChangePassword(int idUsuario, string Password, string SaltHash)
		{
			RlsUsuarioWeb wBO = new RlsUsuarioWeb();
			wBO.ChangePassword(idUsuario, Password, SaltHash);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSUsuarioWeb UsuarioFilter(string Rut, string Nombre, string Paterno, string Materno)
		{
			DSUsuarioWeb ds = new RlsUsuarioWeb().Filter(Rut, Nombre, Paterno, Materno);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSUsuarioByEmpresaAndTrabajador LoadUsuarioByEmrpesaAndTrabajador(int RutEmpresa, string Usuario, Sistemas idSistema )
		{
			DSUsuarioByEmpresaAndTrabajador ds = new RlsUsuarioWeb().LoadUsuarioByEmrpesaAndTrabajador(RutEmpresa, Usuario, (int)idSistema);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSUsuarioWeb LoadUsuarioByTrabajador(string Usuario)
		{
			DSUsuarioWeb ds = new RlsUsuarioWeb().LoadUsuarioByTrabajador(Usuario);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSSucursal GetUsuarioSucursal(string idEmpresa, int idUsuario, int idSistema)
		{
			DSSucursal ds = new RlsUsuarioWeb().LoadUsuarioSucursal(idEmpresa, idUsuario, idSistema);
			return ds;
		}

		#endregion

		#region Permisos

		/// <summary>
		/// Retorna Los permisos que tiene el Usuario para el sistema
		/// </summary>
		public DSPermisosByUsuarioAndSistema GetPermisos(int idSistema, int idUsuario)
		{
			DSPermisosByUsuarioAndSistema ds = new RlsPermisos().LoadPermisos(idSistema, idUsuario);
			return ds;
		}
		
		/// <summary>
		/// Retorna Los permisos que tiene el Usuario para el sistema
		/// </summary>
		public DSPermisosByUsuarioAndSistema GetPermisos(int idSistema, int idUsuario, string idSucursal)
		{
			DSPermisosByUsuarioAndSistema ds = new RlsPermisos().LoadPermisos(idSistema, idUsuario, idSucursal);
			return ds;
		}

		/// <summary>
		/// Retorna Los permisos que tiene el Usuario para el sistema
		/// </summary>
		public void SavePermisos(int idUsuarioWeb, int idSistema, ArrayList ArrayEmpresa, ArrayList ArraySucursal, DSPermisos wPermisos )
		{
			RlsUsuarioWeb wBO = new RlsUsuarioWeb();
			wBO.UsuarioPermisosSave(idUsuarioWeb, idSistema, ArrayEmpresa, ArraySucursal, wPermisos);
		}


		#endregion

		#region Sucursal

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSSucursal GetSucursal(string idEmpresa, Sistemas idSistema)
		{
			RlsSucursal wBO = new RlsSucursal();
			return wBO.LoadSucursalAll(idEmpresa, (int)idSistema);
		}

		#endregion
	}
}