/// <summary> /// Allows you to initialize all necessary data members and triggers sending process. /// </summary> /// <param name="surveyId">Survey identification number.</param> /// <param name="resultInfo">Instance of <see cref="ResultBasicInfo"/> class. Result you want to send.</param> public void Send(string surveyId, ResultBasicInfo resultInfo) { Survey survey = new Survey(); survey.Id = surveyId; survey.ResultInfo = resultInfo; _resultId = resultInfo.Id; Send(survey.GetSavedDocument()); }
private void DeleteResultFile(ResultBasicInfo result) { using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication()) { string directoryPath = string.Format("surveys/{0}", _surveyId); string resultFilePath = System.IO.Path.Combine(directoryPath, string.Format("r_{0}.xml", result.Id)); isoStore.DeleteFile(resultFilePath); } }
/// <summary> /// Recreates listOfResults.xml file with Sent attribute set to false for single result. /// </summary> /// <param name="resultId">Result id you want to modify.</param> public void UnmarkSentResult(string resultId) { ReadList(); var items = from item in _list where item.Id == resultId select item; ResultBasicInfo result = items.First <ResultBasicInfo>(); result.IsResultSent = false; XDocument documentWithList = PrepareXDocument(); _savedDocument = documentWithList; }
/// <summary> /// Removes result from list. Recreates listOfResults.xml file and deletes result file. /// </summary> /// <param name="resultId">Result identification number.</param> public void DeleteResult(string resultId) { ReadList(); var items = from item in _list where item.Id == resultId select item; ResultBasicInfo result = items.First <ResultBasicInfo>(); _list.Remove(result); XDocument documentWithList = PrepareXDocument(); _savedDocument = documentWithList; DeleteResultFile(result); }
/// <summary> /// Recreates listOfResults.xml file with new location. /// </summary> /// <param name="resultId">Result id you want to modify.</param> /// <param name="latitude">Result latitude you want to modify.</param> /// <param name="longitude">Result longitude you want to modify.</param> public void UpdateLocation(string resultId, string latitude, string longitude) { ReadList(); var items = from item in _list where item.Id == resultId select item; ResultBasicInfo result = items.First <ResultBasicInfo>(); if (result != null) { result.Latitude = latitude; result.Longitude = longitude; XDocument documentWithList = PrepareXDocument(); _savedDocument = documentWithList; } }
/// <summary> /// Removes result from list. Uses <see cref="OperationsOnListOfResults"/> to remove data from IsolatedStorage. /// </summary> /// <param name="result">Instance of <see cref="ResultBasicInfo"/> class which holds that of result you want to remove.</param> public void DeleteResult(ResultBasicInfo result) { var results = from item in App.AppDictionary["FilteredResults"] as ObservableCollection <ResultsFilter.GroupedOC <ResultBasicInfo> > where item.Contains(result) select item; GroupedOC <ResultBasicInfo> entity = results.First <GroupedOC <ResultBasicInfo> >(); entity.Remove(result); if (entity.Count == 0) { (App.AppDictionary["FilteredResults"] as ObservableCollection <ResultsFilter.GroupedOC <ResultBasicInfo> >).Remove(entity); } OperationsOnListOfResults operations = new OperationsOnListOfResults(result.ParentId); operations.DeleteResult(result.Id); }
/// <summary> /// Reloads basic data of single survey result from listOfResults.xml file. /// </summary> /// <param name="resultId">Id of result you want to reload.</param> public void ReloadResult(string resultId) { int groupIndex = -1; int itemIndex = -1; ObservableCollection <ResultsFilter.GroupedOC <ResultBasicInfo> > filteredResults = App.AppDictionary["FilteredResults"] as ObservableCollection <ResultsFilter.GroupedOC <ResultBasicInfo> >; foreach (var collection in filteredResults) { var items = from item in collection where item.Id == resultId select item; bool isNotNull = false; foreach (var i in items) { isNotNull = true; break; } if (isNotNull) { ResultBasicInfo basicInfo = items.First <ResultBasicInfo>(); XDocument document = LoadListOfResults(basicInfo.ParentId); if (document != null) { XElement root = document.Element("results"); var results = from result in root.Elements("result") where result.Attribute("id").Value == basicInfo.Id select new ResultBasicInfo() { Id = result.Attribute("id").Value, Title = result.Attribute("title").Value, IsResultSent = Convert.ToBoolean(result.Attribute("isSent").Value), IsResultCompleted = Convert.ToBoolean(result.Attribute("isCompleted").Value), Latitude = result.Element("latitude") != null?result.Element("latitude").Value : null, Longitude = result.Element("longitude") != null?result.Element("longitude").Value : null, Time = result.Element("time").Value, ParentId = result.Element("parentId").Value }; ResultBasicInfo resultToInsert = results.First <ResultBasicInfo>(); groupIndex = filteredResults.IndexOf(collection); itemIndex = collection.IndexOf(basicInfo); filteredResults[groupIndex].RemoveAt(itemIndex); filteredResults[groupIndex].Insert(itemIndex, resultToInsert); } return; } } }
/// <summary> /// Adds new survey result to list. Recreates listOfResults.xml file. /// </summary> /// <param name="basicInfo">Instance of <see cref="ResultBasicInfo"/> class.</param> public void Add(ResultBasicInfo basicInfo) { ReadList(); bool add = true; var saved = from result in _list where result.Id.Equals(basicInfo.Id) select result; foreach (var result in saved) { if (result.IsResultCompleted == basicInfo.IsResultCompleted) { return; } else { result.IsResultCompleted = basicInfo.IsResultCompleted; add = false; } } if (add) { _list.Add(new ResultBasicInfo() { Id = basicInfo.Id, Title = basicInfo.Title, Time = basicInfo.Time, Latitude = basicInfo.Latitude, Longitude = basicInfo.Longitude, ParentId = basicInfo.ParentId, IsResultCompleted = basicInfo.IsResultCompleted, IsResultSent = basicInfo.IsResultSent }); } XDocument documentWithList = PrepareXDocument(); _savedDocument = documentWithList; }
/// <summary> /// Method to unmark result as sent. After unmark result as sent user can again modify the result. /// </summary> /// <param name="result">Information about which result was selected by user.</param> public void UnmarkSent(ResultBasicInfo result) { Operations = new OperationsOnListOfResults(result.ParentId); Operations.UnmarkSentResult(result.Id); }
/// <summary> /// Sends result to server. /// </summary> /// <param name="selectedListBoxItem">Contains information of result that was selected by user and will be send on server.</param> public void SendResult(ResultBasicInfo selectedListBoxItem) { ProgressBar.Information = Languages.AppResources.surveyViewModel_sendingProgressTitle; ProgressBar.IsEnabled = true; Operations = new OperationsOnListOfResults(selectedListBoxItem.ParentId); IsSending = true; ResultSender.Send(selectedListBoxItem.ParentId, selectedListBoxItem); }
/// <summary> /// Unmarks sent results. /// </summary> /// <param name="result">Information about result which should be unmarked.</param> public void UnmarkSent(ResultBasicInfo result) { _operations.UnmarkSentResult(result.Id); }
/// <summary> /// Sends result to server. /// </summary> /// <param name="selectedListBoxItem">Information about result which should be send.</param> public void SendResult(ResultBasicInfo selectedListBoxItem) { ProgressBar.Information = Languages.AppResources.surveyViewModel_sendingProgressTitle; ProgressBar.IsEnabled = true; SendingInProgress = true; _resultSender.Send(SurveyId, selectedListBoxItem); }
/// <summary> /// Deletes result from list (and from IsolatedStoraged). /// </summary> /// <param name="result">Information about result which should be delete.</param> public void DeleteResult(ResultBasicInfo result) { _operations.DeleteResult(result.Id); }