using System;
using System.Data;
using System.Data.SqlClient;

using Remuneraciones.DataSetFT;
using Remuneraciones.DataAccess;
using Municipalidad.Utils;

namespace Remuneraciones.BusinessObjects
{
	public class RlsListados
	{
		/// <summary>
		/// Constructor
		/// </summary>
		public RlsListados()
		{
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSResumenPrevisional ListadoResumenPrevisional(string idEmpresa,
															int Mes,
															string SucursalIni,
															string SucursalFin,
															string TrabajadorIni,
															string TrabajadorFin,
															string UnidadIni,
															string UnidadFin,
															int SEmp,
															string CentroIni,
															string CentroFin,
															int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSResumenPrevisional ds;

			try
			{
				//Abre la conexion
				//connection = UtilsDB.GetConnection(UtilsConnectionManager.GetConnection(eConnectionString.Remuneraciones));
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoResumenPrevisional(idEmpresa,
												Mes,
												SucursalIni,
												SucursalFin,
												TrabajadorIni,
												TrabajadorFin,
												UnidadIni,
												UnidadFin,
												SEmp,
												CentroIni,
												CentroFin);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DataSet Depositos(string idEmpresa,
			int Mes,
			string idTrabajador, int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DataSet ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.Depositos(idEmpresa,
					Mes,
					idTrabajador);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSLiquidaciones ListadoLiquidaciones(string idEmpresa,
												int Mes,
												string SucursalIni,
												string SucursalFin,
												string TrabajadorIni,
												string TrabajadorFin,
												string UnidadIni,
												string UnidadFin,
												string CentroIni,
												string CentroFin,
												int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSLiquidaciones ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoLiquidaciones(idEmpresa,
					Mes,
					SucursalIni,
					SucursalFin,
					TrabajadorIni,
					TrabajadorFin,
					UnidadIni,
					UnidadFin,
					CentroIni,
					CentroFin,Ano);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSLibroRemuneraciones ListadoLibroRemuneracion(string idEmpresa,
														int Mes,
														string SucursalIni,
														string SucursalFin,
														string TrabajadorIni,
														string TrabajadorFin,
														string UnidadIni,
														string UnidadFin,
														int SEmp,
														string CentroIni,
														string CentroFin,
														int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSLibroRemuneraciones ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoLibroRemuneraciones(idEmpresa,
					Mes,
					SucursalIni,
					SucursalFin,
					TrabajadorIni,
					TrabajadorFin,
					UnidadIni,
					UnidadFin,
					SEmp,
					CentroIni,
					CentroFin,Ano);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSLibroRemuneracionesExcel ListadoLibroRemuneracionExcel(string idEmpresa,
			int Mes,
			string SucursalIni,
			string SucursalFin,
			string TrabajadorIni,
			string TrabajadorFin,
			string UnidadIni,
			string UnidadFin,
			int SEmp,
			string CentroIni,
			string CentroFin,
			int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSLibroRemuneracionesExcel ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoLibroRemuneracionesExcel(idEmpresa,
					Mes,
					SucursalIni,
					SucursalFin,
					TrabajadorIni,
					TrabajadorFin,
					UnidadIni,
					UnidadFin,
					SEmp,
					CentroIni,
					CentroFin,Ano);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSResumenRemuneracion ListadoResumenRemuneracion(string idEmpresa,
															int Mes,
															string SucursalIni,
															string SucursalFin,
															string TrabajadorIni,
															string TrabajadorFin,
															string UnidadIni,
															string UnidadFin,
															int SEmp,
															string CentroIni,
															string CentroFin,
															int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSResumenRemuneracion ds;

			try
			{
				//Abre la conexion
				//connection = UtilsDB.GetConnection(UtilsConnectionManager.GetConnection(eConnectionString.Remuneraciones));
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoResumenRemuneracion(idEmpresa,
												Mes,
												SucursalIni,
												SucursalFin,
												TrabajadorIni,
												TrabajadorFin,
												UnidadIni,
												UnidadFin,
												SEmp,
												CentroIni,
												CentroFin);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoVacacionesPendientes ListadoVacacionesPendientes(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)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSListadoVacacionesPendientes ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(AnoTope));

				Listados da = new Listados(connection);
				ds = da.ListadoVacacionesPendientes(idEmpresa,
					Mes,
					idSucursalIni,
					idSucursalFin,
					TrabajadorIni,
					TrabajadorFin,
					UnidadIni,
					UnidadFin,
					CentroIni,
					CentroFin,
					Tipo,
					Fecha,
					AnoTope);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoProvisionVacaciones ListadoProvisionVacaciones(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)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSListadoProvisionVacaciones ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoProvisionVacaciones(idEmpresa,
					Mes,
					idSucursalIni,
					idSucursalFin,
					TrabajadorIni,
					TrabajadorFin,
					UnidadIni,
					UnidadFin,
					CentroIni,
					CentroFin,
					Tipo,
					Fecha,
					FechaProv,
					Ano);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoImpuestoUnico ListadoImpuestoUnico(string idEmpresa,
														string TrabajadorIni,
														string TrabajadorFin,
														int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSListadoImpuestoUnico ds;

			try
			{
				//Abre la conexion
				//connection = UtilsDB.GetConnection(UtilsConnectionManager.GetConnection(eConnectionString.Remuneraciones));
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoImpuestoUnico(idEmpresa,
										TrabajadorIni,
										TrabajadorFin,
										Ano);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSCertificadosSueldo CertificadoSueldos(string idEmpresa,
													int TrabajadorIni,
													int TrabajadorFin,
													int MesIni,
													int MesFin,
													int Periodo)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSCertificadosSueldo ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Periodo));

				Listados da = new Listados(connection);
				ds = da.CertificadoSueldos(idEmpresa,
					TrabajadorIni,
					TrabajadorFin,
					MesIni,
					MesFin,
					Periodo);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoAnualHaberPorMes ListadoAnualHaberesPorMes(string idEmpresa,
			string TrabajadorIni,
			string TrabajadorFin,
			string HaberIni,
			string HaberFin,
			int MesIni,
			int MesFin,
			int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSListadoAnualHaberPorMes ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoAnualHaberesPorMes(idEmpresa,
					TrabajadorIni,
					TrabajadorFin,
					HaberIni,
					HaberFin,
					MesIni,
					MesFin);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoAnualHaberTrabajador ListadoAnualHaberesPorTrabajador(string idEmpresa,
			string TrabajadorIni,
			string TrabajadorFin,
			string HaberIni,
			string HaberFin,
			int MesIni,
			int MesFin,
			int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSListadoAnualHaberTrabajador ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.ListadoAnualHaberesPorTrabajador(idEmpresa,
					TrabajadorIni,
					TrabajadorFin,
					HaberIni,
					HaberFin,
					MesIni,
					MesFin);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoVacacionesWebDetalle VacacionesWebDetalle(string idEmpresa,
			string idTrabajador,
			int Mes,
			int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSListadoVacacionesWebDetalle ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.VacacionesWebDetalle(idEmpresa,
					idTrabajador,
					Mes);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSListadoVacacionesWebResumen VacacionesWebResumen(string idEmpresa,
			string idTrabajador,
			int Mes,
			int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSListadoVacacionesWebResumen ds;

			try
			{
				//Abre la conexion
				connection = UtilsDB.GetConnection(Utils.GetAnoConnection(Ano));

				Listados da = new Listados(connection);
				ds = da.VacacionesWebResumen(idEmpresa,
					idTrabajador,
					Mes);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

	}
}