// 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); }
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); }
// 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); }
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); }
// 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); }
// 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); } }
public void OnRetrievingSaturn5WithInvalidLastUserDataCompleted(object sender, Saturn5EventArgs e) { this.OnRetrievingUserDataBegan(sender, new UserUsernameEventArgs(e.Saturn5.LastSeenUsername)); this.OnRetrievingSaturn5DataCompleted(sender, new Saturn5EventArgs(e.Saturn5)); }