Пример #1
0
            // Occurs whenever UI task is expecting valid saturn 5 damage fault to be provided.
            private void OnAwaitingFaultReport(object sender, Saturn5EventArgs e)
            {
                // Display appropriate logs informing user that application is await to provide fault report.
                this._consolesServices.OnReportSaturn5Fault_AwaitingFaultReport(sender, e);

                // Enables/Disables appropriate controls.
                this._controlsEnabler.OnReportSaturn5Fault_AwaitingFaultReport(sender, e);

                // Open fault report creation form ..
                FaultReportCreationForm faultReportCreationForm = new FaultReportCreationForm(this._app, e.Saturn5);

                faultReportCreationForm.FormClosed += (s, args) =>
                {
                    // If FaultReportCreationForm has been closed by user pressing save button...
                    if (faultReportCreationForm.Commit)
                    {
                        this.OnDataUploadRequired(sender, new Saturn5FaultReportEventArgs(e.Saturn5, faultReportCreationForm.ByUsername, faultReportCreationForm.Description));
                    }
                    else
                    {
                        // .. execute UITask cancellation ..
                        this.OnAwaitingFaultReportCanceled(sender, e);
                    }
                };

                faultReportCreationForm.ShowDialog(this._form);
            }
            // Occurs whenever saturn 5 data has been successfully retrieved and saturn 5 removal report is awaited
            private void OnAwaitingReport(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs/application state/user instructions text to the user.
                this._consolesServices.OnRemoveSaturn5_AwaitingReport(sender, e);

                // Clears the content of all of the main form text boxes displaying User/Satur5 etc. data.
                this._dataDisplayServices.ClearAllDataDisplayTextBoxes(sender, e);

                // Clears info boxes
                this._dataDisplayServices.ClearInfoBoxes(sender, e);

                // Enables/Disables appropriate controls.
                this._controlsEnabler.OnRemoveSaturn5_AwaitingReport(sender, e);

                // Creates and opens Remove Saturn 5 report creation form
                RemoveSaturn5ReportCreationForm removeSaturn5ReportCreationForm = new RemoveSaturn5ReportCreationForm(this._app, e.Saturn5);

                removeSaturn5ReportCreationForm.FormClosed += ((s, args) =>
                {
                    // If RemoveSaturn5ReportCreationForm has been closed by user pressing save button...
                    if (removeSaturn5ReportCreationForm.Commit)
                    {
                        // .. attempt to commit RemoveSaturn5 data.
                        this.OnReportDataUploadRequired(sender, e);
                    }
                    // otherwise ..
                    else
                    {
                        // Cancel UI task.
                        this.OnAwaitingReportCanceled(sender, e);
                    }
                });

                removeSaturn5ReportCreationForm.ShowDialog(this._form);
            }
Пример #3
0
            public void OnRetrievingSaturn5DataCompleted(object sender, Saturn5EventArgs e)
            {
                if (this._form.InvokeRequired)
                {
                    Action <object, Saturn5EventArgs> d = new Action <object, Saturn5EventArgs>(OnRetrievingSaturn5DataCompleted);
                    if (!this._form.IsDisposed)
                    {
                        this._form.Invoke(d, sender, e);
                    }
                }
                else if (!this._form.IsDisposed)
                {
                    // Pre-Brief tab
                    this.tbxPreBriefSaturn5SerialNumber.Text = e.Saturn5.SerialNumber;
                    this.tbxPreBriefSaturn5Barcode.Text      = e.Saturn5.ShortId;

                    // De-Brief tab
                    this.tbxDeBriefSaturn5SerialNumber.Text = e.Saturn5.SerialNumber;
                    this.tbxDeBriefSaturn5Barcode.Text      = e.Saturn5.ShortId;

                    // Options tab
                    this.tbxOptionsSaturn5SerialNumber.Text = e.Saturn5.SerialNumber;
                    this.tbxOptionsSaturn5Barcode.Text      = e.Saturn5.ShortId;

                    // Saturn 5 Stock Management tab
                    this.tbxSaturn5SMSerialNumber.Text = e.Saturn5.SerialNumber;
                    this.tbxSaturn5SMBarcode.Text      = e.Saturn5.ShortId;
                }
            }
            // Occurs whenever saturn 5 received from IT data get uploaded successfully
            private void OnReportDataUploadSucceed(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs informing user that application successfully committed the data.
                this._consolesServices.OnRemoveSaturn5_ReportDataUploadSucceed(sender, e);

                // Enables/Disables appropriate controls.
                this._controlsEnabler.OnRemoveSaturn5_ReportDataUploadSucceed(sender, e);
            }
