public void ShowStep(int?stepId) { if (stepId == null) { //display alert dialog return; } //if the answer's next screen Id is not null, find it's definition and load the fragment try { var ticketStepDefinition = TicketQuestionList.Find(q => q.ScreenId == stepId); if (ticketStepDefinition != null) { //_ticketFragment = new FragmentTicket(ticketStepDefinition); _ticketFragment = new FragmentTicket(); _ticketFragment.SetArgument(TicketFragment, ticketStepDefinition); ShowFragment(_ticketFragment); } else { //display alertdialog stating step definition could not be found } } catch (Exception ex) { Logger.Verbose(ex.Message); return; } }
public override void UpdateScreen() { try { if (TicketQuestionListDefintion == null) { using (var sr = new StreamReader(Assets.Open("ticketscreens.json"))) { //load the screen definitions from the json file located in the Assets folder TicketQuestionListDefintion = sr.ReadToEnd(); } } if (TicketQuestionListDefintion != null) { //deserialize the json structure TicketQuestionList = JsonConvert.DeserializeObject <List <TicketQuestion> >(TicketQuestionListDefintion); Logger.Verbose("Deserialized Screen List Count : " + TicketQuestionList.Count()); //if we have list of questions if (TicketQuestionList.Any()) { TicketQuestion startTicketQuestion = null; if (StepAnswersListDefintion != null) { StepAnswersList = JsonConvert.DeserializeObject <List <StepAnswer> >(StepAnswersListDefintion); } //determine the starting screen based on whether we have an existing list of step answers if (StepAnswersList == null) { //startTicketQuestion = TicketQuestionList.ElementAt(0); startTicketQuestion = TicketQuestionList.Find(q => q.ScreenId == _startScreenId); } else { //if there is persisted list, get the last one and use that as the starting point if (StepAnswersList.Any()) { var lastStepAnswer = StepAnswersList.ElementAt(StepAnswersList.Count() - 1); Logger.Verbose("Last Step to be reloaded : " + lastStepAnswer.StepId); startTicketQuestion = TicketQuestionList.Find(q => q.ScreenId == lastStepAnswer.StepId); } else { //startTicketQuestion = TicketQuestionList.ElementAt(0); startTicketQuestion = TicketQuestionList.Find(q => q.ScreenId == _startScreenId); } } if (startTicketQuestion != null) { if (StepAnswersList == null) { StepAnswersList = new List <StepAnswer>(); } _ticketFragment = new FragmentTicket(); _ticketFragment.SetArgument(TicketFragment, startTicketQuestion); ShowFragment(_ticketFragment); } } } } catch (Exception ex) { Logger.Verbose(ex.Message); return; } }