using System;
using System.Data.SqlClient;

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

namespace Remuneraciones.BusinessObjects
{
	public class RlsTrabajador: RlsTrabajadorCRUD
	{
		/// <summary>
		/// Constructor
		/// </summary>
		public RlsTrabajador()
		{
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <returns></returns>
		public DSTrabajadorBrowse LoadBrowse(string idNumero, int mes, string idSucursalIni, string idSucursalFin, int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSTrabajadorBrowse ds;

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

				Trabajador da = new Trabajador(connection);
				ds = da.SelectBrowse(idNumero, mes, idSucursalIni, idSucursalFin);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <returns></returns>
		public DSTrabajadorCtaCte LoadCtaCte(string idNumero, int mes, string idTrabajador, int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSTrabajadorCtaCte ds;

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

				Trabajador da = new Trabajador(connection);
				ds = da.SelectCtasCtes(idNumero, mes, idTrabajador);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <returns></returns>
		public DSTrabajadorAPV LoadApv(string idNumero, int mes, string idTrabajador, int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSTrabajadorAPV ds;

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

				Trabajador da = new Trabajador(connection);
				ds = da.SelectApv(idNumero, mes, idTrabajador);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}


		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <returns></returns>
		public DSTrabajadorBrowse LoadBrowse(string idNumero, int mes, string idSucursalIni, string idSucursalFin, int Orden, int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSTrabajadorBrowse ds;

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

				Trabajador da = new Trabajador(connection);
				ds = da.SelectBrowse(idNumero, mes, idSucursalIni, idSucursalFin, Orden);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <param name="Rut"></param>
		/// <returns></returns>
		public string LoadByRut(string idNumero, short mes, int Rut, int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			string ds;

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

				Trabajador da = new Trabajador(connection);
				ds = da.SelectByRut(idNumero, mes, Rut);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <param name="Rut"></param>
		/// <returns></returns>
		public DSTrabajador LoadTrabajadorByRut(string idNumero, short mes, int Rut, int Ano)
		{
			//SqlConnection utilizado para ejecutar el SqlCommand
			SqlConnection connection = null;

			//Almacena retorno del DataAccess
			DSTrabajador ds;

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

				Trabajador da = new Trabajador(connection);
				ds = da.SelectTrabajadorByRut(idNumero, mes, Rut);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			finally
			{
				if (connection != null)
					connection.Dispose();
			}

			return ds;
		}

	}
}