using System;
using System.Data;
using Remuneraciones.BusinessObjects;
using Remuneraciones.DataSetFT;

namespace Remuneraciones.EventsController
{
	public class Controller: ControllerCRUD
	{
		//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 Sucursal
		
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSSucursal GetSucursalBrowse(string idEmpresa, int Mes, int Ano)
		{
			DSSucursal ds = new RlsSucursal().LoadBrowse(idEmpresa, Mes, Ano);
			return ds;
		}

		#endregion

		#region UniNegocio

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSUniNegocio GetUniNegocioBrowse(string idEmpresa, int Ano)
		{
			DSUniNegocio ds = new RlsUniNegocio().LoadBrowse(idEmpresa, Ano);
			return ds;
		}
		
		#endregion

		#region Costo

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSCosto GetCostoBrowse(string idEmpresa, int Ano)
		{
			DSCosto ds = new RlsCosto().LoadBrowse(idEmpresa, Ano);
			return ds;
		}

		
		#endregion

		#region Sindicato

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSSindicatos GetSindicato(string idSindicato, string idEmpresa, int Mes, int Ano)
		{
			DSSindicatos ds = new RlsSindicato().LoadByID(idSindicato, idEmpresa, Mes, Ano);
			return ds;
		}
		
		#endregion

		#region Horarios

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSHorarios GetHorarios(string idSindicato, string idEmpresa, int Mes, int Ano)
		{
			DSHorarios ds = new RlsHorario().LoadByID(idSindicato, idEmpresa, Mes, Ano);
			return ds;
		}
		
		#endregion

		#region Cargos

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idEmpresa"></param>
		/// <returns></returns>
		public DSCargos GetCargosBrowse(string idEmpresa, int Mes, int Ano)
		{
			DSCargos ds = new RlsCargos().LoadBrowse(idEmpresa, Mes, Ano);
			return ds;
		}

		#endregion

