Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
        /// <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
            };
        }
Beispiel #8
0
        /// <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));
        }