// Occurs whenever validation of the value provided by the user failed, and the user didn't agree to retry.
            private void OnProvidedSerialNumberValidationFailed(object sender, UserWithSaturn5SerialNumberEventArgs e)
            {
                // Displays appropriate logs informing user about empty serial number input being provided.
                this._consolesServices.OnEmergencyAllocateSaturn5BySerialNumber_ProvidedSerialNumberValidationFailed(sender, e);

                // Close the application.
                this._form.Close();
            }
            // Occurs whenever user pressed enter when appropriate for this UI task validation box is enable,
            // and right before a validation of provided by the user value will begin.
            private void OnProvidedSerialNumberValidationBegan(object sender, UserWithSaturn5SerialNumberEventArgs e)
            {
                // Subscribe to appropriate method of canceling awaiting for input.
                this.ChangeCancelationMethodForSerialNumberInput(e);

                // Displays appropriate logs informing user about empty serial number input being provided.
                this._consolesServices.OnEmergencyAllocateSaturn5BySerialNumber_ProvidedSerialNumberValidationBegan(sender, e);
            }
            private void OnCancelToRetrieveSaturn5Data(object sender, UserWithSaturn5SerialNumberEventArgs e)
            {
                // Displays appropriate logs informing user that application canceled obtaining saturn 5 data.
                this._consolesServices.OnRetrievingSaturn5DataBySerialNumberCanceled(sender, new Saturn5SerialNumberEventArgs(e.SerialNumber));
                this._consolesServices.OnBackToIdle(sender, e);

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

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

                // Enable appropriate controls.
                this._controlsEnabler.OnEmergencyAllocateSaturn5BySerialNumber_CancelToRetrieveSaturn5Data(sender, e);
            }
            // Occurs whenever validation of the value provided by the user has been canceled.
            private void OnProvidedSerialNumberValidationCanceled(object sender, UserWithSaturn5SerialNumberEventArgs e)
            {
                // Stop listening for serial number text box input.
                this.StopListenForSerialNumberInput();

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

                // Displays appropriate logs informing user about empty serial number input being provided.
                this._consolesServices.OnEmergencyAllocateSaturn5BySerialNumber_ProvidedSerialNumberValidationCanceled(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);
            }
            private void OnFailToRetrieveSaturn5Data(object sender, UserWithSaturn5SerialNumberEventArgs e)
            {
                // Displays appropriate logs informing user that application failed to obtaining saturn 5 data .
                this._consolesServices.OnRetrievingSaturn5DataBySerialNumberFailed(sender, new Saturn5SerialNumberEventArgs(e.SerialNumber));

                // Ask user what to do in case of failure
                DialogResult result = MessageBox.Show($"Application failed to obtain saturn 5 data using provided serial number: {e.SerialNumber} {Environment.NewLine}Would You like to Retry or Cancel the operation?", "Failed to obtain saturn 5 data.", MessageBoxButtons.RetryCancel);

                switch (result)
                {
                case DialogResult.Cancel:
                    this.OnCancelToRetrieveSaturn5Data(sender, e);
                    break;

                case DialogResult.Retry:
                    this.OnValidSerialNumberProvided(sender, e);
                    break;
                }
            }
            // Occurs whenever user provided valid serialNumber into the appropriate preBrief text box
            private void OnValidSerialNumberProvided(object sender, UserWithSaturn5SerialNumberEventArgs e)
            {
                // Stop listening for saturn 5 serial number
                this.StopListenForSerialNumberInput();

                // Displays appropriate logs informing user about valid serial number being provided.
                this._consolesServices.OnEmergencyAllocateSaturn5BySerialNumber_ValidSerialNumberProvided(sender, e);

                // Disables saturn serial number input text box
                this._controlsEnabler.OnEmergencyAllocateSaturn5BySerialNumber_ValidSerialNumberProvided(sender, e);

                // Displays appropriate logs informing user that application began to obtaining Saturn5 data based on the provided serial number
                this._consolesServices.OnRetrievingSaturn5DataBySerialNumberBegan(sender, new Saturn5SerialNumberEventArgs(e.SerialNumber));

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

                // Attempt to obtain saturn 5 data...
                Task <Saturn5> getSaturn5Task = this._saturn5Services.GetBySerialNumberAsync(e.SerialNumber);

                getSaturn5Task.ContinueWith((t) =>
                {
                    switch (t.Status)
                    {
                    case TaskStatus.RanToCompletion:
                        // ... execute if succeed to obtain saturn 5 data.
                        this.OnSuccessfullyRetrievedSaturn5Data(sender, new UserWithSaturn5EventArgs(e.User, t.Result));
                        break;

                    case TaskStatus.Faulted:
                        // ... execute if failed to obtain saturn 5 data.
                        this.OnFailToRetrieveSaturn5Data(sender, e);
                        break;

                    case TaskStatus.Canceled:
                        // ... execute if attempt to obtain saturn 5 data has been canceled.
                        this.OnCancelToRetrieveSaturn5Data(sender, e);
                        break;
                    }
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
            private void StopListenForSerialNumberInput()
            {
                if (this.tbxPreBriefSaturn5SerialNumber.InvokeRequired)
                {
                    Action d = new Action(StopListenForSerialNumberInput);
                    if (!_form.IsDisposed)
                    {
                        tbxPreBriefSaturn5SerialNumber.Invoke(d);
                    }
                }
                else if (!this.tbxPreBriefSaturn5SerialNumber.IsDisposed)
                {
                    this.AwaitingSerialNumberCanceled   -= this.OnAwaitingSerialNumberCanceled;
                    this.ValidatingSerialNumberCanceled -= this.OnProvidedSerialNumberValidationCanceled;
                    this.tbxPreBriefSaturn5SerialNumber.InputValidationBegan      -= this.OnProvidedSerialNumberValidationBegan;
                    this.tbxPreBriefSaturn5SerialNumber.InputValidationFailed     -= this.OnProvidedSerialNumberValidationFailed;
                    this.tbxPreBriefSaturn5SerialNumber.InputValidationCanceled   -= this.OnProvidedSerialNumberValidationCanceled;
                    this.tbxPreBriefSaturn5SerialNumber.ValidInputValueProvided   -= this.OnValidSerialNumberProvided;
                    this.tbxPreBriefSaturn5SerialNumber.EmptyInputValueProvided   -= this.OnEmptySerialNumberProvided;
                    this.tbxPreBriefSaturn5SerialNumber.InvalidInputValueProvided -= this.OnInvalidSerialNumberProvided;

                    this._serialNumberValidationCancelationArgs = null;
                }
            }
            private void ChangeCancelationMethodForSerialNumberInput(UserWithSaturn5SerialNumberEventArgs e)
            {
                if (this.tbxPreBriefSaturn5SerialNumber.InvokeRequired)
                {
                    Action <UserWithSaturn5SerialNumberEventArgs> d = new Action <UserWithSaturn5SerialNumberEventArgs>(ChangeCancelationMethodForSerialNumberInput);
                    if (!this.tbxPreBriefSaturn5SerialNumber.IsDisposed)
                    {
                        this.tbxPreBriefSaturn5SerialNumber.Invoke(d, e);
                    }
                }
                else if (!this.tbxPreBriefSaturn5SerialNumber.IsDisposed)
                {
                    this._serialNumberValidationCancelationArgs = e;

                    this.AwaitingSerialNumberCanceled -= this.OnAwaitingSerialNumberCanceled;
                    //this.AwaitingSerialNumberCanceled += this.OnAwaitingSerialNumberCanceled;

                    this.ValidatingSerialNumberCanceled -= this.OnProvidedSerialNumberValidationCanceled;
                    this.ValidatingSerialNumberCanceled += this.OnProvidedSerialNumberValidationCanceled;

                    this.tbxPreBriefSaturn5SerialNumber.InputValidationCanceled -= this.OnProvidedSerialNumberValidationCanceled;
                    this.tbxPreBriefSaturn5SerialNumber.InputValidationCanceled += this.OnProvidedSerialNumberValidationCanceled;
                }
            }
 // Occurs whenever user will provide invalid serial number.
 private void OnInvalidSerialNumberProvided(object sender, UserWithSaturn5SerialNumberEventArgs e)
 {
     // Displays appropriate logs informing user about invalid serial number being provided.
     this._consolesServices.OnEmergencyAllocateSaturn5BySerialNumber_InvalidSerialNumberProvided(sender, e);
 }
예제 #10
0
 // Occurs whenever user will provide empty value in place of valid serial number.
 private void OnEmptySerialNumberProvided(object sender, UserWithSaturn5SerialNumberEventArgs e)
 {
     // Displays appropriate logs informing user about empty serial number input being provided.
     this._consolesServices.OnAllocateSaturn5BySerialNumber_EmptySerialNumberProvided(sender, e);
 }