public void LoadSesionWaitingRoom(string patientServiceType, string patientDocument) { patientServicesType = patientServiceType; patientDocuments = patientDocument; // Se llena la información del paciente. object[] noteKeys = { "onLineFrom", "id" }; object[] noteValues = { ExistsPatient != null ? ExistsPatient : ServerValue.Timestamp, patientDocument }; var patient = NSDictionary.FromObjectsAndKeys(noteValues, noteKeys, noteKeys.Length); // Envío la información del paciente. database.GetChild($"queques/{patientServiceType}/patients/{patientDocument}").UpdateChildValues(patient); ExistsPatient = ExistsPatient != null ? ExistsPatient : new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(); // Si el paciente se desconecta, se limpia la información de la base de datos. database.GetChild($"queques/{patientServiceType}/patients/{patientDocument}").RemoveValueOnDisconnect(); database.GetChild($"display/{patientDocument}").RemoveValueOnDisconnect(); // Me suscribo a la información relevante para el paciente conectado. var messages = database.GetChild($"display/{patientDocument}"); handleReferencePatient = messages.ObserveEvent(DataEventType.Value, (snapshot) => { // Do magic with the folder data PatientRealTime patientLocal = null; if (snapshot.GetValue() != NSNull.Null) { var folderData = snapshot.GetValue <NSDictionary>(); var position = folderData.ValueForKey((NSString)"position"); var room = folderData.ValueForKey((NSString)"room"); var doctor = folderData.ValueForKey((NSString)"doctor"); var onLineFrom = folderData.ValueForKey((NSString)"onLineFrom"); patientLocal = new PatientRealTime { Position = position == null ? 1 : Convert.ToInt32(position.ToString()), Doctor = doctor == null ? 0 : Convert.ToInt32(doctor.ToString()), OnLineFrom = onLineFrom?.ToString(), Room = room?.ToString() }; MessagingCenter.Send(KEY_MESSAGE, KEY_MESSAGE, patientLocal); } }); }
public void OnDataChange(DataSnapshot snapshot) { if (snapshot.Value != null) { var position = snapshot.Child("position").Value; var room = snapshot.Child("room").Value; var doctor = snapshot.Child("doctor").Value; var onLineFrom = snapshot.Child("onLineFrom").Value; var patient = new PatientRealTime { Position = (int?)position, Doctor = (int?)doctor, OnLineFrom = onLineFrom?.ToString(), Room = room?.ToString() }; MessagingCenter.Send(QueingFirebaseService.KEY_MESSAGE, QueingFirebaseService.KEY_MESSAGE, patient); } }