async Task LoadQuestions(EQuestionGroupStatus status) { if (IsBusy) { return; } IsBusy = true; _questionGroups.Clear(); var address = StateService.CurrentAddress; var customer = StateService.CurrentCustomer; var surveyType = await new DbService().FindSurveyType(address.Type, customer.CustomerSurveyID); if (surveyType != null) { var questions = await new DbService().GetQuestions(surveyType.Value, customer.CustomerSurveyID); var groupped = questions.GroupBy(x => x.Main_Element).ToList(); foreach (var g in groupped) { if (g.Key == "SECONDARY") { continue; } var gr = new QuestionGroup() { Name = g.Key, Questions = new List <Question>(g) }; gr.IsCompleted = await new DbService().FindIfQuestionGroupIsCompleted(address.Id, gr.Name); _questionGroups.Add(gr); } _questionGroups = _questionGroups.OrderBy(x => x.Questions.First().Question_Order).ToList(); if (status == EQuestionGroupStatus.All) { lstGroupss.ItemsSource = _questionGroups; } else { lstGroupss.ItemsSource = _questionGroups.Where(x => x.IsCompleted == (status == EQuestionGroupStatus.Complete)).ToList(); } Task.Factory.StartNew(() => { UpdateAddressStatus(_questionGroups); }); } else { IsBusy = false; } }
async Task LoadQuestions(EQuestionGroupStatus status) { IsBusy = true; _questionGroups.Clear(); var address = StateService.CurrentAddress; var surveyTypes = await new DbService().FindSurveyType(address.Type); if (surveyTypes != null) { var questions = await new DbService().GetQuestions(surveyTypes.Value); var groupped = questions.GroupBy(x => x.Main_Element).ToList(); foreach (var g in groupped) { if (g.Key == "SECONDARY") { continue; } var gr = new QuestionGroup() { Name = g.Key, Questions = new List <Question>(g) }; gr.Complete = await new DbService().FindIsQuestionGroupCompleted(gr.Name, address.UPRN); _questionGroups.Add(gr); } if (_questionGroups.All(x => x.Complete)) { address.Complete = true; await new DbService().Save(address, ESyncStatus.NotSynced); btnCopyTo.IsEnabled = true; } _questionGroups = _questionGroups.OrderBy(x => x.Questions.First().Question_Order).ToList(); if (status == EQuestionGroupStatus.All) { lstGroupss.ItemsSource = _questionGroups; } else { lstGroupss.ItemsSource = _questionGroups.Where(x => x.Complete == (status == EQuestionGroupStatus.Complete)).ToList(); } } IsBusy = false; }