private static async Task <FaultReport> SendFaultReport(Sensor sensor, SensorFault fault, DateTime timestamp) { if (fault.Type == SensorFaultType.FromTrigger) { try { var trigger = await SensorTriggerAccess.FindSensorTrigger(fault.Id); var template = await FaultReportAccess.FindFaultReportTemplate(trigger.TemplateId); var machine = await MachineAccess.FindMachine(DeviceSettings.ObjectID); var report = new FaultReport { MchCode = machine.MchCode, MchCodeContract = machine.MchCodeContract, ErrDescr = template.Directive, ErrDescrLo = template.FaultDescr, ErrDiscoverCode = template.DiscCode, ErrSymptom = template.SymptCode, PriorityId = template.PrioCode, OrgCode = machine.OrgCode }; report = await FaultReportAccess.SetFaultReport(report); DocumentString document = new DocumentString(); SensorToDocumentString(document, sensor, trigger); var docFileData = await createDocument(report.WoNo, $"report_{sensor.Id}", document); if (dialogCount == 0) { await ShowDialog(sensor, fault, report, docFileData).ContinueWith(task => { Interlocked.Decrement(ref dialogCount); }); } return(report); } catch (Exception) { return(null); } } return(null); }
private static async Task ShowDialog(Sensor sensor, SensorFault fault, FaultReport report, DocumentFileData docFileData) { var dialog = new ContentDialog { Title = "Faulted" }; dialog.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center; dialog.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center; dialog.Loaded += async(sender, e) => { await Task.Delay(4000); dialog.Hide(); }; var panel = new StackPanel(); var text = new TextBlock(); text.Text = $"Sensor '{sensor.Id}' faulted with type: {fault.Type}\n"; if (report == null) { dialog.Title += " (ERROR)"; text.Text += "but failed to send a fault report, check the cloud connection"; } else { text.Text = $"Report generated with Work Order: {report.WoNo} \n Attachement Number: {docFileData.DOC_NO}"; } panel.Children.Add(text); dialog.Content = panel; dialog.SecondaryButtonText = "Close"; dialog.IsSecondaryButtonEnabled = true; if (report != null) { dialog.PrimaryButtonText = "View Report"; dialog.IsPrimaryButtonEnabled = true; dialog.PrimaryButtonCommand = new ActionCommand <object>(o => { ShellPage.Current.ContentNavigate(typeof(FaultReportDetailsPage), report); }); } Interlocked.Increment(ref dialogCount); await dialog.ShowAsync(); }