using ADSNetLibrary.Application.Conexiones.Local; using ADSNetLibrary.Helpers.Conexiones.LocalSQLite; using ADSNetLibrary.Helpers.Conexiones.ZkTeckoLib; using ADSNetLibrary.SIGAPI.Models.RH.Request; using ADSUtileriasService.Conexion.SIG; using ADSUtileriasService.Helpers; using DocumentFormat.OpenXml.Wordprocessing; using Microsoft.Win32; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ADSUtileriasService.ChecadorController { public class LogicChecador { public static Timer timerchecador; static int mmTiempo = 900000;// 15 minutos public static bool SyncLocaldato() { //10min //mmTiempo = 3000; // 30 segundos Mod.GuardaLog("timmer", LogsNames.Log); timerchecador = new Timer(ontimerchecador, $"multithread executed... tiempo de envio {mmTiempo} milisegundos.", 0, mmTiempo); //1200000 //2400000 // 3600000); Mod.GuardaLog("timmer executed", LogsNames.Log); return true; } static void ontimerchecador(object data) { // This runs on a pooled thread //Console.WriteLine(data); // Writes "multithread executed..." Mod.GuardaLog($"timmer executed {mmTiempo}", LogsNames.Log); try { RHSIG rhsig = new RHSIG(); using (SqlLiteBase bd = new SqlLiteBase("")) { UtileriasSqlite utilsqlite = new UtileriasSqlite(bd); var devicelist = utilsqlite.GETChecadoresActivos(); foreach (ADSNetLibrary.SIGAPI.Models.RH.Response.ResponseGetChecadoresModel devicemodel in devicelist) { Mod.GuardaLog($"Checador Actual {devicemodel.checador} {devicemodel.iPLocal} {devicemodel.puerto} CveChecado: {devicemodel.cveChecador} CveEmpresa:{devicemodel.CveEmpresa} CveSubpryecto:{devicemodel.cveSubProyecto} ", LogsNames.Log); SDKZkTeckoHelper libvalidacion = new SDKZkTeckoHelper(); List personalsig = new List(); var checks = rhsig.PersonalChecadorID(new Conexion.SIG.RequestPersonalChecadorID() { CvePersonal=-1, ChecadorID="-1", CveChecador = devicemodel.cveChecador }); if (checks != null) { personalsig = checks.Result; } ADSNetLibrary.SIGAPI.Models.ResponseModel> registros = null; ADSNetLibrary.SIGAPI.Models.ResponseModel> users = null; //int contadorRegistros = 0; using (ApiZKTeco device = new ApiZKTeco(devicemodel.iPLocal, devicemodel.puerto.ToEntero())) { registros = device.GetChecadorRegistroEmpleado(DateTime.Now.AddDays(-30), DateTime.Now.AddMonths(1)); bool continuarx = false; while (continuarx && (registros == null || !registros.IsSuccess)) { registros = device.GetChecadorRegistroEmpleado(DateTime.Now.AddDays(-30), DateTime.Now.AddMonths(1)); } if (registros != null && registros.IsSuccess) { users = device.GetUserInfo(); } } if (users != null && users.IsSuccess) { Mod.GuardaLog($"Numero de registros {users.Result.Count} ", LogsNames.Log); } //Mod.GuardaLog(Newtonsoft.Json.JsonConvert.SerializeObject(device.GetChecadorEmpleado()), LogsNames.Log); List registrostosave = new List(); if (users != null && users.IsSuccess) { List usuariosporvaldar = users.Result; DateTime mindate = DateTime.Now.AddMonths(-2); if (mindate > GlobalVars.fechaChecadorlup) { GlobalVars.fechaChecadorlup = mindate; } //DateTime fechac = GlobalVars.fechaChecadorlup; foreach (RegistroPersonalChecador reg in registros.Result) { RequestAddChecadorRegistro req = new RequestAddChecadorRegistro(); req.ChecadorID = reg.IdPersonal.ToEntero(); var usuarioz = personalsig.FirstOrDefault(x => x.ChecadorID == reg.IdPersonal); if (usuarioz != null) { req.CvePersonal = usuarioz.CvePersonal; } //var usuario = usuariosporvaldar.FirstOrDefault(x => x.dwEnrollNumber == reg.IdPersonal); //if (usuario != null) { req.CvePersonal = usuario.sCardnumber.ToEntero(); } req.CveChecador = devicemodel.cveChecador; req.Fecha = reg.fecha; registrostosave.Add(req); if (usuarioz == null || reg.fecha > usuarioz.Fecha) { registrostosave.Add(req); } //if (reg.fecha > fechac) { fechac = reg.fecha; } } //GlobalVars.fechaChecadorlup = fechac; rhsig.AddChecadorRegistro(registrostosave); } Mod.GuardaLog(Newtonsoft.Json.JsonConvert.SerializeObject(registrostosave), LogsNames.Log); } } } catch (Exception e) { Mod.GuardaLog(e, "Error al enviar registros de asistencia", LogsNames.Log); } if (!ADSUtileriasService.Helpers.GlobalVars.continuarService) { if (timerchecador != null) { timerchecador.Dispose(); timerchecador = null; Mod.GuardaLog("Teminar timer", LogsNames.Log); } } } public static void UpdateKeyPersonalChecador() { Mod.GuardaLog($"Actualiza key executed {mmTiempo}", LogsNames.Log); try { using (SqlLiteBase bd = new SqlLiteBase("")) { UtileriasSqlite utilsqlite = new UtileriasSqlite(bd); var devicelist = utilsqlite.GETChecadoresActivos(); foreach (ADSNetLibrary.SIGAPI.Models.RH.Response.ResponseGetChecadoresModel devicemodel in devicelist) { RHSIG rhsig = new RHSIG(); var checks = rhsig.PersonalChecadorID(new Conexion.SIG.RequestPersonalChecadorID() { CvePersonal = -1, ChecadorID = "-1", CveChecador = devicemodel.cveChecador }); if (checks != null && checks.Result.Count >0) { continue; } Mod.GuardaLog($"Checador Actual {devicemodel.checador} {devicemodel.iPLocal} {devicemodel.puerto} CveChecado: {devicemodel.cveChecador} CveEmpresa:{devicemodel.CveEmpresa} CveSubpryecto:{devicemodel.cveSubProyecto} ", LogsNames.Log); ADSNetLibrary.SIGAPI.Models.ResponseModel> users = null; using (ApiZKTeco device = new ApiZKTeco(devicemodel.iPLocal, devicemodel.puerto.ToEntero())) { users = device.GetUserInfo(); foreach (ResponseUser reg in users.Result) { if(reg.dwEnrollNumber != "99999") { var checksw = rhsig.AddUpPersonalChecadorVinculo(new Conexion.SIG.RequestPersonalChecadorVinculoAddUp() { ChecadorID = reg.dwEnrollNumber.ToString(), CvePersonal = reg.Password.ToEntero(), CveChecador = devicemodel.cveChecador, Checadorname = reg.Name }); } //device.UpdateUserCardFromPassword(reg); } } } } } catch (Exception) { } } } }