Esempio n. 1
0
        private async void BtnImort_Clicked(object sender, EventArgs e)
        {
            if (CanStart("OnImportLearnersClicked"))
            {
                if (await SyncHelper.CheckForWifiOnly())
                {
                    aiLoading.IsVisible = true;
                    aiLoading.IsRunning = true;
                    BtnImport.IsVisible = false;
                    string searchTextSurname   = edSurname.Text;
                    string searchTextForenames = edFornames.Text;
                    string searchTextPostcode  = edPostcode.Text;
                    string searchTextMainOff   = "";
                    if (Settings.GetBool(oPICSConfig.cfgKey_FCA_Learners_Filter_MainOff, true))
                    {
                        searchTextMainOff = Settings.OfficerCode;
                    }
                    string searchTextSites = Settings.UserSites;

                    if (string.IsNullOrWhiteSpace(searchTextSurname) || string.IsNullOrWhiteSpace(searchTextForenames))
                    {
                        await this.DisplayError("Surname and Forename are both required to search for Learners", PelDialogButton.Retry);
                    }
                    else
                    {
                        FindLearnersSoapRequest req = new FindLearnersSoapRequest()
                        {
                            Surname     = searchTextSurname,
                            Forename    = searchTextForenames,
                            Postcode    = searchTextPostcode,
                            MainOfficer = searchTextMainOff,
                            Sites       = searchTextSites
                        };
                        GenericResponse <List <DBLearner> > learners = await App.soapService.FindLearners(req);

                        if ((learners == null) || (learners.Data == null) || (learners.Data.Count == 0))
                        {
                            await this.DisplayError("No learners found matching your search options", PelDialogButton.Retry);
                        }
                        else
                        {
                            //TODO: proper fix for allowed months.
                            int allowedMonthsOld = 12; //Settings.GetInt(oPICSConfig.cfgKey_FCA_Learners_Filter_OldLearners_Months, 12); //Fix later
                            int leftTooLongAgo   = 0;
                            foreach (DBLearner learner in learners.Data)
                            {
                                if (learner.TrainingEnd.HasValue &&
                                    learner.TrainingEnd.Value > DateTime.MinValue &&
                                    learner.TrainingEnd.Value.AddMonths(allowedMonthsOld) <= DateTime.Now)
                                {
                                    leftTooLongAgo++;
                                }
                                else
                                {
                                    await App.DB.SaveLearner(learner);
                                }
                            }
                            await PruneOldLearners();

                            string message = $"{learners.Data.Count} learner(s) found.{Environment.NewLine}";
                            if (leftTooLongAgo > 0)
                            {
                                if (allowedMonthsOld > 0)
                                {
                                    message += $"{leftTooLongAgo} episodes that ended more than {allowedMonthsOld} month(s) ago were not added.";
                                }
                                else
                                {
                                    message += $"{leftTooLongAgo} episodes that have ended were not added.";
                                }
                            }
                            await this.DisplaySuccess(message);

                            await Navigation.PopAsync();
                        }
                        await App.Current.ShowUpdatePassword();
                    }
                    aiLoading.IsVisible = false;
                    aiLoading.IsRunning = false;
                    BtnImport.IsVisible = true;
                }
                EndTask("OnImportLearnersClicked");
            }
        }