using System;
using System.Collections;
using Municipalidad.Utils;
using Seguridad.BusinessObjects;
using Seguridad.DataSetFT;
using Seguridad.SingleObjects;

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

		#region Auditoria
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public Municipalidad.Utils.DSAuditoria GetAuditoriaAll()
		{
			RlsAuditoria auditoria = new RlsAuditoria();
			Municipalidad.Utils.DSAuditoria ds = auditoria.LoadAll();

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idAuditoria"></param>
		/// <returns></returns>
		public Municipalidad.Utils.DSAuditoria GetAuditoria(int idAuditoria)
		{
			Municipalidad.Utils.DSAuditoria ds = new RlsAuditoria().LoadByID(idAuditoria);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idSistema"></param>
		/// <param name="idUsuario"></param>
		/// <param name="fecha"></param>
		/// <param name="idRegistro"></param>
		/// <param name="descripcion"></param>
		/// <param name="accion"></param>
		/// <param name="codigoRegistro"></param>
		/// <returns></returns>
		public int AddAuditoria(int idSistema, int idUsuario, DateTime fecha, int idRegistro, string descripcion, string accion, string codigoRegistro)
		{
			SglAuditoria sglAuditoria = new SglAuditoria(idSistema, idUsuario, fecha, idRegistro, descripcion, accion, codigoRegistro);
			RlsAuditoria rlsAuditoria = new RlsAuditoria();

			return rlsAuditoria.Add(sglAuditoria);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idAuditoria"></param>
		/// <param name="idSistema"></param>
		/// <param name="idUsuario"></param>
		/// <param name="fecha"></param>
		/// <param name="idRegistro"></param>
		/// <param name="descripcion"></param>
		/// <param name="accion"></param>
		/// <param name="codigoRegistro"></param>
		/// <returns></returns>
		public void SaveAuditoria(int idAuditoria, int idSistema, int idUsuario, DateTime fecha, int idRegistro, string descripcion, string accion, string codigoRegistro)
		{
			SglAuditoria sglAuditoria = new SglAuditoria(idAuditoria, idSistema, idUsuario, fecha, idRegistro, descripcion, accion, codigoRegistro);
			RlsAuditoria rlsAuditoria = new RlsAuditoria();
			rlsAuditoria.Save(sglAuditoria);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idAuditoria"></param>
		public void DeleteAuditoria(int idAuditoria)
		{
			RlsAuditoria rlsAuditoria = new RlsAuditoria();
			rlsAuditoria.Delete(idAuditoria);
		}
		#endregion

		#region UsuarioWeb
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSUsuarioWeb GetUsuarioWebAll()
		{
			RlsUsuarioWeb usuarioWeb = new RlsUsuarioWeb();
			DSUsuarioWeb ds = usuarioWeb.LoadAll();

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idUsuarioWeb"></param>
		/// <returns></returns>
		public DSUsuarioWeb GetUsuarioWeb(int idUsuarioWeb)
		{
			DSUsuarioWeb ds = new RlsUsuarioWeb().LoadByID(idUsuarioWeb);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="rut"></param>
		/// <param name="dV"></param>
		/// <param name="nombre"></param>
		/// <param name="paterno"></param>
		/// <param name="materno"></param>
		/// <param name="mail"></param>
		/// <param name="tipoUsuario"></param>
		/// <param name="habilitada"></param>
		/// <param name="cambiarPasswordInicio"></param>
		/// <returns></returns>
		public int AddUsuarioWeb(string rut, 
								string dV, 
								string nombre, 
								string paterno, 
								string materno, 
								string mail, 
								int tipoUsuario, 
								bool habilitada, 
								bool cambiarPasswordInicio,
								string contrasena,
								string saltHash,
								int idSistema,
								ArrayList wLista)
		{
			SglUsuarioWeb sglUsuarioWeb = new SglUsuarioWeb(rut, dV, nombre, paterno, materno, mail, tipoUsuario, habilitada, cambiarPasswordInicio, contrasena, saltHash);
			RlsUsuarioWeb rlsUsuarioWeb = new RlsUsuarioWeb();

			sglUsuarioWeb.idUsuarioWeb = int.MinValue;
			return rlsUsuarioWeb.Add(sglUsuarioWeb, idSistema, wLista);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idUsuarioWeb"></param>
		/// <param name="rut"></param>
		/// <param name="dV"></param>
		/// <param name="nombre"></param>
		/// <param name="paterno"></param>
		/// <param name="materno"></param>
		/// <param name="mail"></param>
		/// <param name="tipoUsuario"></param>
		/// <param name="habilitada"></param>
		/// <param name="cambiarPasswordInicio"></param>
		/// <returns></returns>
		public void SaveUsuarioWeb(int idUsuarioWeb, 
									string rut, 
									string dV, 
									string nombre, 
									string paterno, 
									string materno, 
									string mail, 
									int tipoUsuario, 
									bool habilitada, 
									bool cambiarPasswordInicio, 
									ArrayList wList)
		{
			SglUsuarioWeb sglUsuarioWeb = new SglUsuarioWeb(idUsuarioWeb, rut, dV, nombre, paterno, materno, mail, tipoUsuario, habilitada, cambiarPasswordInicio);
			RlsUsuarioWeb rlsUsuarioWeb = new RlsUsuarioWeb();
			rlsUsuarioWeb.Save(sglUsuarioWeb, (int)Controller.Sistemas.ExpertaGSH, wList);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idUsuarioWeb"></param>
		public void DeleteUsuarioWeb(int idUsuarioWeb)
		{
			RlsUsuarioWeb rlsUsuarioWeb = new RlsUsuarioWeb();
			rlsUsuarioWeb.Delete(idUsuarioWeb);
		}
		#endregion

		#region ModuloWeb
		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSModuloWeb GetModuloWebAll()
		{
			RlsModuloWeb moduloWeb = new RlsModuloWeb();
			DSModuloWeb ds = moduloWeb.LoadAll();

			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idModuloWeb"></param>
		/// <returns></returns>
		public DSModuloWeb GetModuloWeb(int idModuloWeb)
		{
			DSModuloWeb ds = new RlsModuloWeb().LoadByID(idModuloWeb);
			return ds;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idSistema"></param>
		/// <param name="link"></param>
		/// <param name="nombreDisplay"></param>
		/// <param name="nivel"></param>
		/// <param name="idNivelAnterior"></param>
		/// <param name="enableInAdmin"></param>
		/// <param name="enableInUser"></param>
		/// <returns></returns>
		public int AddModuloWeb(int idSistema, string link, string nombreDisplay, int nivel, int idNivelAnterior, bool enableInAdmin, bool enableInUser)
		{
			SglModuloWeb sglModuloWeb = new SglModuloWeb(idSistema, link, nombreDisplay, nivel, idNivelAnterior, enableInAdmin, enableInUser);
			RlsModuloWeb rlsModuloWeb = new RlsModuloWeb();

			return rlsModuloWeb.Add(sglModuloWeb);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idModuloWeb"></param>
		/// <param name="idSistema"></param>
		/// <param name="link"></param>
		/// <param name="nombreDisplay"></param>
		/// <param name="nivel"></param>
		/// <param name="idNivelAnterior"></param>
		/// <param name="enableInAdmin"></param>
		/// <param name="enableInUser"></param>
		/// <returns></returns>
		public void SaveModuloWeb(int idModuloWeb, int idSistema, string link, string nombreDisplay, int nivel, int idNivelAnterior, bool enableInAdmin, bool enableInUser)
		{
			SglModuloWeb sglModuloWeb = new SglModuloWeb(idModuloWeb, idSistema, link, nombreDisplay, nivel, idNivelAnterior, enableInAdmin, enableInUser);
			RlsModuloWeb rlsModuloWeb = new RlsModuloWeb();
			rlsModuloWeb.Save(sglModuloWeb);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="idModuloWeb"></param>
		public void DeleteModuloWeb(int idModuloWeb)
		{
			RlsModuloWeb rlsModuloWeb = new RlsModuloWeb();
			rlsModuloWeb.Delete(idModuloWeb);
		}
		#endregion

	}
}