/// <summary> /// Reads the survey from resource. /// </summary> /// <returns>The survey from resource.</returns> /// <param name="resourceName">Resource name.</param> public static Survey ReadSurveyFromResource(string resourceName) { Assembly assembly = typeof(SurveyReader).GetTypeInfo().Assembly; string json = null; using (Stream stream = assembly.GetManifestResourceStream(resourceName)) { stream.Position = 0; using (StreamReader reader = new StreamReader(stream)) { json = reader.ReadToEnd(); } } Survey ns = (Survey)JSonTranslator.Deserialize <Survey> (json); return(ns); }
/// <summary> /// Reads all schemas. /// </summary> /// <returns>The all schemas.</returns> public static List <Survey> ReadAllSchemas() { IFolder rootFolder = FileSystem.Current.LocalStorage; var folderTask = rootFolder.CreateFolderAsync(Constants.schemasFolder, CreationCollisionOption.OpenIfExists); IFolder folder = folderTask.Result; var filesTask = folder.GetFilesAsync(); IList <IFile> files = filesTask.Result; List <Survey> surveys = new List <Survey> (); foreach (IFile f in files) { var fileContentTaks = f.ReadAllTextAsync(); string fileContent = fileContentTaks.Result; Survey s = JSonTranslator.Deserialize <Survey> (fileContent); surveys.Add(s); } ; return(surveys); }
/// <summary> /// Mockup class simulating actual connection for the new surveys. /// </summary> public void DownloadNewSurveys() { // this part is actually faking the connection to the Internet Assembly assembly = GetType().GetTypeInfo().Assembly; string resource = "Surveys.SerializedSurveys.MedicalSurvey.json"; string ss; using (Stream stream = assembly.GetManifestResourceStream(resource)) { using (StreamReader reader = new StreamReader(stream)) { var stringTask = reader.ReadToEndAsync(); ss = stringTask.Result; } } // process and save in the desired directory Survey s = JSonTranslator.Deserialize <Survey> (ss); IOController.SaveFile(ss, s.SurveyName, Constants.schemasFolder); }
/// <summary> /// Initializes a new instance of the <see cref="Surveys.ToFillListPage"/> class. /// </summary> public ToFillListPage() { this.Title = "To be answered"; // Read schemas, instances and check for new List <Survey> allSchemas = IOController.ReadAllSchemas(); List <SurveyAnswer> filledAnswers = new List <SurveyAnswer> (); List <string> filledAnswersSerialized = IOController.ReadFiles(Constants.filledFolder); foreach (string s in filledAnswersSerialized) { filledAnswers.Add(JSonTranslator.Deserialize <SurveyAnswer> (s)); } List <Survey> newSchemas = StartupController.checkForNewSchemas(allSchemas, filledAnswers); // If new, generate unfilled instances List <SurveyAnswer> surveyUnfilledInstances = new List <SurveyAnswer> (); if (newSchemas.Count != 0) { UserData user = new UserData(); user.Username = "******"; user.ID = "test_ID"; surveyUnfilledInstances = StartupController.generateInstances(newSchemas, user); } // Read previously stored unfilled instances List <string> previouslyUnfilledSerialized = IOController.ReadFiles(Constants.toFillFolder); foreach (string s in previouslyUnfilledSerialized) { SurveyAnswer sa = JSonTranslator.Deserialize <SurveyAnswer> (s); surveyUnfilledInstances.Add(sa); } // set active parts and preapre a display dictionary Dictionary <string, SurveyAnswer> toAnswerNamed = new Dictionary <string, SurveyAnswer> (); foreach (SurveyAnswer sa in surveyUnfilledInstances) { if (ScheduleController.setActive(sa)) { toAnswerNamed.Add(sa.Survey.SurveyName + "_" + sa.SurveyId.ToString().Substring(0, 4) + "_" + DateTime.Now.DayOfYear, sa); } } // Create and initialize ListView. ListView listView = new ListView(); listView.ItemsSource = toAnswerNamed.Keys; listView.ItemSelected += (object sender, SelectedItemChangedEventArgs e) => { if (e.SelectedItem != null) { listView.SelectedItem = null; chosenSurvey = toAnswerNamed [(string)e.SelectedItem]; ViewGenerator vg = new ViewGenerator(chosenSurvey.Survey); ContentPage surveyPage = new SurveyViewPage(vg, this); this.Navigation.PushAsync(surveyPage); } }; this.Content = new ScrollView { Content = listView }; }
/// <summary> /// Deeply clones object. /// </summary> /// <returns>The clone.</returns> /// <param name="obj">Object.</param> /// <typeparam name="T">The type of the object.</typeparam> public static T DeepClone <T>(T obj) { var temp = JSonTranslator.Serialize(obj); return(JSonTranslator.Deserialize <T> (temp)); }