PageRenderTime 41ms CodeModel.GetById 19ms app.highlight 15ms RepoModel.GetById 1ms app.codeStats 0ms

/Docs/07-Implementacion/Source/trunk/EDUAR_Regular/EDUAR_SI/EDUAR_SI_BusinessLogic/BLImportarPersonal.cs

http://blpm.googlecode.com/
C# | 187 lines | 138 code | 17 blank | 32 comment | 2 complexity | 01aa75671d6c8b5b460ea871132dfe02 MD5 | raw file
  1using System;
  2using System.Collections.Generic;
  3using System.Data.SqlClient;
  4using EDUAR_Entities;
  5using EDUAR_SI_DataAccess;
  6using EDUAR_Utility.Enumeraciones;
  7
  8namespace EDUAR_SI_BusinessLogic
  9{
 10	public class BLImportarPersonal : BLProcesoBase
 11	{
 12		#region --[Atributos]--
 13		Configuraciones objConfiguracion;
 14
 15		DAImportarDatos objDAImportarDatos;
 16
 17		DAObtenerDatos objDAObtenerDatos;
 18		#endregion
 19
 20		#region --[Constructores]--
 21		/// <summary>
 22		/// Constructor. LLama al constructor de la clase base BLProcesoBase.
 23		/// </summary>
 24		/// <param name="connectionString">Cadena de conexión a la base de datos.</param>
 25		public BLImportarPersonal(String connectionString)
 26			: base(connectionString)
 27		{
 28
 29		}
 30		#endregion
 31
 32		#region --[Métodos Públicos]--
 33		/// <summary>
 34		/// Ejecuta la importación de Pais, Provincia y Localidad
 35		/// </summary>
 36		public void ImportarPersonal()
 37		{
 38			try
 39			{
 40				objDAImportarDatos = new DAImportarDatos(ConnectionString);
 41
 42				objConfiguracion = objDAImportarDatos.ObtenerConfiguracion(enumConfiguraciones.BaseDeDatosOrigenDEV);
 43				//objConfiguracion = objDAImportarDatos.ObtenerConfiguracion(enumConfiguraciones.BaseDeDatosOrigenDesdeRemoto);
 44
 45				//Método que realmente lleva a cabo las tareas
 46				ImportarDatos();
 47
 48				//Inserta un registro en la tabla ProcesosEjecutado, en este caso, indica que se corrio correctamente el proceso (resultado = 1)
 49				ProcesosEjecutadosCreate(enumProcesosAutomaticos.ImportarPersonal.GetHashCode(), true);
 50			}
 51			catch (Exception ex)
 52			{
 53				//ante cualquier error que se produzca, se graba en la tabla ProcesosEjecutados, 
 54				//un registro con el detalle de en que método se produjo el error (resultado = 0)
 55				OnErrorProcess(enumProcesosAutomaticos.ImportarPersonal.GetHashCode(), ex);
 56				throw ex;
 57			}
 58		}
 59		#endregion
 60
 61		#region --[Métodos Privados]--
 62		/// <summary>
 63		/// Importars the datos.
 64		/// </summary>
 65		private void ImportarDatos()
 66		{
 67			//La transacción va a este nivel para poder hacer el rollback en el cath (si se produce error)
 68			SqlTransaction transaccion = null;
 69			try
 70			{
 71				//Al utillizar el "using" me aseguro que los recursos se liberen cuando termina el bloque
 72				SqlConnection conexion = new SqlConnection() { ConnectionString = ConnectionString };
 73				{
 74					//objeto que voy a utilizar para obtener los datos (BD Transaccional)
 75					objDAObtenerDatos = new DAObtenerDatos(objConfiguracion.valor);
 76
 77					//abre la conexión a la bd
 78					conexion.Open();
 79					//le indica al objeto transaccion que va a iniciar una transacción
 80					transaccion = conexion.BeginTransaction();
 81
 82					//User Story 142
 83					GrabarPersonal(transaccion);
 84
 85					GrabarDocente(transaccion);
 86				}
 87				//si la importación de los objetos fue exitosa, entonces confirmo las modificaciones.
 88				transaccion.Commit();
 89				conexion.Close();
 90			}
 91			catch (Exception ex)
 92			{
 93				//Valido que la transacción no sea nula, sino daría error al intentar el rollback
 94				if (transaccion != null)
 95					transaccion.Rollback();
 96				//mando la excepción para arriba
 97				throw ex;
 98			}
 99		}
100
101		/// <summary>
102		/// Grabars the docente.
103		/// </summary>
104		private void GrabarDocente(SqlTransaction transaccion)
105		{
106			try
107			{
108				List<Docente> listaDocentes = objDAObtenerDatos.obtenerDocenteBDTransaccional(objConfiguracion);
109				Persona persona = null;
110				foreach (Docente docente in listaDocentes)
111				{
112					persona = new Persona()
113					{
114						idPersona = 0,
115						nombre = docente.nombre,
116						apellido = docente.apellido,
117						numeroDocumento = docente.numeroDocumento,
118						idTipoDocumento = docente.idTipoDocumento,
119						activo = docente.activo,
120						fechaNacimiento = docente.fechaNacimiento,
121						domicilio = docente.domicilio,
122						email = docente.email,
123						telefonoCelular = docente.telefonoCelular,
124						telefonoFijo = docente.telefonoFijo,
125						localidad = new Localidades() { nombre = docente.localidad.nombre },
126						sexo = docente.sexo,
127						idTipoPersona = (int)enumTipoPersona.Personal
128					};
129					docente.idPersona = objDAImportarDatos.GrabarPersona(persona, transaccion, docente.cargo.idCargoTransaccional, docente.idDocenteTransaccional);
130
131					Personal personal = new Personal()
132					{
133						fechaAlta = docente.fechaAlta,
134						idPersona = docente.idPersona,
135						IdPersonalTransaccional = (int)docente.idDocenteTransaccional,
136						legajo = docente.legajo,
137						cargo = new CargoPersonal() { idCargo = docente.cargo.idCargo, idCargoTransaccional = docente.cargo.idCargoTransaccional },
138						activo = docente.activo,
139					};
140					objDAImportarDatos.GrabarPersonal(personal, transaccion);
141				}
142			}
143			catch (Exception ex)
144			{
145				throw ex;
146			}
147		}
148
149		/// <summary>
150		/// Grabars the personal.
151		/// </summary>
152		private void GrabarPersonal(SqlTransaction transaccion)
153		{
154			try
155			{
156				//Primero actualiza los cargos
157				objDAImportarDatos.GrabarCargoPersonal(objDAObtenerDatos.obtenerCargosPersonalBDTransaccional(objConfiguracion), transaccion);
158
159				//Busca e inserta o actualiza el personal
160				List<Personal> listaPersonal = objDAObtenerDatos.obtenerPersonalBDTransaccional(objConfiguracion);
161				Persona persona = null;
162				foreach (Personal personal in listaPersonal)
163				{
164					persona = new Persona()
165					{
166						idPersona = 0,
167						nombre = personal.nombre,
168						apellido = personal.apellido,
169						numeroDocumento = personal.numeroDocumento,
170						idTipoDocumento = personal.idTipoDocumento,
171						activo = personal.activo,
172						fechaNacimiento = DateTime.MinValue,
173						localidad = new Localidades(),
174						idTipoPersona = (int)enumTipoPersona.Personal
175					};
176					personal.idPersona = objDAImportarDatos.GrabarPersona(persona, transaccion, personal.cargo.idCargoTransaccional, personal.IdPersonalTransaccional);
177					objDAImportarDatos.GrabarPersonal(personal, transaccion);
178				}
179			}
180			catch (Exception ex)
181			{
182				throw ex;
183			}
184		}
185		#endregion
186	}
187}