Пример #5
0
            // Occurs whenever saturn 5 data got successfully retrieved.
            private void OnSuccessfullyRetrievedSaturn5Data(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs informing user that application completed obtaining saturn 5 data.
                this._consolesServices.OnRetrievingSaturn5DataCompleted(sender, new Saturn5EventArgs(e.Saturn5));

                // Set text boxes according to the current state of the UITask.
                this._dataDisplayServices.OnRetrievingSaturn5DataCompleted(sender, e);

                // Trigger further part of UITask
                this.OnRetrievingUserDataRequired(sender, e);
            }
            // Occurs whenever saturn 5 remove data failed to get uploaded.
            private void OnReportDataUploadFailed(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs informing user about failed data upload.
                this._consolesServices.OnRemoveSaturn5_ReportDataUploadFailed(sender, e);

                // Informs user about application failed to send saturn 5 to IT and as such being unable to continue.
                MessageBox.Show("Application failed to remove saturn 5 unit from the depot stock and must be closed.", "Saturn 5 remove failed.", MessageBoxButtons.OK);

                // Close the application.
                this._form.Close();
            }
            private void OnAttemptToRemoveLastSaturn5(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs informing user about failed data upload.
                this._consolesServices.OnRemoveSaturn5_AttemptToRemoveLastSaturn5(sender, e);

                // Informs user about application failed to send saturn 5 to IT and as such being unable to continue.
                MessageBox.Show("Unable to remove last Saturn 5 unit from the depot stock.", "Unable to remove Saturn 5.", MessageBoxButtons.OK);

                // Cancel saturn 5 removal operation.
                this.OnReportDataUploadCanceled(sender, e);
            }
Пример #8
0
            private void OnAwaitingFaultReportCanceled(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs informing user that application canceled obtaining user data.
                this._consolesServices.OnReportSaturn5Fault_AwaitingFaultReportCanceled(sender, e);
                this._consolesServices.OnBackToIdle(sender, e);

                // Clears the content of all of the main form text boxes displaying User/Satur5 etc. data.
                this._dataDisplayServices.ClearAllDataDisplayTextBoxes(sender, e);

                // Clears info boxes
                this._dataDisplayServices.ClearInfoBoxes(sender, e);

                // Enables/Disables appropriate controls.
                this._controlsEnabler.OnReportSaturn5Fault_AwaitingFaultReportCanceled(sender, e);
            }