		#region Empresa

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idEmpresa"></param>
		/// <returns></returns>
		public DSEmpresa GetEmpresa(string idEmpresa, int Mes, int Ano)
		{
			DSEmpresa ds = new RlsEmpresa().LoadBrowse(idEmpresa, Mes, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idEmpresa"></param>
		/// <returns></returns>
		public int LastMonthActive(string idEmpresa, int Ano)
		{
			int ds = new RlsEmpresa().LastMonthActive(idEmpresa, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idEmpresa"></param>
		/// <returns></returns>
		public DSEmpresaGeneral GetEmpresaGeneral(string idEmpresa, int idSistema)
		{
			DSEmpresaGeneral ds = new RlsEmpresa().LoadGeneral(idEmpresa, idSistema);
			return ds;
		}

		#endregion

		#region Afp

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSAfp GetAfp(string idAfp, int Mes, int Ano)
		{
			DSAfp ds = new RlsAfp().Load(idAfp, Mes, Ano);
			return ds;
		}

		#endregion

		#region Pais

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSPais GetPais(int idPais, int Ano)
		{
			DSPais ds = new RlsPais().Load(idPais, Ano);
			return ds;
		}

		#endregion

		#region Apv

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSApv GetApv(string idApv, int Mes, int Ano)
		{
			DSApv ds = new RlsApv().Load(idApv, Mes, Ano);
			return ds;
		}

		#endregion

		#region HaberAnual

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSHaber GetHaberAnual(string idEmpresa, int Ano)
		{
			DSHaber ds = new RlsHaberAnual().LoadAll(idEmpresa, Ano);
			return ds;
		}

		#endregion

		#region Isapre

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSIsapre GetIsapre(string idIsapre, int Mes, int Ano)
		{
			DSIsapre ds = new RlsIsapre().Load(idIsapre, Mes, Ano);
			return ds;
		}

		#endregion

		#region Trabajador

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <returns></returns>
		public DSTrabajadorBrowse GetTrabajadorBrowse(string idNumero, int Mes, string idSucursalIni, string idSucursalFin, int Ano)
		{
			DSTrabajadorBrowse ds = new RlsTrabajador().LoadBrowse(idNumero, Mes, idSucursalIni, idSucursalFin, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <returns></returns>
		public DSTrabajadorCtaCte GetTrabajadorCtasCtes(string idNumero, int Mes, string idTrabajador, int Ano)
		{
			DSTrabajadorCtaCte ds = new RlsTrabajador().LoadCtaCte(idNumero, Mes, idTrabajador, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <returns></returns>
		public DSTrabajadorAPV GetTrabajadorApv(string idNumero, int Mes, string idTrabajador, int Ano)
		{
			DSTrabajadorAPV ds = new RlsTrabajador().LoadApv(idNumero, Mes, idTrabajador, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <returns></returns>
		public DSTrabajadorBrowse GetTrabajadorBrowse(string idNumero, int Mes, string idSucursalIni, string idSucursalFin, int Orden, int Ano)
		{
			DSTrabajadorBrowse ds = new RlsTrabajador().LoadBrowse(idNumero, Mes, idSucursalIni, idSucursalFin, Orden, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <returns></returns>
		public string GetTrabajadorByRut(string idNumero, short Mes, int Rut, int Ano)
		{
			string ds = new RlsTrabajador().LoadByRut(idNumero, Mes, Rut, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <returns></returns>
		public DSTrabajador GetTrabajadorByRutDS(string idNumero, short Mes, int Rut, int Ano)
		{
			DSTrabajador ds = new RlsTrabajador().LoadTrabajadorByRut(idNumero, Mes, Rut, Ano);
			return ds;
		}
		#endregion

		#region Listados

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSResumenPrevisional GetListadoResumenPrevisional(string idEmpresa,
															int Mes,
															string SucursalIni,
															string SucursalFin,
															string TrabajadorIni,
															string TrabajadorFin,
															string UnidadIni,
															string UnidadFin,
															int SEmp,
															string CentroIni,
															string CentroFin,
															int Ano)
		{
			DSResumenPrevisional ds = new RlsListados().ListadoResumenPrevisional(idEmpresa,
																				Mes,
																				SucursalIni,
																				SucursalFin,
																				TrabajadorIni,
																				TrabajadorFin,
																				UnidadIni,
																				UnidadFin,
																				SEmp,
																				CentroIni,
																				CentroFin,
																				Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DataSet GetDepositos(string idEmpresa,
			int Mes,
			string idTrabajador, int Ano)
		{
			DataSet ds = new RlsListados().Depositos(idEmpresa,
				Mes,
				idTrabajador, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSLiquidaciones GetListadoLiquidaciones(string idEmpresa,
													int Mes,
													string SucursalIni,
													string SucursalFin,
													string TrabajadorIni,
													string TrabajadorFin,
													string UnidadIni,
													string UnidadFin,
													string CentroIni,
													string CentroFin,
													int Ano)
		{
			DSLiquidaciones ds = new RlsListados().ListadoLiquidaciones(idEmpresa,
				Mes,
				SucursalIni,
				SucursalFin,
				TrabajadorIni,
				TrabajadorFin,
				UnidadIni,
				UnidadFin,
				CentroIni,
				CentroFin,
				Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSLibroRemuneraciones GetListadoLibroRemuneracion(string idEmpresa,
															int Mes,
															string SucursalIni,
															string SucursalFin,
															string TrabajadorIni,
															string TrabajadorFin,
															string UnidadIni,
															string UnidadFin,
															int SEmp,
															string CentroIni,
															string CentroFin,
															int Ano)
		{
			DSLibroRemuneraciones ds = new RlsListados().ListadoLibroRemuneracion(idEmpresa,
															Mes,
															SucursalIni,
															SucursalFin,
															TrabajadorIni,
															TrabajadorFin,
															UnidadIni,
															UnidadFin,
															SEmp,
															CentroIni,
															CentroFin,
															Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSLibroRemuneracionesExcel GetListadoLibroRemuneracionExcel(string idEmpresa,
			int Mes,
			string SucursalIni,
			string SucursalFin,
			string TrabajadorIni,
			string TrabajadorFin,
			string UnidadIni,
			string UnidadFin,
			int SEmp,
			string CentroIni,
			string CentroFin,
			int Ano)
		{
			DSLibroRemuneracionesExcel ds = new RlsListados().ListadoLibroRemuneracionExcel(idEmpresa,
				Mes,
				SucursalIni,
				SucursalFin,
				TrabajadorIni,
				TrabajadorFin,
				UnidadIni,
				UnidadFin,
				SEmp,
				CentroIni,
				CentroFin,
				Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSResumenRemuneracion GetListadoResumenRemuneracion(string idEmpresa,
																int Mes,
																string SucursalIni,
																string SucursalFin,
																string TrabajadorIni,
																string TrabajadorFin,
																string UnidadIni,
																string UnidadFin,
																int SEmp,
																string CentroIni,
																string CentroFin,
																int Ano)
		{
			DSResumenRemuneracion ds = new RlsListados().ListadoResumenRemuneracion(idEmpresa,
																				Mes,
																				SucursalIni,
																				SucursalFin,
																				TrabajadorIni,
																				TrabajadorFin,
																				UnidadIni,
																				UnidadFin,
																				SEmp,
																				CentroIni,
																				CentroFin,
																				Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoVacacionesPendientes GetListadoVacacionesPendientes(string idEmpresa,
																	int Mes,
																	string idSucursalIni,
																	string idSucursalFin,
																	string TrabajadorIni,
																	string TrabajadorFin,
																	string UnidadIni,
																	string UnidadFin,
																	string CentroIni,
																	string CentroFin,
																	int Tipo,
																	DateTime Fecha,
																	int AnoTope)
		{
			DSListadoVacacionesPendientes ds = new RlsListados().ListadoVacacionesPendientes(idEmpresa,
				Mes,
				idSucursalIni,
				idSucursalFin,
				TrabajadorIni,
				TrabajadorFin,
				UnidadIni,
				UnidadFin,
				CentroIni,
				CentroFin,
				Tipo,
				Fecha,
				AnoTope);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoProvisionVacaciones GetListadoProvisionVacaciones(string idEmpresa,
																		int Mes,
																		string idSucursalIni,
																		string idSucursalFin,
																		string TrabajadorIni,
																		string TrabajadorFin,
																		string UnidadIni,
																		string UnidadFin,
																		string CentroIni,
																		string CentroFin,
																		int Tipo,
																		DateTime Fecha,
																		DateTime FechaProv,
																		int Ano)
		{
			DSListadoProvisionVacaciones ds = new RlsListados().ListadoProvisionVacaciones(idEmpresa,
																						Mes,
																						idSucursalIni,
																						idSucursalFin,
																						TrabajadorIni,
																						TrabajadorFin,
																						UnidadIni,
																						UnidadFin,
																						CentroIni,
																						CentroFin,
																						Tipo,
																						Fecha,
																						FechaProv,
																						Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoImpuestoUnico GetListadoImpuestoUnico(string idEmpresa,
														string TrabajadorIni,
														string TrabajadorFin,
														int Ano)
		{
			DSListadoImpuestoUnico ds = new RlsListados().ListadoImpuestoUnico(idEmpresa,
																		TrabajadorIni,
																		TrabajadorFin,
																		Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSCertificadosSueldo GetCertificadoSueldo(string idEmpresa,
												int TrabajadorIni,
												int TrabajadorFin,
												int MesIni,
												int MesFin,
												int Periodo)
		{
			DSCertificadosSueldo ds = new DSCertificadosSueldo();
			
			
			ds = new RlsListados().CertificadoSueldos(idEmpresa,
					TrabajadorIni,
					TrabajadorFin,
					MesIni,
					MesFin,
					Periodo);
			
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoAnualHaberPorMes GetListadoAnualHaberPorMes(string idEmpresa,
													string TrabajadorIni,
													string TrabajadorFin,
													string HaberIni,
													string HaberFin,
													int MesIni,
													int MesFin,
													int Ano)
		{
			DSListadoAnualHaberPorMes ds = new RlsListados().ListadoAnualHaberesPorMes(idEmpresa,
																		TrabajadorIni,
																		TrabajadorFin,
																		HaberIni,
																		HaberFin,
																		MesIni,
																		MesFin,
																		Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoAnualHaberTrabajador GetListadoAnualHaberPorTrabajador(string idEmpresa,
																		string TrabajadorIni,
																		string TrabajadorFin,
																		string HaberIni,
																		string HaberFin,
																		int MesIni,
																		int MesFin,
																		int Ano)
		{
			DSListadoAnualHaberTrabajador ds = new RlsListados().ListadoAnualHaberesPorTrabajador(idEmpresa,
				TrabajadorIni,
				TrabajadorFin,
				HaberIni,
				HaberFin,
				MesIni,
				MesFin,
				Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoVacacionesWebDetalle GetVacacionesWebDetalle(string idEmpresa,
			string idTrabajador,
			int Mes,
			int Ano)
		{
			DSListadoVacacionesWebDetalle ds = new RlsListados().VacacionesWebDetalle(idEmpresa,
				idTrabajador,
				Mes,
				Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoVacacionesWebResumen GetVacacionesWebResumen(string idEmpresa,
			string idTrabajador,
			int Mes,
			int Ano)
		{
			DSListadoVacacionesWebResumen ds = new RlsListados().VacacionesWebResumen(idEmpresa,
				idTrabajador,
				Mes,
				Ano);
			return ds;
		}

		#endregion
	}
}