//Envia el serialNum asignado a una alarma LENEL: Mensajes, speed, Panic, etc. public void AsignarSerialAAlarma(int v_alarmID, int v_serialNum, string tipoAlarma) { string organizationID = Helpers.GetInstance().MainOrgID.ToString(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); try { try { Helpers.GetInstance().DoLog("Hecho addSetAlarma de: alarmID=" + v_alarmID + " tipoAlarma=" + tipoAlarma + " serialNum=" + v_serialNum); PoolSetAlarma.GetInstance().addSetAlarma(v_alarmID.ToString(), tipoAlarma, v_serialNum.ToString()); if (PoolGetAlarm.GetInstance().isEmpty()) { // Helpers.GetInstance().DoLog("isEmpty de Alarma dio True"); PoolSetAlarma.GetInstance().ContinuarPoolSet(); } //else // Helpers.GetInstance().DoLog("isEmpty dio False"); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en AsignarSerialAAlarma: ALARMID: " + v_alarmID.ToString() + ", SERIALNUM:" + v_serialNum + " - " + ex.Message); } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en AsignarSerialAAlarmaMUTEX: " + ex.Message); } }
// Borrar todos los cardformats de la organizacion public void enviarBorrarCF(int panel_id) { string organizationID = Helpers.GetInstance().MainOrgID.ToString(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); try { //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); try { string errDesc = ""; int errCode = -1; WebServiceAPI.GetInstance().DeleteCardFormats(organizationID, panel_id.ToString(), out errDesc, out errCode); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en enviarBorrarCF: " + ex.Message); } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en enviarBorrarCFMUTEX: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} }
/// <summary> /// Mensaje para notificar la dada de baja de un Reader correspondiente a un Panel /// </summary> /// <param name="PanelID"></param> /// <param name="v_ReaderID"></param> public void deleteReader(int PanelID, int v_ReaderID) { //staticDatamanager.updateConfigurationVariables(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); string readerID = v_ReaderID.ToString(); string orgID = Helpers.GetInstance().MainOrgID.ToString(); // El configurado en el registro try { //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); try { string errDesc = ""; int errCode = -1; WebServiceAPI.GetInstance().DeleteReader(PanelID.ToString(), readerID, orgID, out errDesc, out errCode); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en deleteReader: " + ex.Message); } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en deleteReader-MUTEX: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} }
void actualizarConnStatus() { Helpers.GetInstance().DoLog("Comienza Task de actualizacion de ConnStatus..."); while (!finalizarPoolStatus.WaitOne(5000)) { try { Dictionary <int, bool> listaStatus = WebServiceAPI.GetInstance().GetConnStatusMobileGeneral(); if (listaStatus != null) { lock (statusDevices) { foreach (KeyValuePair <int, bool> par in listaStatus) { setConnStatus(par.Key, par.Value); } } } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en actualizarConnStatus:" + ex.Message); } } Helpers.GetInstance().DoLog("Finaliza Thread de actualizacion de ConnStatus."); }
void Start() { Thread.Sleep(200); Helpers.GetInstance().DoLog("Start de PoolGetAcceso.."); Thread t = new Thread(actualizarListaAccesos); t.Start(); //Task.Factory.StartNew(() => actualizarListaAccesos()); }
void Start() { Helpers.GetInstance().DoLog("Start de PoolGetAlarm.."); Thread.Sleep(250); Thread t = new Thread(actualizarListaAlarmas); t.Start(); //Task.Factory.StartNew(() => actualizarListaAlarmas()); }
void Start() { Thread.Sleep(150); Helpers.GetInstance().DoLog("Start de PoolGetConnStatus"); Thread t = new Thread(actualizarConnStatus); t.Start(); // Task.Factory.StartNew(() => actualizarConnStatus()); }
void Start() { Thread.Sleep(200); Helpers.GetInstance().DoLog("Start de PoolSetAlarma.."); Thread t = new Thread(enviarListaSetAlarmas); t.Start(); // Task.Factory.StartNew(() => enviarListaSetAlarmas()); }
// Envio de definicion de un cardFormat al Server. public void addCardFormat(int FormatID, int m_PanelID, int BitSize, int FC, int Offset, int BitsFC, int PositionStartFC, int BitsCardNum, int PositionStartCN, int BitsIssueCode, int PositionStartIC, int m_IsDownloadInProgress) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); string orgID = Helpers.GetInstance().MainOrgID.ToString(); //string nomCF = obtenerNombreCardFormat(FormatID); if (BitsFC == 0) { BitsFC++; } if (BitsCardNum == 0) { BitsCardNum++; } if (BitsIssueCode == 0) { BitsIssueCode++; } //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); try { int errCode = -1; string errDesc = ""; string nombreCardformat = WebServiceAPI.GetInstance().ObtenerNombreCardformat(FormatID.ToString(), out errDesc, out errCode); if (String.IsNullOrEmpty(nombreCardformat)) { Helpers.GetInstance().DoLog("ERROR en addCardFormat: No pudo obtener el Nombre del Cardformat " + FormatID.ToString()); } errCode = -1; errDesc = ""; WebServiceAPI.GetInstance().AddCardFormat(m_PanelID.ToString(), orgID, FormatID.ToString(), nombreCardformat, FC.ToString(), Offset.ToString(), BitSize.ToString(), PositionStartFC.ToString(), (PositionStartFC + BitsFC - 1).ToString(), PositionStartCN.ToString(), (PositionStartCN + BitsCardNum - 1).ToString(), PositionStartIC.ToString(), (PositionStartIC + BitsIssueCode - 1).ToString(), out errDesc, out errCode); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en addCardFormat: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} }
public void subRefCount() { _refCount--; Helpers.GetInstance().DoLog("Resto refCount de PoolSetAcceso =" + _refCount); Thread.Sleep(100); if (_refCount == 0) { Stop(); // Detiene el thread de verificacion Thread.Sleep(500); _instance = null; // Hace null la referencia para que un nuevo GetInstance lance todo de nuevo Helpers.GetInstance().DoLog("Instance de PoolSetAcceso es NULL"); } }
/// <summary> /// Mensaje para notificar la dada de baja de Panel. /// Solo se envia deletePanel si realmente se dio de baja y no existe en Lenel- /// Ademas usa DC para eliminar el usuario asociado al panel. /// </summary> public void deletePanel(int PanelID, string panelName) { PoolGetConnStatus.GetInstance().subRefCount(); // Para detener el thread y liberar memoria en caso de ser el ultimo panel que se da de baja. PoolGetAlarm.GetInstance().subRefCount(); PoolGetAcceso.GetInstance().subRefCount(); PoolSetAlarma.GetInstance().subRefCount(); PoolSetAcceso.GetInstance().subRefCount(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); string orgID = Helpers.GetInstance().MainOrgID.ToString(); // El configurado en el registro try { //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); try { string errDesc = ""; int errCode = -1; if (!WebServiceAPI.GetInstance().ExistePanelEnOnGuard(PanelID.ToString(), out errDesc, out errCode)) { WebServiceAPI.GetInstance().DeleteDevice(PanelID.ToString(), orgID, out errDesc, out errCode); if (errCode == (int)StatusCode.OK) { Employee emp = WebServiceAPI.GetInstance().ObtenerEmpleadoAsociadoAHH(panelName, out errDesc, out errCode); if (emp != null) { Helpers.GetInstance().DoLog("Va a borrar el empleado " + emp.Nombre + " " + emp.Apellido + " con personid: " + emp.PersonID.ToString() + " asociado al panelID: " + PanelID.ToString() + " llamado:" + panelName); WebServiceAPI.GetInstance().EliminarEmpleado(emp.PersonID, out errDesc, out errCode); } else { Helpers.GetInstance().DoLog("emp es NULL en deletePanel. NO borró el empleado asociado al panel " + PanelID.ToString()); } } } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en deletePanel: " + ex.Message); } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en deletePanelMUTEX: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} }
private string enviarAddEmployee(string v_badge, int v_panelID, string v_newAccesslevels, string v_fechaActivacion, string v_fechaDesactivacion, string v_PIN, int m_IsDownloadInProgress) { string res = "FAIL"; int errCode = (int)StatusCode.NOT_IMPLEMENTED; try { string errDesc = ""; KeyValuePair <Employee, Tarjeta> t = WebServiceAPI.GetInstance().ObtenerDatosEmpleadoYTarjeta(v_badge, out errDesc, out errCode); if (errCode != (int)StatusCode.OK) { Helpers.GetInstance().DoLog("ObtenerDatosEmpleadoYTarjeta devolvio el error: " + errDesc); } if ((t.Key != null) && (t.Value != null)) { t.Value.accessLevels = v_newAccesslevels; t.Value.PIN = v_PIN; //Helpers.GetInstance().DoLog("Va a llamar a AddEmployee con tarjeta=" + t.Value.tarjeta + " badgekey=" + t.Value.lnlbadgekey); WebServiceAPI.GetInstance().AddEmployee(t.Key, t.Value, v_panelID, out errDesc, out errCode); if (errCode != (int)StatusCode.OK) { Helpers.GetInstance().DoLog("ERROR en enviarAddEmployee: " + errDesc); } else { res = "OK"; } if (t.Key.isVisitor) { sendScheduledVisit(t.Key.PersonID.ToString(), t.Key.Nombre, t.Key.Apellido, t.Key.NumeroDocumento, v_badge, Helpers.GetInstance().MainOrgID.ToString()); } } else { Helpers.GetInstance().DoLog("No envia addEmployee por ser Empleado o tarjeta NULL" + errDesc); } } catch (Exception ex) { Helpers.GetInstance().DoLog("Excepcion en enviarAddEmployee: " + ex.Message); res = "FAIL"; } return(res); }
/// <summary> /// Recibe el alta de un reader a un Panel desde LENEL /// Contruye la expresion para mandarla al server y alli, en funcion del READERNAME, /// se actualiza el LNLREADERENTRANCEID o el LNLREADEREXITID /// </summary> public string addReader(string v_panelName, int v_panelID, string v_ReaderName, int v_ReaderID, int v_ReaderEntranceType, int v_OrgID, string v_cardFormats, int m_IsDownloadInProgress) { // staticDatamanager.updateConfigurationVariables(); string res = string.Empty; string deviceID = v_panelID.ToString(); string deviceName = v_panelName; string readerID = v_ReaderID.ToString(); string readerName = v_ReaderName; string readerEntranceType = v_ReaderEntranceType.ToString(); string orgID = Helpers.GetInstance().MainOrgID.ToString(); // No toma la de la llamada try { //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); try { string errDesc = ""; int errCode = -1; string r = WebServiceAPI.GetInstance().AddReaderToPanel(deviceID, deviceName, readerID, readerName, readerEntranceType, orgID, v_cardFormats, out errDesc, out errCode); if (errCode != (int)StatusCode.OK) { res = "FAIL"; } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en addReader: " + ex.Message); res = "FAIL"; // Notificar la falla del evento } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en addReader-MUTEX: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} return(res); }
private string obtenerAccessLevelName(int v_ALid) { string res = ""; try { string errDesc = ""; int errCode = -1; res = WebServiceAPI.GetInstance().ObtenerNombreAccessLevel(v_ALid.ToString(), out errDesc, out errCode); } catch (Exception ex) { Helpers.GetInstance().DoLog("Excepcion en obtenerAccessLevelName: " + ex.Message); } return(res.Replace(',', ' ').Replace('|', ' '));; }
private string obtenerHolidayNames() { string res = ""; try { string errDesc = ""; int errCode = -1; res = WebServiceAPI.GetInstance().ObtenerNombresHolidays(out errDesc, out errCode); } catch (Exception ex) { Helpers.GetInstance().DoLog("Excepcion en obtenerHolidayNames: " + ex.Message); } return(res); }
private bool existeEnAnteriores(string deviceName, Acceso acceso) { bool existe = false; if (listaAccesosAnteriores.ContainsKey(deviceName)) { foreach (Acceso a in listaAccesosAnteriores[deviceName]) { if ((a.Tarjeta == acceso.Tarjeta) && (a.Hora == acceso.Hora) && (a.tipoAcceso == acceso.tipoAcceso)) { Helpers.GetInstance().DoLog("DESCARTADO acceso con tarjeta=" + a.Tarjeta + " hora=" + a.Hora + " tipoAcceso=" + a.tipoAcceso); existe = true; break; } } } return(existe); }
/// <summary> /// Llega la definicion de una TimeZone. Mandarla al server. /// Formato: TYPE:LNL_ADDTIMEZONE,DEVICEID:(.*),ORGANIZATION:(.*),TZNUMBER:(.*),TIMEZONEDATA:(.*),ISDOWNLOADINGDB:(.*) /// </summary> /// <param name="v_PanelID"></param> /// <param name="v_OrganizationID"></param> /// <param name="v_TZNumber"></param> /// <param name="strTimezoneData"></param> public string addTimezone(int v_PanelID, int v_OrgID, int v_TZNumber, string v_strTimezoneData, int m_IsDownloadInProgress) { string res = string.Empty; string tzName = obtenerTimeZoneName(v_TZNumber); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); string panelID = v_PanelID.ToString(); string TZNumber = v_TZNumber.ToString(); //string orgID = v_OrganizationID.ToString(); string organizationID = Helpers.GetInstance().MainOrgID.ToString(); // No toma la de la llamada Helpers.GetInstance().DoLog("addTimeZone, PanelID= " + panelID + " orgID=" + v_OrgID + " TZNumber=" + TZNumber + " timezoneData=" + v_strTimezoneData); try { //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); try { string errDesc = ""; int errCode = -1; WebServiceAPI.GetInstance().AddTimeZone(tzName, panelID, organizationID, TZNumber, v_strTimezoneData, m_IsDownloadInProgress.ToString(), out errDesc, out errCode); if (errCode != (int)StatusCode.OK) { res = "FAIL"; } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en addTimeZone: " + ex.Message); res = "FAIL"; } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en addTimeZoneMUTEX: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} return(res); }
/// <summary> /// Redefinicion del accesslevel para este panel. Viene vacio si se borro el panel del accesslevel. /// </summary> //public string addAccessLevel(int v_PanelID, int v_OrgID, int v_accessLevelID, string v_strTZReader, int m_IsDownloadInProgress) //{ // string res = string.Empty; // //staticDatamanager.updateConfigurationVariables(); // string alName = ""; // string panelID = v_PanelID.ToString(); // string organizationID = Helpers.GetInstance().MainOrgID.ToString(); // No toma la de la llamada // string accessLevelID = ""; // //Helpers.GetInstance().DoLog("Llama a addAccessLevel. PanelID: " + v_PanelID.ToString() + " v_accessLevelID: " + v_accessLevelID.ToString() + " TZData:" + v_strTZReader); // System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); // Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); // try // { // if (!ALInitialized) // { // AccessLevelsDefinitionsDelPanel = Helpers.GetInstance().obtenerAccessLevelPanel(v_PanelID); // En Lenel por dataconduit // ALInitialized = true; // } // bool actualizar = false; // Para filtrar las llamadas que vengan desde accesslevels que no pertenezcan al panel. // if (String.IsNullOrEmpty(v_strTZReader)) // { // if (AccessLevelsDefinitionsDelPanel.Contains(v_accessLevelID)) // { // AccessLevelsDefinitionsDelPanel.Remove(v_accessLevelID); // actualizar = true; // } // } // else // { // actualizar = true; // POr si cambio la info de readerTZ // if (!AccessLevelsDefinitionsDelPanel.Contains(v_accessLevelID)) // { // AccessLevelsDefinitionsDelPanel.Add(v_accessLevelID); // } // } // if (actualizar) // { // accessLevelID = v_accessLevelID.ToString(); // alName = obtenerAccessLevelName(v_accessLevelID); // string errDesc = ""; // int errCode = -1; // WebServiceAPI.GetInstance().AddAccessLevel(alName, panelID, organizationID, accessLevelID, v_strTZReader, m_IsDownloadInProgress.ToString(), out errDesc, out errCode); // if (errCode != (int)StatusCode.OK) // res = "FAIL"; // } // } // catch (Exception ex) // { // Helpers.GetInstance().DoLog("EXCEPCION en addAccessLevel: " + ex.Message); // res = "FAIL"; // } // finally // { // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); // } // return res; //} /// <summary> /// LLega la definicion de un tipo de Holiday. Mandarlo al server. /// Formato: TYPE:LNL_ADDHOLIDAYS,DEVICEID:(.*),ORGANIZATION:(.*),HOLIDAYSDATA:(.*),ISDOWNLOADINGDB:(.*) /// </summary> /// <param name="v_panelID"></param> /// <param name="v_OrganizationID"></param> /// <param name="strHolidayData"></param> public string addHolidays(int v_PanelID, int v_OrgID, string v_strHolidayData, int m_IsDownloadInProgress) { string res = string.Empty; //staticDatamanager.updateConfigurationVariables(); System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); string holidaysNames = obtenerHolidayNames(); string panelID = v_PanelID.ToString(); string organizationID = Helpers.GetInstance().MainOrgID.ToString(); // No toma la de la llamada try { //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); try { string errDesc = ""; int errCode = -1; res = WebServiceAPI.GetInstance().AddHolidays(panelID, organizationID, v_strHolidayData, holidaysNames, m_IsDownloadInProgress.ToString(), out errDesc, out errCode); if (errCode != (int)StatusCode.OK) { res = "FAIL"; } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en AddHolidays: " + ex.Message); res = "FAIL"; } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en AddHolidaysMUTEX: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} return(res); }
public string pollAlutrackForAlarm(int v_panelID, int v_serialnum) { string LNLPanelID = v_panelID.ToString(); string orgID = Helpers.GetInstance().MainOrgID.ToString(); try { string datosAlarma = PoolGetAlarm.GetInstance().GetAlarm(int.Parse(LNLPanelID)); if (!String.IsNullOrEmpty(datosAlarma)) { Helpers.GetInstance().DoLog("Datos de Alarma de PanelID=" + LNLPanelID + "=" + datosAlarma); } return(datosAlarma); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en pollAlutrackForAlarm: " + ex.Message); return("FAIL"); } }
public int addAcceso(string deviceName, List <Acceso> accesos) { int cantAdded = 0; try { // NOTA: El chequeo que correspondan a accesos de paneles supérvisados por este LnlCommService // se hace inmediatamente despues de pedir los accesos, en GetAccesosGeneral() Helpers.GetInstance().DoLog("Va a agregar " + accesos.Count + " accesos a accesosDevices"); lock (accesosDevices) { if (!accesosDevices.ContainsKey(deviceName)) { accesosDevices.Add(deviceName, new Queue <Acceso>()); } foreach (Acceso acceso in accesos) // No repetir el encolado si ya fue encolado. { if (existeEnAnteriores(deviceName, acceso)) { continue; // Lo descarta si ya se encolo antes. } if (existeEnActuales(deviceName, acceso)) { continue; // Lo descarta si ya se encolo ahora. } accesosDevices[deviceName].Enqueue(acceso); Helpers.GetInstance().DoLog("Encolados accesos de " + deviceName + ": Nombre=" + acceso.Nombre + " Apellido=" + acceso.Apellido + " Tarjeta=" + acceso.Tarjeta + " Hora=" + acceso.Hora + " TipoAcceso=" + acceso.tipoAcceso); cantAdded++; } } } catch (Exception ex) { Helpers.GetInstance().DoLog("Excepcion en addAcceso: " + ex.Message); } return(cantAdded); }
/// <summary> /// Envia las asignaciones de serialnum a ID de accesos. /// </summary> /// <param name="serialsIDs"></param> public void sendIDSerials(string serialsIDs) { try { PoolSetAcceso.GetInstance().addSetAcceso(serialsIDs); Helpers.GetInstance().DoLog("Hecho addAcceso de: " + serialsIDs); if (PoolGetAcceso.GetInstance().isEmpty()) { //Helpers.GetInstance().DoLog("isEmpty dio True"); PoolSetAcceso.GetInstance().ContinuarPool(); // OK darlos de alta en AlutelMobility } //else // Helpers.GetInstance().DoLog("isEmpty dio False"); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en SendIDSerials: " + ex.Message); } Helpers.GetInstance().DoLog("Llamo a sendIDSerials con: " + serialsIDs); }
bool obtenerDatosEmpleado(string PersonID, ref string name, ref string lastname, ref string SSNO) { bool res = false; try { int errCode = -1; string errDesc = ""; Employee e = WebServiceAPI.GetInstance().ObtenerDatosEmpleado(PersonID, out errDesc, out errCode); if (e != null) { name = e.Nombre; lastname = e.Apellido; SSNO = e.NumeroDocumento; } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en obtenerDatosEmpleado: " + ex.Message); } return(res); }
/// <summary> /// Obtiene los datos relevantes al badge especificado utilizando DataConduit, incluyendo la foto /// y los transmite al server con la expresion: /// Nueva version: pasaje de Badge a string para soporte de numeros de 64 bits. /// </summary> /// <param name="v_badge"></param> /// <param name="v_panelID"></param> /// <returns></returns> //public string addEmployee(string v_badge, int v_panelID, string v_newAccesslevels, string v_fechaActivacion, string v_fechaDesactivacion, string v_PIN, int m_IsDownloadInProgress) //{ // string res = "OK"; // try // { // // Nota: solo interesan las fechas. NO las horas // string v_newDates = v_fechaActivacion.Split(' ')[0] + "," + v_fechaDesactivacion.Split(' ')[0]; // Solo las fechas, no las horas. // Helpers.GetInstance().DoLog("Panel: " + v_panelID.ToString() + "- AddEmployee, badge=" + v_badge + " accesslevels=" + v_newAccesslevels + " activationDates=" + v_newDates + " IsDownloadInProgress=" + m_IsDownloadInProgress); // // Primero le saco la coma de más que viene desde C++. // v_newAccesslevels = v_newAccesslevels.TrimEnd(','); // string errDesc = ""; // int errCode =(int)StatusCode.NOT_FOUND; // string desdeLenel = WebServiceAPI.GetInstance().ObtenerAccessLevelsDesdeLenel(v_badge,out errDesc, out errCode); // if (errCode != (int)StatusCode.OK) // { // Helpers.GetInstance().DoLog("Error al obtenerAccessLevelsDesdeLenel para la tarjeta " + v_badge + " errDesc=" + errDesc + " errCode=" + errCode.ToString()); // } // else // { // v_newAccesslevels = desdeLenel.TrimEnd(','); // Helpers.GetInstance().DoLog("AccessLevels de la tarjeta " + v_badge + ":obtenidos desde Lenel:" + desdeLenel); // } // string v_prevAccessLevels = ""; // string v_prevDates = ""; // //Helpers.GetInstance().DoLog("Panel: " + v_panelID.ToString() + "- Cantidad de BadgeAccessLevels: " + BadgeAccessLevels.Count.ToString()); // if (m_IsDownloadInProgress == 0) // Si esta haciendo DownloadDB, genero todos los Add // { // if (!BadgeAccessLevels.ContainsKey(v_badge)) // { // errDesc = ""; // errCode = (int)StatusCode.OK; // // Va a la base AlutelMobility para obtener los ids de accessLevels Lenel que tiene la tarjeta en la base. // v_prevAccessLevels = WebServiceAPI.GetInstance().ObtenerAccessLevelsLenelDesdeAlutelMobility(v_badge, Helpers.GetInstance().MainOrgID, out errDesc, out errCode); // if (errCode != (int)StatusCode.OK) // Helpers.GetInstance().DoLog("ERROR en addEmployee al obtenerBadgeAccessLevelsLenel de la tarjeta:" + v_badge + " :" + errDesc); // v_prevDates = WebServiceAPI.GetInstance().ObtenerBadgeActivationDates(v_badge, Helpers.GetInstance().MainOrgID, out errDesc, out errCode); // if (errCode != (int)StatusCode.OK) // Helpers.GetInstance().DoLog("ERROR en addEmployee al ObtenerBadgeActivationDates de la tarjeta:" + v_badge + " :" + errDesc); // BadgeAccessLevels.Add(v_badge, v_prevAccessLevels + "|" + v_prevDates); // } // else // { // try { v_prevAccessLevels = BadgeAccessLevels[v_badge].Split('|')[0]; } // catch (Exception) { } // try { v_prevDates = BadgeAccessLevels[v_badge].Split('|')[1]; } // catch (Exception) { } // } // } // Helpers.GetInstance().DoLog("PrevAccessLevels de " + v_badge + "=" + v_prevAccessLevels); // Helpers.GetInstance().DoLog("PrevDates de " + v_badge + "=" + v_prevDates); // BadgeAccessLevels[v_badge] = v_newAccesslevels + "|" + v_newDates; // Actualiza los AL y las fechas actuales. // if (!ALInitialized) // { // AccessLevelsDefinitionsDelPanel = Helpers.GetInstance().obtenerAccessLevelPanel(v_panelID); // ALInitialized = true; // } // bool doAdd = false; // bool doErase = false; // string[] newAccessLevels = v_newAccesslevels.Split(','); // string[] prevAccesslevels = v_prevAccessLevels.Split(','); // List<string> prevAccessLevelsDelPanel = new List<string>(); // Solo interesan los de este panel // List<string> newAccessLevelsDelPanel = new List<string>(); // Solo interesan los de este panel // bool tiene = false; // bool para determinar si en esta definicion tiene accesslevels del panel // foreach (string s in newAccessLevels) // { // if (!String.IsNullOrEmpty(s)) // { // if (AccessLevelsDefinitionsDelPanel.Contains(Convert.ToInt32(s))) // { // tiene = true; // Tiene un accessLevel del panel // newAccessLevelsDelPanel.Add(s); // } // } // } // bool tenia = false; // bool para determinar si ya tenía accesslevels del panel // foreach (string s in prevAccesslevels) // { // if (!String.IsNullOrEmpty(s)) // { // if (AccessLevelsDefinitionsDelPanel.Contains(Convert.ToInt32(s))) // { // tenia = true; // Tenía un accessLevel del panel // prevAccessLevelsDelPanel.Add(s); // } // } // } // // Si tenía accessLevel del Panel y ahora no tiene, mando el LNL_DelEmployee // if (tenia && !tiene) // doErase = true; // // Chequeo del add: Solo si cambio algun accessLeveldel panel: alguno nuevo o alguno se borro. // // Elimino de la lista de nuevos los viejos // // Elimino de la lista de viejos los nuevos // // Si ambas estan vacias entonces no hago add // List<string> AlErased = new List<string>(); // foreach (string s in newAccessLevelsDelPanel) // { // if (prevAccessLevelsDelPanel.Contains(s)) // { // prevAccessLevelsDelPanel.Remove(s); // AlErased.Add(s); // } // } // foreach (string s in AlErased) // { // if (newAccessLevelsDelPanel.Contains(s)) // { // newAccessLevelsDelPanel.Remove(s); // } // } // if (!doErase) // si no voy a borrarlo por accesslevels, y los accesslevels o las fechas difieren: hago un add // { // if ((v_prevDates != v_newDates) && (!String.IsNullOrEmpty(v_prevDates))) // Solo comparo la parte de los dias. // doAdd = true; // if ((newAccessLevelsDelPanel.Count > 0) || (prevAccessLevelsDelPanel.Count > 0)) // doAdd = true; // } // // Paso final: Enviar los add o erase. // if (doAdd) // { // res = enviarAddEmployee(v_badge, v_panelID, v_newAccesslevels, v_fechaActivacion, v_fechaDesactivacion,v_PIN, m_IsDownloadInProgress); // if (!ListaBadgesAlutelMobility.Contains(v_badge)) // ListaBadgesAlutelMobility.Add(v_badge); // } // if (doErase) // { // enviarEraseEmployee(v_badge, v_panelID, v_newAccesslevels, v_fechaActivacion, v_fechaDesactivacion); // } // if ((!doAdd) && (!doErase)) // Helpers.GetInstance().DoLog("AddEmployee de la tarjeta: " + v_badge + " no genero ni Add ni Erase. v_newAccesslevels= " + v_newAccesslevels + " v_prevAccessLevels = " + v_prevAccessLevels + " accesslevelsDelpanel=" + string.Join<int>(",",AccessLevelsDefinitionsDelPanel.ToArray())); // } // catch (Exception ex) // { // Helpers.GetInstance().DoLog("EXCEPCION en addEmployee: " + ex.Message); // res = "FAIL"; // } // return res; //} /// <summary> /// Envia LNL_ERASEEMPLOYEE al server para que se envie directamente al HH /// </summary> /// <param name="v_badge"></param> /// <param name="v_panelID"></param> /// <param name="v_newAccesslevels"></param> /// <param name="v_fechaActivacion"></param> /// <param name="v_fechaDesactivacion"></param> private void enviarEraseEmployee(string v_badge, int v_panelID, string v_newAccesslevels, string v_fechaActivacion, string v_fechaDesactivacion) { System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); try { //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); int errCode = 0; string errDesc = ""; WebServiceAPI.GetInstance().EraseEmployee(v_badge, v_panelID.ToString(), Helpers.GetInstance().MainOrgID.ToString(), v_newAccesslevels, v_fechaActivacion, v_fechaDesactivacion, out errDesc, out errCode); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en enviarEraseEmployee: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} }
/// <summary> /// Recibe un pedido de eventos desde un Panel LENEL /// </summary> public string pollAlutrackForEvent(string v_panelName, int v_panelID, int v_serialnum) { string deviceID = v_panelID.ToString(); string deviceName = v_panelName; string orgID = Helpers.GetInstance().MainOrgID.ToString(); try { string datosAccesos = PoolGetAcceso.GetInstance().GetAccesos(deviceName); if (!String.IsNullOrEmpty(datosAccesos)) { Helpers.GetInstance().DoLog("GetAccesos de " + v_panelName + "=" + datosAccesos); } return(datosAccesos); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en pollAlutrackForEvent: " + ex.Message); return("FAIL"); } }
/// <summary> /// Usa DataConduit para obtener los datos correspondientes a la ultima visita asociada a v_personID (que es un visitor) /// Luego manda toda la info al Server. /// </summary> /// <param name="v_personID"></param> private void sendScheduledVisit(string v_personID, string visitorName, string visitorLastname, string visitorSSNO, string v_badge, string v_organizationID) { string hostID = ""; DateTime scheduled_TimeIN = new DateTime(); DateTime scheduled_TimeOUT = new DateTime(); DateTime Time_IN = new DateTime(); string errDesc = ""; int errCode = -1; bool res = WebServiceAPI.GetInstance().ObtenerDatosUltimaVisita(v_personID, out hostID, out scheduled_TimeIN, out scheduled_TimeOUT, out Time_IN, out errDesc, out errCode); string hostName = ""; string hostLastname = ""; string hostSSNO = ""; bool res2 = obtenerDatosEmpleado(hostID, ref hostLastname, ref hostLastname, ref hostSSNO); if (res && res2) { //Helpers.GetInstance().mutexTCP_ACCESS.WaitOne(); try { errCode = -1; errDesc = ""; WebServiceAPI.GetInstance().AddScheduledVisit(v_organizationID, v_badge, hostName, hostLastname, hostSSNO, visitorName, visitorLastname, visitorSSNO, scheduled_TimeIN.ToString("yyyy-MM-dd HH:mm:ss"), scheduled_TimeOUT.ToString("yyyy-MM-dd HH:mm:ss"), Time_IN.ToString("yyyy-MM-dd HH:mm:ss"), out errDesc, out errCode); } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en sendScheduledVisit: " + ex.Message); } //finally //{ // Helpers.GetInstance().mutexTCP_ACCESS.ReleaseMutex(); //} } }
public bool chequearRangoActivo(string v_fechaActivacion, string v_fechaDesactivacion) { DateTime activationDate_D = String.IsNullOrEmpty(v_fechaActivacion) ? new DateTime(1900, 1, 1) : Helpers.GetInstance().generarDateTime(v_fechaActivacion); DateTime deactivationDate_D = String.IsNullOrEmpty(v_fechaDesactivacion) ? new DateTime(2100, 1, 1) : Helpers.GetInstance().generarDateTime(v_fechaDesactivacion); DateTime ahora = DateTime.Now; // Para la verificacion del activation/deactivation date return((activationDate_D < ahora) && (deactivationDate_D > ahora)); }
void enviarListaSetAccesos() { Helpers.GetInstance().DoLog("Comienza Task de envio de SET Accesos..."); while (!finalizarPoolSetAccesos.WaitOne(2000)) { Helpers.GetInstance().DoLog("Esperando datos de accesos de Mobiles"); continuarPoolSetAcceso.WaitOne(); // Espera que haya datos... continuarPoolSetAcceso.Reset(); Helpers.GetInstance().DoLog("Hay datos encolados"); if (!finalizarPoolSetAccesos.WaitOne(0)) { try { if (listaIDSerials != null) { string IDSerialsToSend = ""; lock (listaIDSerials) { while (listaIDSerials.Any()) { string IDS = listaIDSerials.Dequeue(); if (!String.IsNullOrEmpty(IDS)) { IDSerialsToSend += IDS.TrimEnd('|') + "|"; } } } if (!String.IsNullOrEmpty(IDSerialsToSend)) { string errDesc = ""; int errCode = -1; bool done = false; while (!done && !finalizarPoolSetAccesos.WaitOne(0)) { WebServiceAPI.GetInstance().AssignSerialNums(IDSerialsToSend, out errDesc, out errCode); if (errCode == (int)StatusCode.OK) { done = true; } else { Helpers.GetInstance().DoLog("Error al enviar serials de accesos: " + IDSerialsToSend + " " + errDesc); Thread.Sleep(1000); } } if (done) { Helpers.GetInstance().DoLog("Enviados los IDSerials:" + IDSerialsToSend); } PoolGetAcceso.GetInstance().ContinuarPoolGetAcceso(); // Como la llamada es bloqueante, si llega aca quiere decir que los envio todos. } } } catch (Exception ex) { Helpers.GetInstance().DoLog("EXCEPCION en enviarListaSetAccesos:" + ex.Message); } } } Helpers.GetInstance().DoLog("Finaliza Thread de actualizacion de SetAcceso"); }
void Stop() { Helpers.GetInstance().DoLog("PoolSetAcceso.Stop()"); finalizarPoolSetAccesos.Set(); continuarPoolSetAcceso.Set(); }
//public string getName() //{ // return m_Name; //} //public void setName(string v_name) //{ // m_Name = v_name; //} //public int getPanelID() //{ // return m_PanelID; //} //public void setPanelID(int v_ID) //{ // m_PanelID = v_ID; //} // Llamada al WS que chequea la disponibilidad del panel en la licencia // Devuelve OK o el mensaje a mostrar en la alarma de Lenel public string altaPanelWS(string panelName, int panelID) { string res = WebServiceAPI.GetInstance().AddMobile(panelName, panelID, Helpers.GetInstance().MainOrgID.ToString()); return(res); }
public void TestCall(string texto) { Helpers.GetInstance().DoLog("Llama a TestCall con: " + texto); }