/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

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