/// <Docs>To be added.</Docs> /// <returns>To be added.</returns> /// <summary> /// Dos the in background. /// </summary> /// <param name="parameters">Parameters.</param> protected override List <ISerialNumber> DoInBackground(List <ISerialNumber> parameters) { var ret = new List <ISerialNumber>(); try { var task = new RequestCalibrationCertificates(ion, parameters.ToArray()).Request(); task.Wait(); foreach (var cr in task.Result) { Log.D(this, "Resolving result: " + cr.serialNumber); if (cr.success) { var file = ion.calibrationCertificateFolder.GetFile(cr.serialNumber + " Certification.pdf", EFileAccessResponse.ReplaceIfExists); UpdateLastNistDate(cr.certificate).Wait(); try { using (var s = file.OpenForWriting()) { GaugeDeviceCertificatePdfExporter.Export(ion, cr.certificate, s); } } catch (Exception e) { Log.E(this, "Failed to export calibration pdf for " + cr.serialNumber, e); file.Delete(); ret.Add(cr.serialNumber); } } else { ret.Add(cr.serialNumber); } } return(ret); } catch (Exception e) { Log.E(this, "Failed to request calibration certificates.", e); return(parameters); } }
/// <summary> /// Starts the task that will download the calibration certificates. /// </summary> /// <returns>The the things.</returns> private Task DoTheThings(CancellationTokenSource source, List <ISerialNumber> failures, Action onLoad) { return(Task.Factory.StartNew(() => { var ion = AppState.context; var serials = new List <ISerialNumber>(); foreach (var device in ion.deviceManager.devices) { serials.Add(device.serialNumber); } /////////testing for specific nist certificate data//////////// // var iserial = SerialNumberExtensions.ParseSerialNumber("S816H502"); // serials.Add(iserial); //iserial = SerialNumberExtensions.ParseSerialNumber("S516H214"); //serials.Add(iserial); //////////////// Log.D(this, Arrays.AsString <ISerialNumber>(serials.ToArray())); var task = new ION.Core.Net.RequestCalibrationCertificates(ion, serials.ToArray()); //var task = new RequestCalibrationCertificatesTask(ion, serials.ToArray()); task.tokenSource = source; foreach (var result in task.Request().Result) { if (!result.success) { failures.Add(result.serialNumber); continue; } var file = ion.calibrationCertificateFolder.GetFile(result.serialNumber + " Certification.pdf", EFileAccessResponse.ReplaceIfExists); var stream = file.OpenForWriting(); try { GaugeDeviceCertificatePdfExporter.Export(ion, result.certificate, stream); Log.D(this, "Device nist date is " + result.certificate.lastTestCalibrationDate.ToShortDateString()); var existing = ion.database.Query <ION.Core.Database.LoggingDeviceRow>("SELECT * FROM LoggingDeviceRow WHERE serialNumber = ?", result.serialNumber.rawSerial); if (existing.Count.Equals(0)) { Log.D(this, "Creating new entry for device: " + result.serialNumber.rawSerial + " with a calibration date of: " + result.certificate.lastTestCalibrationDate.ToShortDateString()); var addDevice = new ION.Core.Database.LoggingDeviceRow() { serialNumber = result.serialNumber.rawSerial, nistDate = result.certificate.lastTestCalibrationDate.ToShortDateString() }; ion.database.Insert(addDevice); } else { Log.D(this, "Updated entry for device: " + result.serialNumber.rawSerial + " with a calibration date of: " + result.certificate.lastTestCalibrationDate.ToShortDateString()); ion.database.Query <ION.Core.Database.LoggingDeviceRow>("UPDATE LoggingDeviceRow SET nistDate = ? WHERE serialNumber = ?", result.certificate.lastTestCalibrationDate.ToShortDateString(), result.serialNumber.rawSerial); } } catch (Exception e) { Log.E(this, "Failed to export certificate.", e); file.Delete(); failures.Add(result.serialNumber); } finally { stream?.Close(); } ion.PostToMain(() => { Log.D(this, "Resolved a certification for: " + result.serialNumber); onLoad(); }); } })); }