Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }