204 lines
9.0 KiB
C#
204 lines
9.0 KiB
C#
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<PersonalChecadorIDResponse> personalsig = new List<PersonalChecadorIDResponse>();
|
|
|
|
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<List<RegistroPersonalChecador>> registros = null;
|
|
ADSNetLibrary.SIGAPI.Models.ResponseModel<List<ResponseUser>> 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<RequestAddChecadorRegistro> registrostosave = new List<RequestAddChecadorRegistro>();
|
|
if (users != null && users.IsSuccess)
|
|
{
|
|
List<ResponseUser> 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<List<ResponseUser>> 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) { }
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|