// Temporalmente todos los metodos son publicos. Se analizará opcion de convertir a static. // Inicialmente no se implementa ningun cache, todos los resultados son consultados de las tablas // cada vez que se requieran. // Sustituir accesos a DAL Data por referencias a Interfase #region Gestion Claves Mes /// <summary> /// Crea una nueva entidad ClaveMes y su entrada en la tabla AA_ClavesMes. /// </summary> /// <param name="mes">Mes correspondiente.</param> /// <param name="anno">Año correspondiente.</param> /// <returns>Entidad creada.</returns> ClaveMes CrearNuevaClaveMes(int mes, int anno) { // Comprobar que no existe ClaveMes ent = LeerClaveMes(mes, anno); if (ent != null) { // Chequeo de opciones, log , notificar return(ent); } ClaveMes newcm = new ClaveMes() { State = EntityState.Added, Mes = mes, Anno = anno }; //ClaveMesData dh = new ClaveMesData(); IEntityWrite <ClaveMes> dh = new ClaveMesData(); if (dh.WriteEntity(newcm)) { return(newcm); } else { // log details throw new Exception("Error creando nueva entidad ClaveMes."); } }
void CrearClaveFechasRegistro(int mes, int anno, int depart) { Collection <string> usersId = RetListaIdUsuariosByDepart(depart); Collection <FechaMes> fechas; ClaveMes ent = CrearNuevaClaveMes(mes, anno); bool ret = CrearFechasLaborablesMes(ent.Id); if (ret) { // obtener coleccion de fechas fechas = ListaFechasLaborablesMes(ent.Id); ret = CrearRegistroAsistenciaMes(usersId, fechas); if (!ret) { // log, notify throw new Exception("Error CrearRegistroAsistenciaMes"); } } else { // log, notify throw new Exception("Error CrearFechasLaborablesMes"); } }
// metodos de soporte bool CheckClaveMes(int mes, int anno, out ClaveMes key) { key = LeerClaveMes(mes, anno); if (key != null) { return(true); } else { return(false); } }
static void ReadDataSupervisor(IMessageHandling proxy) { // consultar lista de departamentos DepartamentQuery dptQry = new DepartamentQuery(); DepartamentQueryResult dptQryRst = proxy.Handle(dptQry); Console.WriteLine("\nLeida lista de departamentos. Cantidad: " + dptQryRst.Coleccion.Count); foreach (var depart in dptQryRst.Coleccion) { Console.WriteLine(string.Format(" Leído Departamento Id: {0}\t Nombre: {1}", depart.Id, depart.Description)); } // consultar claves mes existentes ClaveMesQuery cmQry = new ClaveMesQuery(); ClaveMesQueryResult cmQryRst = proxy.Handle(cmQry); Console.WriteLine("\nClaves Mes registradas"); foreach (var item in cmQryRst.Coleccion) { Console.WriteLine(string.Format(" Clave Mes: {0}", item.Texto)); } // consultar asistencia para un mes y tres departamentos ClaveMes mk = cmQryRst.Coleccion[1]; Collection <int> departs = new Collection <int>(); departs.Add(dptQryRst.Coleccion[1].Id); departs.Add(dptQryRst.Coleccion[3].Id); departs.Add(dptQryRst.Coleccion[5].Id); AsistenciaQuery asistQry = new AsistenciaQuery(mk.Id, departs); AsistenciaQueryResult asistQryRst = proxy.Handle(asistQry); //Console.WriteLine("\nIncidencias en el Mes registradas: " + asistQryRst.Incidencias.Count); Console.WriteLine("\nAsistencias en el Mes registradas"); Console.WriteLine(string.Format("Recibidos {0} empleados.", asistQryRst.Empleados.Count)); // listando empleados foreach (var item in asistQryRst.Empleados) { Console.WriteLine(string.Format("Nombre: {0}\t Id: {1}\t Codigo: {2} Cant. Asistencias: {3}", item.Nombre, item.Id, item.Code, item.Asistencias.Count)); } foreach (var empleado in asistQryRst.Empleados) { Console.WriteLine(); Console.WriteLine(string.Format(" {0}", empleado.Nombre)); foreach (var asist in empleado.Asistencias) { Console.WriteLine(string.Format(" {0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}", asist.State, asist.Id, asist.Fecha, asist.DiaSemana, asist.ChekinTime, asist.ChekoutTime, asist.IncidenciaCausaId, asist.IncidenciaObservacion)); } } }
// metodo guia para extraccion de metodos Collection <Asistencia> ConsultaRegistroAsistenciaMes(int mes, int anno, int depart) { Collection <string> usersId = RetListaIdUsuariosByDepart(depart); ClaveMes ent = LeerClaveMes(mes, anno); bool ret; Collection <FechaMes> fechas; if (ent == null) { // no existe, crear clave, fechas y registro ent = CrearNuevaClaveMes(mes, anno); ret = CrearFechasLaborablesMes(ent.Id); if (ret) { // obtener coleccion de fechas fechas = ListaFechasLaborablesMes(ent.Id); ret = CrearRegistroAsistenciaMes(usersId, fechas); if (!ret) { // log, notify throw new Exception("Error CrearRegistroAsistenciaMes"); } } else { // log, notify throw new Exception("Error CrearFechasLaborablesMes"); } } // existe, leer claveMes, fechas y registro ent = LeerClaveMes(mes, anno); fechas = ListaFechasLaborablesMes(ent.Id); Collection <Asistencia> asist = RetRegistroAsistenciaMes(usersId, fechas); if (asist != null) { return(asist); } throw new Exception("Error ConsultaRegistroAsistenciaMes"); }
// Crear Fechas laborales //TODO DE forma implicita se ignoran sabados y domingos. Se puede implementar con argumentos. /// <summary> /// Crea registro de todas las fechas necesarias para un mes y un año particular. /// </summary> /// <param name="mesId">Número Id de entidad ClaveMes.</param> /// <returns></returns> bool CrearFechasLaborablesMes(int mesId) { // obtener Entiad correspondiente a esa Id. ClaveMes ent = LeerClaveMes(mesId); if (ent == null) { throw new Exception("Error accediendo a entidad ClaveMes."); } Collection <FechaMes> newCol = new Collection <FechaMes>(); DateTime fecha; DayOfWeek dow; FechaMes newFecha; // Ciclo para cada dias del mes for (int i = 1; i <= DateTime.DaysInMonth(ent.Anno, ent.Mes); i++) { fecha = new DateTime(ent.Anno, ent.Mes, i); dow = fecha.DayOfWeek; if ((dow == DayOfWeek.Saturday) | (dow == DayOfWeek.Sunday)) { continue; } newFecha = new FechaMes() { State = EntityState.Added, MesId = ent.Id, // Foreing Key DiaSemanaId = (int)dow, Fecha = fecha }; newCol.Add(newFecha); } // Pasar coleccion a Writer //FechaMesData dh = new FechaMesData(); ICollectionWrite <FechaMes> dh = new FechaMesData(); return(dh.WriteCollection(newCol)); }
private static void GuardarFechaConsulta(int mes, int anno) { _fechaConsulta = new ClaveMes(); _fechaConsulta.Mes = mes; _fechaConsulta.Anno = anno; }
public override ClaveMes ReadEntityBy2Params(int mes, int anno) { using (IDbConnection connection = GetConnection()) { IDbCommand command = connection.CreateCommand(); command.Connection = connection; command.CommandText = this.CommandText; command.CommandType = this.CommandType; foreach (IDataParameter param in this.GetParameters(command)) { command.Parameters.Add(param); } // Creando Parametro para filtrar por Mes y Anno IDataParameter param1 = command.CreateParameter(); param1.ParameterName = Constants.FilterOneParam; param1.DbType = DbType.Int32; param1.Value = mes; command.Parameters.Add(param1); param1 = command.CreateParameter(); param1.ParameterName = Constants.FilterTwoParam; param1.DbType = DbType.Int32; param1.Value = anno; command.Parameters.Add(param1); ClaveMes ent = null; try { connection.Open(); using (IDataReader reader = command.ExecuteReader()) { try { MapperBase <ClaveMes> mapper = GetMapper(); ent = mapper.MapEntity(reader); return(ent); } catch { throw; } finally { reader.Close(); } } } catch { throw; } finally { connection.Close(); } } }
static void ReadDataJefeGrupo(IMessageHandling proxy) { // consultar dept del usuario UserDepartamentQuery dptQry = new UserDepartamentQuery(_userID); UserDepartamentQueryResult dptQryRst = proxy.Handle(dptQry); Console.WriteLine(string.Format(" Leído Departamento Id: {0}\t Nombre: {1}", dptQryRst.Id, dptQryRst.Name)); // consultar claves mes existentes ClaveMesQuery cmQry = new ClaveMesQuery(); ClaveMesQueryResult cmQryRst = proxy.Handle(cmQry); Console.WriteLine("\nClaves Mes registradas"); foreach (var item in cmQryRst.Coleccion) { Console.WriteLine(string.Format(" Clave Mes: {0}", item.Texto)); } // consultar asistencia para un mes y departamento del usuario // aislar datos de mes ClaveMes mk = cmQryRst.Coleccion[0]; AsistenciaQuery asistQry = new AsistenciaQuery(mk.Id, dptQryRst.Id); AsistenciaQueryResult asistQryRst = proxy.Handle(asistQry); // guardando ref a incidencias recibidas //Console.WriteLine("\nIncidencias en el Mes registradas: " + asistQryRst.Incidencias.Count); _asistencias = new Collection <Asistencia>(); Console.WriteLine("\nAsistencias en el Mes registradas"); Console.WriteLine(string.Format("Recibidos {0} empleados.", asistQryRst.Empleados.Count)); // listando empleados foreach (var item in asistQryRst.Empleados) { Console.WriteLine(string.Format("Nombre: {0}\t Id: {1}\t Codigo: {2} Cant. Asistencias: {3}", item.Nombre, item.Id, item.Code, item.Asistencias.Count)); } Console.WriteLine("\nAsistencias por trabajador"); foreach (var empleado in asistQryRst.Empleados) { Console.WriteLine(); Console.WriteLine(string.Format(" {0}", empleado.Nombre)); foreach (var asist in empleado.Asistencias) { Console.WriteLine(string.Format(" {0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}", asist.State, asist.Id, asist.Fecha, asist.DiaSemana, asist.ChekinTime, asist.ChekoutTime, asist.IncidenciaCausaId, asist.IncidenciaObservacion)); if (asist.Id == 177) { _asist01 = asist; } if (asist.Id == 232) { _asist02 = asist; } if (asist.Id == 342) { _asist03 = asist; } if (asist.Id == 452) { _asist04 = asist; } } } _asistencias.Add(_asist01); _asistencias.Add(_asist02); _asistencias.Add(_asist03); _asistencias.Add(_asist04); }