/Docs/07-Implementacion/Source/trunk/EDUAR_actual/EDUAR/EDUAR_DataAccess/Common/DAPersona.cs

http://blpm.googlecode.com/ · C# · 440 lines · 366 code · 44 blank · 30 comment · 58 complexity · 15957e2614e9cc3d391042daede1f52b MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using EDUAR_DataAccess.Shared;
  6. using EDUAR_Entities;
  7. using EDUAR_Utility.Constantes;
  8. using EDUAR_Utility.Enumeraciones;
  9. using EDUAR_Utility.Excepciones;
  10. namespace EDUAR_DataAccess.Common
  11. {
  12. public class DAPersona : DataAccesBase<Persona>
  13. {
  14. #region --[Atributos]--
  15. private const string ClassName = "DAPersona";
  16. #endregion
  17. #region --[Constructor]--
  18. public DAPersona()
  19. {
  20. }
  21. public DAPersona(DATransaction objDATransaction)
  22. : base(objDATransaction)
  23. {
  24. }
  25. #endregion
  26. #region --[Métodos Publicos]--
  27. public List<Persona> GetPersonas(Persona entidad)
  28. { return GetPersonas(entidad, false); }
  29. /// <summary>
  30. /// Gets the personas.
  31. /// </summary>
  32. /// <param name="entidad">The entidad.</param>
  33. /// <returns></returns>
  34. public List<Persona> GetPersonas(Persona entidad, bool bNoRegistrado)
  35. {
  36. try
  37. {
  38. Transaction.DBcomand = Transaction.DataBase.GetStoredProcCommand("Personas_Select");
  39. if (entidad.idPersona > 0)
  40. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idPersona", DbType.Int32, entidad.idPersona);
  41. if (!string.IsNullOrEmpty(entidad.nombre))
  42. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@nombre", DbType.String, entidad.nombre);
  43. if (!string.IsNullOrEmpty(entidad.apellido))
  44. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@apellido", DbType.String, entidad.apellido);
  45. if (entidad.numeroDocumento > 0)
  46. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@numeroDocumento", DbType.Int32, entidad.numeroDocumento);
  47. if (entidad.idTipoDocumento > 0)
  48. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idTipoDocumento", DbType.Int32, entidad.idTipoDocumento);
  49. if (!string.IsNullOrEmpty(entidad.domicilio))
  50. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@domicilio", DbType.String, entidad.domicilio);
  51. if (!string.IsNullOrEmpty(entidad.barrio))
  52. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@barrio", DbType.String, entidad.barrio);
  53. if (!string.IsNullOrEmpty(entidad.sexo))
  54. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@sexo", DbType.String, entidad.sexo);
  55. if (ValidarFechaSQL(entidad.fechaNacimiento))
  56. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@fechaNacimiento", DbType.Date, entidad.fechaNacimiento);
  57. if (!string.IsNullOrEmpty(entidad.telefonoFijo))
  58. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoFijo", DbType.String, entidad.telefonoFijo);
  59. if (!string.IsNullOrEmpty(entidad.telefonoCelular))
  60. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoCelular", DbType.String, entidad.telefonoCelular);
  61. if (!string.IsNullOrEmpty(entidad.telefonoCelularAlternativo))
  62. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoCelularAlternativo", DbType.String, entidad.telefonoCelularAlternativo);
  63. if (!string.IsNullOrEmpty(entidad.email))
  64. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@email", DbType.String, entidad.email);
  65. if (entidad.activo != null)
  66. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@activo", DbType.String, entidad.activo);
  67. if (!string.IsNullOrEmpty(entidad.username))
  68. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@username", DbType.String, entidad.username);
  69. else
  70. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@username", DbType.String, DBNull.Value);
  71. if (entidad.idTipoPersona > 0)
  72. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idTipoPersona", DbType.Int32, entidad.idTipoPersona);
  73. //Lo utilizo para buscar los usuarios que no tiene asociado un username
  74. if(bNoRegistrado)
  75. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@bNoRegistrado", DbType.Boolean, bNoRegistrado);
  76. IDataReader reader = Transaction.DataBase.ExecuteReader(Transaction.DBcomand);
  77. List<Persona> listaPersonas = new List<Persona>();
  78. Persona objPersona;
  79. while (reader.Read())
  80. {
  81. objPersona = new Persona();
  82. objPersona.idPersona = Convert.ToInt32(reader["idPersona"]);
  83. objPersona.nombre = reader["nombre"].ToString();
  84. objPersona.apellido = reader["apellido"].ToString();
  85. objPersona.numeroDocumento = Convert.ToInt32(reader["numeroDocumento"]);
  86. objPersona.idTipoDocumento = Convert.ToInt32(reader["idTipoDocumento"]);
  87. objPersona.domicilio = reader["domicilio"].ToString();
  88. objPersona.barrio = reader["barrio"].ToString();
  89. if (!string.IsNullOrEmpty(reader["idLocalidad"].ToString()))
  90. objPersona.localidad = new Localidades() { idLocalidad = Convert.ToInt32(reader["idLocalidad"]) };
  91. objPersona.sexo = reader["sexo"].ToString();
  92. if (!string.IsNullOrEmpty(reader["fechaNacimiento"].ToString()))
  93. objPersona.fechaNacimiento = Convert.ToDateTime(reader["fechaNacimiento"]);
  94. objPersona.telefonoFijo = reader["telefonoFijo"].ToString();
  95. objPersona.telefonoCelular = reader["telefonoCelular"].ToString();
  96. objPersona.telefonoCelularAlternativo = reader["telefonoCelularAlternativo"].ToString();
  97. objPersona.email = reader["email"].ToString();
  98. objPersona.activo = Convert.ToBoolean(reader["activo"]);
  99. objPersona.username = reader["username"].ToString();
  100. objPersona.tipoPersona.nombre = reader["tipoPersona"].ToString();
  101. listaPersonas.Add(objPersona);
  102. }
  103. return listaPersonas;
  104. }
  105. catch (SqlException ex)
  106. {
  107. throw new CustomizedException(string.Format("Fallo en {0} - GetPersonas()", ClassName),
  108. ex, enuExceptionType.SqlException);
  109. }
  110. catch (Exception ex)
  111. {
  112. throw new CustomizedException(string.Format("Fallo en {0} - GetPersonas()", ClassName),
  113. ex, enuExceptionType.DataAccesException);
  114. }
  115. }
  116. /// <summary>
  117. /// Gets the persona by entidad.
  118. /// </summary>
  119. /// <param name="entidad">The entidad.</param>
  120. /// <returns></returns>
  121. public Persona GetPersonaByEntidad(Persona entidad)
  122. {
  123. try
  124. {
  125. Transaction.DBcomand = Transaction.DataBase.GetStoredProcCommand("Personas_Select");
  126. if (entidad.idPersona > 0)
  127. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idPersona", DbType.Int32, entidad.idPersona);
  128. if (!string.IsNullOrEmpty(entidad.nombre))
  129. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@nombre", DbType.String, entidad.nombre);
  130. if (!string.IsNullOrEmpty(entidad.apellido))
  131. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@apellido", DbType.String, entidad.apellido);
  132. if (entidad.numeroDocumento > 0)
  133. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@numeroDocumento", DbType.Int32, entidad.numeroDocumento);
  134. if (entidad.idTipoDocumento > 0)
  135. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idTipoDocumento", DbType.Int32, entidad.idTipoDocumento);
  136. if (!string.IsNullOrEmpty(entidad.domicilio))
  137. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@domicilio", DbType.String, entidad.domicilio);
  138. if (!string.IsNullOrEmpty(entidad.barrio))
  139. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@barrio", DbType.String, entidad.barrio);
  140. if (!string.IsNullOrEmpty(entidad.sexo))
  141. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@sexo", DbType.String, entidad.sexo);
  142. if (ValidarFechaSQL(entidad.fechaNacimiento))
  143. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@fechaNacimiento", DbType.Date, entidad.fechaNacimiento);
  144. if (!string.IsNullOrEmpty(entidad.telefonoFijo))
  145. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoFijo", DbType.String, entidad.telefonoFijo);
  146. if (!string.IsNullOrEmpty(entidad.telefonoCelular))
  147. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoCelular", DbType.String, entidad.telefonoCelular);
  148. if (!string.IsNullOrEmpty(entidad.telefonoCelularAlternativo))
  149. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoCelularAlternativo", DbType.String, entidad.telefonoCelularAlternativo);
  150. if (!string.IsNullOrEmpty(entidad.email))
  151. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@email", DbType.String, entidad.email);
  152. if (entidad.activo != null)
  153. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@activo", DbType.String, entidad.activo);
  154. if (entidad.username != null)
  155. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@username", DbType.String, entidad.username);
  156. else
  157. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@username", DbType.String, DBNull.Value);
  158. //if (entidad.idTipoPersona != null)
  159. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idTipoPersona", DbType.Int32, entidad.idTipoPersona);
  160. IDataReader reader = Transaction.DataBase.ExecuteReader(Transaction.DBcomand);
  161. Persona objPersona;
  162. while (reader.Read())
  163. {
  164. objPersona = new Persona();
  165. objPersona.idPersona = Convert.ToInt32(reader["idPersona"]);
  166. objPersona.nombre = reader["nombre"].ToString();
  167. objPersona.apellido = reader["apellido"].ToString();
  168. objPersona.numeroDocumento = Convert.ToInt32(reader["numeroDocumento"]);
  169. objPersona.idTipoDocumento = Convert.ToInt32(reader["idTipoDocumento"]);
  170. objPersona.domicilio = reader["domicilio"].ToString();
  171. objPersona.barrio = reader["barrio"].ToString();
  172. if (!string.IsNullOrEmpty(reader["idLocalidad"].ToString()))
  173. objPersona.localidad = new Localidades() { idLocalidad = Convert.ToInt32(reader["idLocalidad"]) };
  174. objPersona.sexo = reader["sexo"].ToString();
  175. if (!string.IsNullOrEmpty(reader["fechaNacimiento"].ToString()))
  176. objPersona.fechaNacimiento = Convert.ToDateTime(reader["fechaNacimiento"]);
  177. objPersona.telefonoFijo = reader["telefonoFijo"].ToString();
  178. objPersona.telefonoCelular = reader["telefonoCelular"].ToString();
  179. objPersona.telefonoCelularAlternativo = reader["telefonoCelularAlternativo"].ToString();
  180. objPersona.email = reader["email"].ToString();
  181. objPersona.activo = Convert.ToBoolean(reader["activo"]);
  182. objPersona.username = reader["username"].ToString();
  183. objPersona.idTipoPersona = Convert.ToInt32(reader["idTipoPersona"]);
  184. return objPersona;
  185. }
  186. return null;
  187. }
  188. catch (SqlException ex)
  189. {
  190. throw new CustomizedException(string.Format("Fallo en {0} - GetPersonaByEntidad()", ClassName),
  191. ex, enuExceptionType.SqlException);
  192. }
  193. catch (Exception ex)
  194. {
  195. throw new CustomizedException(string.Format("Fallo en {0} - GetPersonaByEntidad()", ClassName),
  196. ex, enuExceptionType.DataAccesException);
  197. }
  198. }
  199. public List<String> GetRolesByTipoPersona(int idTipoPersona)
  200. {
  201. List<String> retList = new List<String>();
  202. try
  203. {
  204. Transaction.DBcomand = Transaction.DataBase.GetStoredProcCommand("TipoPersonaRol_Select");
  205. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idTipoPersona", DbType.Int32, idTipoPersona);
  206. IDataReader reader = Transaction.DataBase.ExecuteReader(Transaction.DBcomand);
  207. while (reader.Read())
  208. {
  209. retList.Add(reader["nombreRol"].ToString());
  210. }
  211. }
  212. catch (SqlException ex)
  213. {
  214. throw new CustomizedException(string.Format("Fallo en {0} - GetRolesByTipoPersona()", ClassName),
  215. ex, enuExceptionType.SqlException);
  216. }
  217. catch (Exception ex)
  218. {
  219. throw new CustomizedException(string.Format("Fallo en {0} - GetTolesByTipoPersona()", ClassName),
  220. ex, enuExceptionType.DataAccesException);
  221. }
  222. return (retList);
  223. }
  224. #endregion
  225. #region --[Implementación métodos heredados]--
  226. public override string FieldID
  227. {
  228. get { throw new NotImplementedException(); }
  229. }
  230. public override string FieldDescription
  231. {
  232. get { throw new NotImplementedException(); }
  233. }
  234. /// <summary>
  235. /// Gets the by id.
  236. /// </summary>
  237. /// <param name="entidad">The entidad.</param>
  238. /// <returns></returns>
  239. public override Persona GetById(Persona entidad)
  240. {
  241. try
  242. {
  243. Transaction.DBcomand = Transaction.DataBase.GetStoredProcCommand("Personas_Select");
  244. if (entidad.idPersona > 0)
  245. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idPersona", DbType.Int32, entidad.idPersona);
  246. IDataReader reader = Transaction.DataBase.ExecuteReader(Transaction.DBcomand);
  247. Persona objPersona = new Persona();
  248. while (reader.Read())
  249. {
  250. objPersona.idPersona = Convert.ToInt32(reader["idPersona"]);
  251. objPersona.nombre = reader["nombre"].ToString();
  252. objPersona.apellido = reader["apellido"].ToString();
  253. objPersona.numeroDocumento = Convert.ToInt32(reader["numeroDocumento"]);
  254. objPersona.idTipoDocumento = Convert.ToInt32(reader["idTipoDocumento"]);
  255. objPersona.domicilio = reader["domicilio"].ToString();
  256. objPersona.barrio = reader["barrio"].ToString();
  257. if (!string.IsNullOrEmpty(reader["idLocalidad"].ToString()))
  258. objPersona.localidad = new Localidades() { idLocalidad = Convert.ToInt32(reader["idLocalidad"]) };
  259. objPersona.sexo = reader["sexo"].ToString();
  260. if (!string.IsNullOrEmpty(reader["fechaNacimiento"].ToString()))
  261. objPersona.fechaNacimiento = Convert.ToDateTime(reader["fechaNacimiento"]);
  262. objPersona.telefonoFijo = reader["telefonoFijo"].ToString();
  263. objPersona.telefonoCelular = reader["telefonoCelular"].ToString();
  264. objPersona.telefonoCelularAlternativo = reader["telefonoCelularAlternativo"].ToString();
  265. objPersona.email = reader["email"].ToString();
  266. objPersona.activo = Convert.ToBoolean(reader["activo"]);
  267. objPersona.username = reader["username"].ToString();
  268. objPersona.idTipoPersona = Convert.ToInt32(reader["idTipoPersona"]);
  269. }
  270. return objPersona;
  271. }
  272. catch (SqlException ex)
  273. {
  274. throw new CustomizedException(string.Format("Fallo en {0} - GetPersonas()", ClassName),
  275. ex, enuExceptionType.SqlException);
  276. }
  277. catch (Exception ex)
  278. {
  279. throw new CustomizedException(string.Format("Fallo en {0} - GetPersonas()", ClassName),
  280. ex, enuExceptionType.DataAccesException);
  281. }
  282. }
  283. public override void Create(Persona entidad)
  284. {
  285. throw new NotImplementedException();
  286. }
  287. /// <summary>
  288. /// Creates the specified entidad.
  289. /// </summary>
  290. /// <param name="entidad">The entidad.</param>
  291. /// <param name="identificador">The identificador.</param>
  292. public override void Create(Persona entidad, out int identificador)
  293. {
  294. try
  295. {
  296. Transaction.DBcomand = Transaction.DataBase.GetStoredProcCommand("Personas_Insert");
  297. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idPersona", DbType.Int32, 0);
  298. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@nombre", DbType.String, entidad.nombre);
  299. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@apellido", DbType.String, entidad.apellido);
  300. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@numeroDocumento", DbType.Int32, entidad.numeroDocumento);
  301. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idTipoDocumento", DbType.Int32, entidad.idTipoDocumento);
  302. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@domicilio", DbType.String, entidad.domicilio);
  303. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@barrio", DbType.String, entidad.barrio);
  304. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@localidad", DbType.String, entidad.localidad.nombre);
  305. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@sexo", DbType.String, entidad.sexo);
  306. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@fechaNacimiento", DbType.Date, entidad.fechaNacimiento);
  307. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoFijo", DbType.String, entidad.telefonoFijo);
  308. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoCelular", DbType.String, entidad.telefonoCelular);
  309. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@telefonoCelularAlternativo", DbType.String, entidad.telefonoCelularAlternativo);
  310. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@email", DbType.String, entidad.email);
  311. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@activo", DbType.String, entidad.activo);
  312. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@username", DbType.String, entidad.username);
  313. if (Transaction.Transaction != null)
  314. Transaction.DataBase.ExecuteNonQuery(Transaction.DBcomand, Transaction.Transaction);
  315. else
  316. Transaction.DataBase.ExecuteNonQuery(Transaction.DBcomand);
  317. identificador = Int32.Parse(Transaction.DBcomand.Parameters["@idPersona"].Value.ToString());
  318. }
  319. catch (SqlException ex)
  320. {
  321. throw new CustomizedException(string.Format("Fallo en {0} - Create()", ClassName),
  322. ex, enuExceptionType.SqlException);
  323. }
  324. catch (Exception ex)
  325. {
  326. throw new CustomizedException(string.Format("Fallo en {0} - Create()", ClassName),
  327. ex, enuExceptionType.DataAccesException);
  328. }
  329. }
  330. /// <summary>
  331. /// Updates the specified entidad.
  332. /// </summary>
  333. /// <param name="entidad">The entidad.</param>
  334. public override void Update(Persona entidad)
  335. {
  336. try
  337. {
  338. Transaction.DBcomand = Transaction.DataBase.GetStoredProcCommand("Personas_Username_Update");
  339. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idPersona", DbType.Int32, entidad.idPersona);
  340. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@username", DbType.String, entidad.username);
  341. if (Transaction.Transaction != null)
  342. Transaction.DataBase.ExecuteNonQuery(Transaction.DBcomand, Transaction.Transaction);
  343. else
  344. Transaction.DataBase.ExecuteNonQuery(Transaction.DBcomand);
  345. }
  346. catch (SqlException ex)
  347. {
  348. if (ex.Number == BLConstantesGenerales.ConcurrencyErrorNumber)
  349. throw new CustomizedException(string.Format(
  350. "No se puede modificar la Persona {0}, debido a que otro usuario lo ha modificado.",
  351. entidad.nombre + " " + entidad.apellido), ex, enuExceptionType.ConcurrencyException);
  352. throw new CustomizedException(string.Format("Fallo en {0} - Update()", ClassName),
  353. ex, enuExceptionType.SqlException);
  354. }
  355. catch (Exception ex)
  356. {
  357. throw new CustomizedException(string.Format("Fallo en {0} - Update()", ClassName),
  358. ex, enuExceptionType.DataAccesException);
  359. }
  360. }
  361. /// <summary>
  362. /// Deletes the specified entidad.
  363. /// </summary>
  364. /// <param name="entidad">The entidad.</param>
  365. public override void Delete(Persona entidad)
  366. {
  367. try
  368. {
  369. Transaction.DBcomand = Transaction.DataBase.GetStoredProcCommand("Personas_Delete");
  370. Transaction.DataBase.AddInParameter(Transaction.DBcomand, "@idPersona", DbType.Int32, 0);
  371. if (Transaction.Transaction != null)
  372. Transaction.DataBase.ExecuteNonQuery(Transaction.DBcomand, Transaction.Transaction);
  373. else
  374. Transaction.DataBase.ExecuteNonQuery(Transaction.DBcomand);
  375. }
  376. catch (SqlException ex)
  377. {
  378. if (ex.Number == BLConstantesGenerales.ConcurrencyErrorNumber)
  379. throw new CustomizedException(string.Format(
  380. "No se puede eliminar la Persona {0}, debido a que otro usuario lo ha modificado.",
  381. entidad.nombre + " " + entidad.apellido), ex, enuExceptionType.ConcurrencyException);
  382. if (ex.Number == BLConstantesGenerales.IntegrityErrorNumber)
  383. throw new CustomizedException(string.Format("No se puede eliminar la Persona {0}, debido a que tiene registros asociados.",
  384. entidad.nombre + " " + entidad.apellido), ex, enuExceptionType.IntegrityDataException);
  385. throw new CustomizedException(string.Format("Fallo en {0} - Delete()", ClassName),
  386. ex, enuExceptionType.SqlException);
  387. }
  388. catch (Exception ex)
  389. {
  390. throw new CustomizedException(string.Format("Fallo en {0} - Delete()", ClassName),
  391. ex, enuExceptionType.DataAccesException);
  392. }
  393. }
  394. #endregion
  395. }
  396. }