Пример #9
0
            // Occurs whenever user provided valid serialNumber into the appropriate text box
            private void OnRetrievingUserDataRequired(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs informing user that application began to obtaining user data based on the provided username
                this._consolesServices.OnRetrievingUserDataBegan(sender, new UserUsernameEventArgs(e.Saturn5.LastSeenUsername));

                // Set text boxes according to the current state of the UITask.
                this._dataDisplayServices.OnRetrievingUserDataBegan(sender, new UserUsernameEventArgs(e.Saturn5.LastSeenUsername));

                // Attempt to obtain user data...
                Task <User> getUserTask = this._userServices.GetAsync(e.Saturn5.LastSeenUsername);

                getUserTask.ContinueWith((t) =>
                {
                    switch (t.Status)
                    {
                    case TaskStatus.RanToCompletion:
                        // ... execute if successfully obtained user data.
                        this.OnSuccessfullyRetrievedUserData(sender, new UserWithSaturn5EventArgs(t.Result, e.Saturn5));
                        break;

                    case TaskStatus.Faulted:
                        // ... get flatten collection of exception responsible for the task failure.
                        IReadOnlyCollection <Exception> innerExceptions = t.Exception.Flatten().InnerExceptions;
                        // If task failed because saturn 5 unit provided for fault reporting
                        // is associated by content of its property LastSeenUsername with invalid user.
                        if (innerExceptions.Any(ex => ex.GetType() == typeof(ArgumentException) && ((ArgumentException)ex).ParamName == "username"))
                        {
                            // .. OnSuccessfullyRetrievedSaturn5HasInvalidLastUser
                            this.OnSuccessfullyRetrievedSaturn5HasInvalidLastUser(sender, e);
                        }
                        // Otherwise if task failed because of some other reason...
                        else
                        {
                            // ... execute if failed to obtain user data.
                            this.OnFailToRetrieveUserData(sender, new UserUsernameWithSaturn5(e.Saturn5.LastSeenUsername, e.Saturn5));
                        }
                        break;

                    case TaskStatus.Canceled:
                        // ... execute if attempt to retrieve user data has been canceled.
                        this.OnCancelToRetrieveUserData(sender, new UserUsernameWithSaturn5(e.Saturn5.LastSeenUsername, e.Saturn5));
                        break;
                    }
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
            // Occurs whenever saturn 5 sent to it report has been provided and required to be committed.
            private void OnReportDataUploadRequired(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs/application state/user instructions text to the user.
                this._consolesServices.OnRemoveSaturn5_UploadingReportDataBegan(sender, e);

                // Attempt to commit saturn 5 remove data
                Task removeSaturn5Task = this._saturn5Services.RemoveAsync(e.Saturn5.SerialNumber);

                removeSaturn5Task.ContinueWith((t) =>
                {
                    switch (t.Status)
                    {
                    case TaskStatus.RanToCompletion:
                        // ... execute if saturn 5 receive from IT has been committed successfully
                        this.OnReportDataUploadSucceed(sender, e);
                        break;

                    case TaskStatus.Faulted:
                        // ... get flatten collection of exception responsible for the task failure.
                        IReadOnlyCollection <Exception> innerExceptions = t.Exception.Flatten().InnerExceptions;

                        // If task failed because saturn 5 unit which removal has been attempted is the last unit in the depot stock...
                        if (innerExceptions.Any(ex => ex.GetType() == typeof(AttemptToRemoveLastSaturn5Exception)))
                        {
                            // .. AttemptToRemoveLastSaturn5Exception
                            this.OnAttemptToRemoveLastSaturn5(sender, e);
                        }
                        // Otherwise if task failed because of some other reason...
                        else
                        {
                            this.OnReportDataUploadFailed(sender, e);
                        }
                        break;

                    case TaskStatus.Canceled:
                        // ... execute if saturn 5 receive from IT has been canceled to commit
                        this.OnReportDataUploadCanceled(sender, e);
                        break;
                    }
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
            // Occurs whenever saturn 5 data of the unit to be sent to IT has been successfully retrieved
            private void OnAwaitingReport(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs/application state/user instructions text to the user.
                this._consolesServices.OnSaturn5SendToIT_AwaitingReport(sender, e);

                // Clears the content of all of the main form text boxes displaying User/Satur5 etc. data.
                this._dataDisplayServices.ClearAllDataDisplayTextBoxes(sender, e);

                // Clears info boxes
                this._dataDisplayServices.ClearInfoBoxes(sender, e);

                // Enables/Disables appropriate controls.
                this._controlsEnabler.OnSaturn5SendToIT_AwaitingReport(sender, e);

                // Creates and opens Saturn 5 send to IT report creation form
                Saturn5SendToITReportCreationForm saturn5SendToITReportCreationForm = new Saturn5SendToITReportCreationForm(this._app, e.Saturn5);

                saturn5SendToITReportCreationForm.FormClosed += ((s, args) =>
                {
                    // If Saturn5SendToITReportCreationForm has been closed by user pressing save button...
                    if (saturn5SendToITReportCreationForm.Commit)
                    {
                        // .. attempt to commit EditSaturn5 data.
                        this.OnReportDataUploadRequired(sender, new Saturn5SendToITEventArgs(
                                                            e.Saturn5.SerialNumber,
                                                            saturn5SendToITReportCreationForm.ConsignmentNumber,
                                                            saturn5SendToITReportCreationForm.IncidentNumber,
                                                            saturn5SendToITReportCreationForm.MovementNote,
                                                            saturn5SendToITReportCreationForm.Surplus));
                    }
                    // otherwise ..
                    else
                    {
                        // Cancel UI task.
                        this.OnAwaitingReportCanceled(sender, e);
                    }
                });

                saturn5SendToITReportCreationForm.ShowDialog(this._form);
            }
Пример #12
0
            // Occurs when successfully retrieved saturn5 data but its last seen username is not recognized.
            private void OnSuccessfullyRetrievedSaturn5HasInvalidLastUser(object sender, Saturn5EventArgs e)
            {
                // Displays appropriate logs informing user that application completed obtaining user and saturn 5 data.
                this._consolesServices.OnRetrievingSaturn5WithInvalidLastUserDataCompleted(sender, e);

                // Set text boxes according to the current state of the UITask.
                this._dataDisplayServices.OnRetrievingSaturn5WithInvalidLastUserDataCompleted(sender, e);

                // Proceed withing UITask
                this.OnAwaitingFaultReport(sender, e);
            }
            // Occurs when user asked to continue when logged user if forced to take responsibility for the unit as last seen username
            // associated with the saturn 5 unit is not valid.
            private void OnEmergencyAllocateSaturn5BySerialNumberRequired(object sender, Saturn5EventArgs e)
            {
                // Attempt to allocate saturn 5 by serial number, ...
                Task emergencyAllocateSaturn5BySerialNumberTask = this._preBriefServices.EmergencyAllocateSaturn5BySerialNumberAsync(e.Saturn5.SerialNumber, this._app.LoggedUsername);

                emergencyAllocateSaturn5BySerialNumberTask.ContinueWith((t) =>
                {
                    switch (t.Status)
                    {
                    // ... if emergency allocated saturn 5...
                    case TaskStatus.RanToCompletion:
                        // ...Succeed.
                        this.OnRetrievingSaturn5DataRequired(sender, new Saturn5SerialNumberEventArgs(e.Saturn5.SerialNumber));
                        break;

                    case TaskStatus.Faulted:
                        // ... Failed.
                        this.OnFailToEmergencyAllocateSaturn5BySerialNumber(sender, new UserUsernameWithSaturn5(e.Saturn5.LastSeenUsername, e.Saturn5));
                        break;

                    case TaskStatus.Canceled:
                        // ... Canceled.
                        this.OnCancelToEmergencyAllocateSaturn5BySerialNumber(sender, new UserUsernameWithSaturn5(e.Saturn5.LastSeenUsername, e.Saturn5));
                        break;
                    }
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
            // Occurs when successfully retrieved saturn5 data but its last seen username is not recognized.
            private void OnSuccessfullyRetrievedSaturn5HasInvalidLastUser(object sender, Saturn5EventArgs e)
            {
                // Ask user what to do in case of saturn 5 unit being allocated to unrecognized/removed user.
                DialogResult result = MessageBox.Show($"Last known user of the Saturn 5 unit serial number: {e.Saturn5.SerialNumber} has unrecognized username {e.Saturn5.LastSeenUsername}. " +
                                                      $"In this case application can continue, however currently logged in user: {this._app.LoggedUser.Username} {this._app.LoggedUser.FirstName} {this._app.LoggedUser.Surname}, " +
                                                      "will be used instead as a last user of the unit. Would You like to Continue (Yes), or Cancel (No).", "Saturn 5 last user is unrecognized.", MessageBoxButtons.YesNo);

                // .. if user asked to cancel....
                if (result == DialogResult.No)
                {
                    this.OnCancelToRetrieveUserData(sender, new UserUsernameWithSaturn5(e.Saturn5.LastSeenUsername, e.Saturn5));
                }
                // .. if user asked to continue....
                else
                {
                    this.OnEmergencyAllocateSaturn5BySerialNumberRequired(sender, e);
                }
            }
Пример #15
0
            public void OnRetrievingSaturn5WithInvalidLastUserDataCompleted(object sender, Saturn5EventArgs e)
            {
                this.OnRetrievingUserDataBegan(sender, new UserUsernameEventArgs(e.Saturn5.LastSeenUsername));

                this.OnRetrievingSaturn5DataCompleted(sender, new Saturn5EventArgs(e.Saturn5));
            }