public async void UpdateUi(bool calledFromUiThread = false) { if (!calledFromUiThread) { Activity.RunOnUiThread(() => UpdateUi(true)); return; } this.ShowSmsSendingStatus(); _txtCustomerName.Text = _customerSearchResult.FullName; _txtCustomerPhone.Text = _customerSearchResult.Phone; _txtCustomerProduct.Text = _customerSearchResult.Product.DisplayName; bool connectedToInternet = Resolver.Instance.Get <IConnectivityService>().HasConnection(); RegistrationStatusOverview overview = null; try { ShowSteps(false); _txtRegistrationProcessSteps.Text = GetString(Resource.String.loading_status); _loadingAnimation.Visibility = ViewStates.Visible; if (connectedToInternet) { var status = await _customerSearchResult.GetStatusAsync(); Customer c = new Customer { Id = _customerSearchResult.Id, Phone = _customerSearchResult.Phone, FirstName = _customerSearchResult.FullName, LastName = _customerSearchResult.LastName }; if (status != null && status.Steps != null && status.AdditionalInfo != null) { overview = await _registrationStatusService.GetVisibleSteps(c, status.Steps, status.AdditionalInfo); Intent callerIntent = new Intent(this.Activity, typeof(CustomerListView)); callerIntent.PutExtra(CustomerListView.CustomerStatusBundled, JsonConvert.SerializeObject(status)); this.Activity.SetResult(Result.Ok, callerIntent); } } else { await _registrationStatusService.GetVisibleSteps(_customerSearchResult.Id); } } catch (Exception exception) { Logger.Error(exception); } finally { // always hide the loader _loadingAnimation.Visibility = ViewStates.Gone; } if (FragmentWasUnloaded) { return; } if (!connectedToInternet) { CriteriaBuilder criteriaBuilder = new CriteriaBuilder(); var regStatus = await new CustomerRegistrationStepsStatusController() .GetManyByCriteria( criteriaBuilder .Add("CustomerId", _customerSearchResult.Id)); if (regStatus != null) { var status = regStatus.OrderByDescending(reg => reg.Modified).FirstOrDefault(); if (status != null && !status.AdditionalInfo.IsBlank()) { _txtExtraInformation.Text = status.AdditionalInfo; _txtExtraInformation.Visibility = ViewStates.Visible; } } } else { if (overview != null && overview.HasCurrentStep && !overview.CurrentStep.AdditionalInfo.IsBlank()) { _txtExtraInformation.Text = overview.CurrentStep.AdditionalInfo; _txtExtraInformation.Visibility = ViewStates.Visible; } } if (overview == null) { ShowSteps(false); _txtSmsSendInfo.Visibility = SmsInfoViewState; } else { ShowSteps(true); _txtRegistrationProcessSteps.Text = string.Format( GetString(Resource.String.registration_process_steps), overview.CurrentStepNo != 0 ? overview.CurrentStepNo : overview.TotalSteps, overview.TotalSteps); if (overview.HasPreviousStep) { _linStepDoneNo.Visibility = ViewStates.Visible; _lineStepDone.Visibility = ViewStates.Visible; _txtStepDoneNo.Text = overview.PreviousStep.StepNumber.ToString(); _txtStepDone.Text = overview.PreviousStep.StepName; } else { _linStepDoneNo.Visibility = ViewStates.Gone; _lineStepDone.Visibility = ViewStates.Gone; } if (overview.HasCurrentStep) { _linStepCurrentNo.Visibility = ViewStates.Visible; _lineStepCurrent.Visibility = ViewStates.Visible; _txtStepCurrentNo.Text = overview.CurrentStep.StepNumber.ToString(); _txtStepCurrent.Text = overview.CurrentStep.StepName; } else { _linStepCurrentNo.Visibility = ViewStates.Gone; _lineStepCurrent.Visibility = ViewStates.Gone; } if (overview.HasFutureStep) { _linStepFutureNo.Visibility = ViewStates.Visible; _txtStepFutureNo.Text = overview.FutureStep.StepNumber.ToString(); _txtStepFuture.Text = overview.FutureStep.StepName; } else { _lineStepCurrent.Visibility = ViewStates.Gone; _linStepFutureNo.Visibility = ViewStates.Gone; } } ActivityBase activity = Activity as ActivityBase; if (activity != null) { activity.SetScreenTitle(_customerSearchResult.FullName); } }
public void GetVisibleStepsTest() { // Lists are unordered to check against that. var service = new RegistrationStatusService(); var mockDataService = Substitute.For <IDataService <CustomerRegistrationStepsStatus> >(); service.CustomerRegistrationStepsStatusController = mockDataService; List <CustomerRegistrationStepsStatus> stepList = new List <CustomerRegistrationStepsStatus> { new CustomerRegistrationStepsStatus() { StepName = "Step 2", StepNumber = 2, StepStatus = "NotStarted" }, new CustomerRegistrationStepsStatus() { StepName = "Step 1", StepNumber = 1, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 3", StepNumber = 3, StepStatus = "NotStarted" } }; var dataServiceResponse = Task.FromResult(stepList); mockDataService.GetManyByCriteria(null).ReturnsForAnyArgs(dataServiceResponse); var result = service.GetVisibleSteps(Guid.Empty); Assert.That(result.PreviousStep.StepNumber, Is.EqualTo(1)); Assert.That(result.CurrentStep.StepNumber, Is.EqualTo(2)); Assert.That(result.FutureStep.StepNumber, Is.EqualTo(3)); Assert.That(result.HasPreviousStep, Is.True); Assert.That(result.HasCurrentStep, Is.True); Assert.That(result.HasFutureStep, Is.True); Assert.That(result.CurrentStepNo, Is.EqualTo(2)); Assert.That(result.TotalSteps, Is.EqualTo(3)); stepList = new List <CustomerRegistrationStepsStatus> { new CustomerRegistrationStepsStatus() { StepName = "Step 1", StepNumber = 1, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 4", StepNumber = 4, StepStatus = "NotStarted" }, new CustomerRegistrationStepsStatus() { StepName = "Step 3", StepNumber = 3, StepStatus = "NotStarted" }, new CustomerRegistrationStepsStatus() { StepName = "Step 5", StepNumber = 5, StepStatus = "NotStarted" }, new CustomerRegistrationStepsStatus() { StepName = "Step 2", StepNumber = 2, StepStatus = "Done" } }; // set new mock mockDataService.GetManyByCriteria(null).ReturnsForAnyArgs(Task.FromResult(stepList)); result = service.GetVisibleSteps(Guid.Empty); Assert.That(result.PreviousStep.StepNumber, Is.EqualTo(2)); Assert.That(result.CurrentStep.StepNumber, Is.EqualTo(3)); Assert.That(result.FutureStep.StepNumber, Is.EqualTo(4)); Assert.That(result.HasPreviousStep, Is.True); Assert.That(result.HasCurrentStep, Is.True); Assert.That(result.HasFutureStep, Is.True); Assert.That(result.CurrentStepNo, Is.EqualTo(3)); Assert.That(result.TotalSteps, Is.EqualTo(5)); // no previous step available stepList = new List <CustomerRegistrationStepsStatus> { new CustomerRegistrationStepsStatus() { StepName = "Step 2", StepNumber = 2, StepStatus = "NotStarted" }, new CustomerRegistrationStepsStatus() { StepName = "Step 3", StepNumber = 3, StepStatus = "NotStarted" }, new CustomerRegistrationStepsStatus() { StepName = "Step 1", StepNumber = 1, StepStatus = "NotStarted" }, new CustomerRegistrationStepsStatus() { StepName = "Step 4", StepNumber = 4, StepStatus = "NotStarted" }, new CustomerRegistrationStepsStatus() { StepName = "Step 5", StepNumber = 5, StepStatus = "NotStarted" } }; // set new mock mockDataService.GetManyByCriteria(null).ReturnsForAnyArgs(Task.FromResult(stepList)); result = service.GetVisibleSteps(Guid.Empty); Assert.That(result.PreviousStep, Is.Null); Assert.That(result.CurrentStep.StepNumber, Is.EqualTo(1)); Assert.That(result.FutureStep.StepNumber, Is.EqualTo(2)); Assert.That(result.HasPreviousStep, Is.False); Assert.That(result.HasCurrentStep, Is.True); Assert.That(result.HasFutureStep, Is.True); Assert.That(result.CurrentStepNo, Is.EqualTo(1)); Assert.That(result.TotalSteps, Is.EqualTo(5)); // no previous step available stepList = new List <CustomerRegistrationStepsStatus> { new CustomerRegistrationStepsStatus() { StepName = "Step 1", StepNumber = 1, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 2", StepNumber = 2, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 3", StepNumber = 3, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 4", StepNumber = 4, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 5", StepNumber = 5, StepStatus = "NotStarted" } }; // set new mock mockDataService.GetManyByCriteria(null).ReturnsForAnyArgs(Task.FromResult(stepList)); result = service.GetVisibleSteps(Guid.Empty); Assert.That(result.PreviousStep.StepNumber, Is.EqualTo(4)); Assert.That(result.CurrentStep.StepNumber, Is.EqualTo(5)); Assert.That(result.FutureStep, Is.Null); // all done stepList = new List <CustomerRegistrationStepsStatus> { new CustomerRegistrationStepsStatus() { StepName = "Step 1", StepNumber = 1, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 2", StepNumber = 2, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 3", StepNumber = 3, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 4", StepNumber = 4, StepStatus = "Done" }, new CustomerRegistrationStepsStatus() { StepName = "Step 5", StepNumber = 5, StepStatus = "Done" } }; // set new mock mockDataService.GetManyByCriteria(null).ReturnsForAnyArgs(Task.FromResult(stepList)); result = service.GetVisibleSteps(Guid.Empty); Assert.That(result.PreviousStep.StepNumber, Is.EqualTo(5)); Assert.That(result.CurrentStep, Is.Null); Assert.That(result.FutureStep, Is.Null); Assert.That(result.HasPreviousStep, Is.True); Assert.That(result.HasCurrentStep, Is.False); Assert.That(result.HasFutureStep, Is.False); Assert.That(result.CurrentStepNo, Is.EqualTo(0)); Assert.That(result.TotalSteps, Is.EqualTo(5)); }