PageRenderTime 48ms CodeModel.GetById 14ms app.highlight 29ms RepoModel.GetById 1ms app.codeStats 0ms

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