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

using Seguridad.DataSetFT;
using Municipalidad.Utils;
using Seguridad.DataModel;

namespace Seguridad.DataAccess
{
	public class Empresa
	{
		//Field para almacenar la conexión
		private SqlConnection _connection = null;

		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="connection"></param>
		public Empresa(SqlConnection connection)
		{
			_connection = connection;
		}

		#region Mazars

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSEmpresas SelectAll(int idSistema, int idUsuario, bool Exist)
		{
			//Almacena retorno del SqlCommand
			DataSet ds;

			try
			{
				//Ejecuta el SqlCommand
				ds = UtilsDB.ExecuteDataset(_connection, CommandType.StoredProcedure, Schema.Empresa.SP_SELECT_ALL, 
					UtilsDB.MP("@idSistema", SqlDbType.Int, 4, idSistema),
					UtilsDB.MP("@idUsuarioWeb", SqlDbType.Int, 4, idUsuario),
					UtilsDB.MP("@Exist", SqlDbType.Bit, 0, Exist));
			}
			catch (Exception ex)
			{
				throw ex;
			}

			return GetDSFT(ds);
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSEmpresas SelectAll(int idSistema)
		{
			//Almacena retorno del SqlCommand
			DataSet ds;

			try
			{
				//Ejecuta el SqlCommand
				ds = UtilsDB.ExecuteDataset(_connection, CommandType.StoredProcedure, Schema.Empresa.SP_SELECT_ALL2, 
					UtilsDB.MP("@idSistema", SqlDbType.Int, 4, idSistema));
			}
			catch (Exception ex)
			{
				throw ex;
			}

			return GetDSFT(ds);
		}

		internal DSEmpresas GetDSFT(DataSet ds)
		{
			DSEmpresas DSFT = new DSEmpresas();
			DataRow rowDS;

			foreach(DataRow dr in ds.Tables[0].Rows)
			{
				rowDS = DSFT.Tables[0].NewRow();

				foreach(DataColumn dc in DSFT.Tables[0].Columns)
				{
					rowDS[dc.ColumnName] =  dr[dc.ColumnName];
				}
				DSFT.Tables[0].Rows.Add(rowDS);
			}

			return DSFT;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		public DSEmpresaAno SelectAno(string idEmpresa, int idSistema)
		{
			//Almacena retorno del SqlCommand
			DataSet ds;

			try
			{
				//Ejecuta el SqlCommand
				ds = UtilsDB.ExecuteDataset(_connection, CommandType.StoredProcedure, Schema.Empresa.SP_SELECT_ANO, 
					UtilsDB.MP("@idSistema", SqlDbType.Int, 4, idSistema),
					UtilsDB.MP("@idCodEmpresa", SqlDbType.Char, 4, idEmpresa),
					UtilsDB.MP("@Ano", SqlDbType.Int, 0, 0));
			}
			catch (Exception ex)
			{
				throw ex;
			}

			return GetDSFTAno(ds);
		}

		internal DSEmpresaAno GetDSFTAno(DataSet ds)
		{
			DSEmpresaAno DSFT = new DSEmpresaAno();
			DataRow rowDS;

			foreach(DataRow dr in ds.Tables[0].Rows)
			{
				rowDS = DSFT.Tables[0].NewRow();

				foreach(DataColumn dc in DSFT.Tables[0].Columns)
				{
					rowDS[dc.ColumnName] =  dr[dc.ColumnName];
				}
				DSFT.Tables[0].Rows.Add(rowDS);
			}

			return DSFT;
		}

		#endregion


	}
}