using System;
using Remuneraciones.BusinessObjects;
using Remuneraciones.DataSetFT;
using Remuneraciones.SingleObjects;

namespace Remuneraciones.EventsController
{
	public abstract class ControllerCRUD
	{
		// Metodos que devuelven objetos de negocio de primer nivel

		#region Trabajador
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSTrabajador GetTrabajadorAll()
		{
			RlsTrabajador trabajador = new RlsTrabajador();
			DSTrabajador ds = trabajador.LoadAll();

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <param name="idTrabajador"></param>
		/// <returns></returns>
		public DSTrabajador GetTrabajador(string idNumero, short mes, string idTrabajador, int Ano)
		{
			DSTrabajador ds = new RlsTrabajador().LoadByID(idNumero, mes, idTrabajador, Ano);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <param name="idTrabajador"></param>
		/// <param name="idCargo"></param>
		/// <param name="idPais"></param>
		/// <param name="idSucursal"></param>
		/// <param name="idAfp"></param>
		/// <param name="idAfpInp"></param>
		/// <param name="idIsapre"></param>
		/// <param name="idHorario"></param>
		/// <param name="idCentro"></param>
		/// <param name="idUnidad"></param>
		/// <param name="idSindicatos"></param>
		/// <param name="nombre"></param>
		/// <param name="paterno"></param>
		/// <param name="materno"></param>
		/// <param name="rut"></param>
		/// <param name="dv"></param>
		/// <param name="direccion"></param>
		/// <param name="mail"></param>
		/// <param name="idComuna"></param>
		/// <param name="estadoCivil"></param>
		/// <param name="nacionalidad"></param>
		/// <param name="horaEntrada"></param>
		/// <param name="horaSalida"></param>
		/// <param name="tiempoColacion"></param>
		/// <param name="telefono"></param>
		/// <param name="afpIndemnizacion"></param>
		/// <param name="aportIndemnizacion"></param>
		/// <param name="tipoSueldo"></param>
		/// <param name="tipoContrato"></param>
		/// <param name="calculoSueldo"></param>
		/// <param name="profesion"></param>
		/// <param name="sexo"></param>
		/// <param name="fecNaci"></param>
		/// <param name="fecIng"></param>
		/// <param name="fecReconoce"></param>
		/// <param name="fechaTermino"></param>
		/// <param name="modoApv"></param>
		/// <param name="montoApv"></param>
		/// <param name="modoAhorro"></param>
		/// <param name="montoAhorro"></param>
		/// <param name="jubilado"></param>
		/// <param name="modoPactado"></param>
		/// <param name="montoPactado"></param>
		/// <param name="modoCotiAdicional"></param>
		/// <param name="montoCotAdicional"></param>
		/// <param name="modoLey18566"></param>
		/// <param name="montoLey18566"></param>
		/// <param name="modoSueldo"></param>
		/// <param name="montoSueldo"></param>
		/// <param name="sueldoBase"></param>
		/// <param name="colacion"></param>
		/// <param name="movilizacion"></param>
		/// <param name="tipoGratificacion"></param>
		/// <param name="montoGratificacion"></param>
		/// <param name="tramoCargas"></param>
		/// <param name="cargas"></param>
		/// <param name="cargasInvalides"></param>
		/// <param name="cargasMaternales"></param>
		/// <param name="cargasRetroactivas"></param>
		/// <param name="montoRetroactivas"></param>
		/// <param name="ley19404"></param>
		/// <param name="seguroCesantia"></param>
		/// <param name="movimientoAfp"></param>
		/// <param name="movimientoIsapre"></param>
		/// <param name="proporcionarIsapre"></param>
		/// <param name="fun"></param>
		/// <param name="impoLicencia"></param>
		/// <param name="error"></param>
		/// <param name="activo"></param>
		/// <param name="idUser"></param>
		/// <param name="foto"></param>
		/// <param name="idCtaContable"></param>
		/// <param name="unidad"></param>
		/// <param name="centro"></param>
		/// <returns></returns>
		public long AddTrabajador(string idNumero, short mes, string idTrabajador, string idCargo, int idPais, string idSucursal, string idAfp, string idAfpInp, string idIsapre, string idHorario, string idCentro, string idUnidad, string idSindicatos, string nombre, string paterno, string materno, int rut, string dv, string direccion, string mail, string idComuna, byte estadoCivil, bool nacionalidad, DateTime horaEntrada, DateTime horaSalida, DateTime tiempoColacion, string telefono, string afpIndemnizacion, bool aportIndemnizacion, byte tipoSueldo, byte tipoContrato, bool calculoSueldo, string profesion, bool sexo, DateTime fecNaci, DateTime fecIng, DateTime fecReconoce, DateTime fechaTermino, short modoApv, double montoApv, short modoAhorro, double montoAhorro, bool jubilado, short modoPactado, double montoPactado, short modoCotiAdicional, double montoCotAdicional, short modoLey18566, double montoLey18566, byte modoSueldo, double montoSueldo, int sueldoBase, int colacion, int movilizacion, short tipoGratificacion, int montoGratificacion, byte tramoCargas, short cargas, short cargasInvalides, bool cargasMaternales, short cargasRetroactivas, int montoRetroactivas, bool ley19404, bool seguroCesantia, short movimientoAfp, short movimientoIsapre, bool proporcionarIsapre, string fun, int impoLicencia, byte error, bool activo, string idUser, object foto, string idCtaContable, string unidad, string centro)
		{
			SglTrabajador sglTrabajador = new SglTrabajador(idNumero, mes, idTrabajador, idCargo, idPais, idSucursal, idAfp, idAfpInp, idIsapre, idHorario, idCentro, idUnidad, idSindicatos, nombre, paterno, materno, rut, dv, direccion, mail, idComuna, estadoCivil, nacionalidad, horaEntrada, horaSalida, tiempoColacion, telefono, afpIndemnizacion, aportIndemnizacion, tipoSueldo, tipoContrato, calculoSueldo, profesion, sexo, fecNaci, fecIng, fecReconoce, fechaTermino, modoApv, montoApv, modoAhorro, montoAhorro, jubilado, modoPactado, montoPactado, modoCotiAdicional, montoCotAdicional, modoLey18566, montoLey18566, modoSueldo, montoSueldo, sueldoBase, colacion, movilizacion, tipoGratificacion, montoGratificacion, tramoCargas, cargas, cargasInvalides, cargasMaternales, cargasRetroactivas, montoRetroactivas, ley19404, seguroCesantia, movimientoAfp, movimientoIsapre, proporcionarIsapre, fun, impoLicencia, error, activo, idUser, foto, idCtaContable, unidad, centro);
			RlsTrabajador rlsTrabajador = new RlsTrabajador();

			return rlsTrabajador.Add(sglTrabajador);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <param name="idTrabajador"></param>
		/// <param name="idCargo"></param>
		/// <param name="idPais"></param>
		/// <param name="idSucursal"></param>
		/// <param name="idAfp"></param>
		/// <param name="idAfpInp"></param>
		/// <param name="idIsapre"></param>
		/// <param name="idHorario"></param>
		/// <param name="idCentro"></param>
		/// <param name="idUnidad"></param>
		/// <param name="idSindicatos"></param>
		/// <param name="nombre"></param>
		/// <param name="paterno"></param>
		/// <param name="materno"></param>
		/// <param name="rut"></param>
		/// <param name="dv"></param>
		/// <param name="direccion"></param>
		/// <param name="mail"></param>
		/// <param name="idComuna"></param>
		/// <param name="estadoCivil"></param>
		/// <param name="nacionalidad"></param>
		/// <param name="horaEntrada"></param>
		/// <param name="horaSalida"></param>
		/// <param name="tiempoColacion"></param>
		/// <param name="telefono"></param>
		/// <param name="afpIndemnizacion"></param>
		/// <param name="aportIndemnizacion"></param>
		/// <param name="tipoSueldo"></param>
		/// <param name="tipoContrato"></param>
		/// <param name="calculoSueldo"></param>
		/// <param name="profesion"></param>
		/// <param name="sexo"></param>
		/// <param name="fecNaci"></param>
		/// <param name="fecIng"></param>
		/// <param name="fecReconoce"></param>
		/// <param name="fechaTermino"></param>
		/// <param name="modoApv"></param>
		/// <param name="montoApv"></param>
		/// <param name="modoAhorro"></param>
		/// <param name="montoAhorro"></param>
		/// <param name="jubilado"></param>
		/// <param name="modoPactado"></param>
		/// <param name="montoPactado"></param>
		/// <param name="modoCotiAdicional"></param>
		/// <param name="montoCotAdicional"></param>
		/// <param name="modoLey18566"></param>
		/// <param name="montoLey18566"></param>
		/// <param name="modoSueldo"></param>
		/// <param name="montoSueldo"></param>
		/// <param name="sueldoBase"></param>
		/// <param name="colacion"></param>
		/// <param name="movilizacion"></param>
		/// <param name="tipoGratificacion"></param>
		/// <param name="montoGratificacion"></param>
		/// <param name="tramoCargas"></param>
		/// <param name="cargas"></param>
		/// <param name="cargasInvalides"></param>
		/// <param name="cargasMaternales"></param>
		/// <param name="cargasRetroactivas"></param>
		/// <param name="montoRetroactivas"></param>
		/// <param name="ley19404"></param>
		/// <param name="seguroCesantia"></param>
		/// <param name="movimientoAfp"></param>
		/// <param name="movimientoIsapre"></param>
		/// <param name="proporcionarIsapre"></param>
		/// <param name="fun"></param>
		/// <param name="impoLicencia"></param>
		/// <param name="error"></param>
		/// <param name="activo"></param>
		/// <param name="idUser"></param>
		/// <param name="foto"></param>
		/// <param name="idCtaContable"></param>
		/// <param name="unidad"></param>
		/// <param name="centro"></param>
		/// <returns></returns>
		public void SaveTrabajador(string idNumero, short mes, string idTrabajador, string idCargo, int idPais, string idSucursal, string idAfp, string idAfpInp, string idIsapre, string idHorario, string idCentro, string idUnidad, string idSindicatos, string nombre, string paterno, string materno, int rut, string dv, string direccion, string mail, string idComuna, byte estadoCivil, bool nacionalidad, DateTime horaEntrada, DateTime horaSalida, DateTime tiempoColacion, string telefono, string afpIndemnizacion, bool aportIndemnizacion, byte tipoSueldo, byte tipoContrato, bool calculoSueldo, string profesion, bool sexo, DateTime fecNaci, DateTime fecIng, DateTime fecReconoce, DateTime fechaTermino, short modoApv, double montoApv, short modoAhorro, double montoAhorro, bool jubilado, short modoPactado, double montoPactado, short modoCotiAdicional, double montoCotAdicional, short modoLey18566, double montoLey18566, byte modoSueldo, double montoSueldo, int sueldoBase, int colacion, int movilizacion, short tipoGratificacion, int montoGratificacion, byte tramoCargas, short cargas, short cargasInvalides, bool cargasMaternales, short cargasRetroactivas, int montoRetroactivas, bool ley19404, bool seguroCesantia, short movimientoAfp, short movimientoIsapre, bool proporcionarIsapre, string fun, int impoLicencia, byte error, bool activo, string idUser, object foto, string idCtaContable, string unidad, string centro)
		{
			SglTrabajador sglTrabajador = new SglTrabajador(idNumero, mes, idTrabajador, idCargo, idPais, idSucursal, idAfp, idAfpInp, idIsapre, idHorario, idCentro, idUnidad, idSindicatos, nombre, paterno, materno, rut, dv, direccion, mail, idComuna, estadoCivil, nacionalidad, horaEntrada, horaSalida, tiempoColacion, telefono, afpIndemnizacion, aportIndemnizacion, tipoSueldo, tipoContrato, calculoSueldo, profesion, sexo, fecNaci, fecIng, fecReconoce, fechaTermino, modoApv, montoApv, modoAhorro, montoAhorro, jubilado, modoPactado, montoPactado, modoCotiAdicional, montoCotAdicional, modoLey18566, montoLey18566, modoSueldo, montoSueldo, sueldoBase, colacion, movilizacion, tipoGratificacion, montoGratificacion, tramoCargas, cargas, cargasInvalides, cargasMaternales, cargasRetroactivas, montoRetroactivas, ley19404, seguroCesantia, movimientoAfp, movimientoIsapre, proporcionarIsapre, fun, impoLicencia, error, activo, idUser, foto, idCtaContable, unidad, centro);
			RlsTrabajador rlsTrabajador = new RlsTrabajador();
			rlsTrabajador.Save(sglTrabajador);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idNumero"></param>
		/// <param name="mes"></param>
		/// <param name="idTrabajador"></param>
		public void DeleteTrabajador(string idNumero, short mes, string idTrabajador)
		{
			RlsTrabajador rlsTrabajador = new RlsTrabajador();
			rlsTrabajador.Delete(idNumero, mes, idTrabajador);
		}
		#endregion
		
		#region Cargos
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSCargos GetCargosAll()
		{
			RlsCargos cargos = new RlsCargos();
			DSCargos ds = cargos.LoadAll();

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idCargo"></param>
		/// <returns></returns>
		public DSCargos GetCargos(string idNumero, string idCargo, int Mes, int Ano)
		{
			DSCargos ds = new RlsCargos().LoadByID(idNumero, idCargo, Mes, Ano);
			return ds;
		}

		#endregion

		#region Costo
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSCosto GetCostoAll()
		{
			RlsCosto costo = new RlsCosto();
			DSCosto ds = costo.LoadAll();

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idIdentity"></param>
		/// <returns></returns>
		public DSCosto GetCosto(int idIdentity)
		{
			DSCosto ds = new RlsCosto().LoadByID(idIdentity);
			return ds;
		}

		
		#endregion

		#region Sucursal
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSSucursal GetSucursalAll(int Ano)
		{
			RlsSucursal sucursal = new RlsSucursal();
			DSSucursal ds = sucursal.LoadAll(Ano);

			return ds;
		}

		#endregion

		#region UniNegocio
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSUniNegocio GetUniNegocioAll()
		{
			RlsUniNegocio uniNegocio = new RlsUniNegocio();
			DSUniNegocio ds = uniNegocio.LoadAll();

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSUniNegocio GetUniNegocio(string idUniNegocio, string idEmpresa)
		{
			DSUniNegocio ds = new RlsUniNegocio().LoadByID(idUniNegocio, idEmpresa);
			return ds;
		}

		
		#endregion

		#region Comuna
		
		/// <summary>
		/// 
		/// </summary>
		/// <param name="idComuna"></param>
		/// <returns></returns>
		public DSComuna GetComuna(string idComuna)
		{
			DSComuna ds = new RlsComuna().LoadByID(idComuna);
			return ds;
		}

		#endregion

		#region Ciudad
		
		/// <summary>
		/// 
		/// </summary>
		/// <param name="idCiudad"></param>
		/// <returns></returns>
		public DSCiudad GetCiudad(string idCiudad)
		{
			DSCiudad ds = new RlsCiudad().LoadByID(idCiudad);
			return ds;
		}

		#endregion

	}
}