/// <summary> /// Reschedule the instance of the chosen SurveyAnswer. /// </summary> public void Reschedule() { ScheduleController.reschedule(chosenSurvey); string rescheduled = JSonTranslator.Serialize(chosenSurvey); IOController.SaveFile(rescheduled, chosenSurvey.Survey.SurveyName + "_" + chosenSurvey.Survey.SurveyId.ToString().Substring(0, 4), Constants.toFillFolder); }
/// <summary> /// Saves the survey definition. /// </summary> /// <param name="s">The Survey definition to be saved. Used by ConnectionController.</param> public static async void SaveSurveyDefinition(Survey s) { IFolder rootFolder = FileSystem.Current.LocalStorage; IFolder folder = await rootFolder.CreateFolderAsync(Constants.schemasFolder, CreationCollisionOption.OpenIfExists); string fileName = s.SurveyId.ToString().Substring(0, 5) + "_" + s.SurveyName + ".json"; IFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); string serialized = JSonTranslator.Serialize(s); await file.WriteAllTextAsync(serialized); }
/// <summary> /// Writes the survey result. /// </summary> /// <param name="surveyScheme">Survey scheme.</param> /// <param name="currentViews">Current views.</param> public static async void WriteSurveyResult(Survey surveyScheme, ICollection <QuestionView> currentViews) { IFolder rootFolder = FileSystem.Current.LocalStorage; IFolder folder = await rootFolder.CreateFolderAsync(Constants.filledFolder, CreationCollisionOption.OpenIfExists); string fileName = surveyScheme.SurveyId.ToString().Substring(0, 5) + "_" + surveyScheme.SurveyName + "_" + DateTime.Now.DayOfYear.ToString() + ".json"; IFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); SurveyAnswer SurveyfilledScheme = PutAnswersToSurveyInstance(currentViews, surveyScheme); string serialized = JSonTranslator.Serialize(SurveyfilledScheme); await file.WriteAllTextAsync(serialized); }
/// <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)); }