Example #1
0
        private async void Download()
        {
            try
            {
                //TODO: check if connectivity
                if (!App.IsConnected)
                {
                    await App.CurrentApp.MainPage.DisplayAlert(AppResources.NoInternetText, "", AppResources.OKButton);
                }
                else
                {
                    //TODO: if any locally saved data, then uplo
                    _hudProvider.DisplayProgress(AppResources.WorkingText);
                    var observations = _observationRepository.All(mn => mn.ModifiedLocally == true);
                    if (observations != null && observations.Count > 0)
                    {
                        var userinfo = _userInfoService.GetSavedInfo();
                        foreach (var ob in observations)
                        {
                            ob.Begin_Date = OffSetDateTimeZone((DateTime)ob.Begin_Date);
                            ob.End_Date   = OffSetDateTimeZone((DateTime)ob.End_Date);
                            var obsResponse = await _observationService.ObservationSave(userinfo.Email, ob);

                            _observationRepository.Upsert(obsResponse.observation);
                        }
                    }
                    var user     = _userInfoService.GetSavedInfo();
                    var response = await _observationService.GetAllData(user.Email, LanguageId);

                    if (response != null)
                    {
                        //Need to determine if observations need to be uploaded
                        _siteRepository.DeleteAll();
                        _activityRepository.DeleteAll();
                        _indicatorRepository.DeleteAll();
                        _siteIndicatorRepository.DeleteAll();
                        _observationRepository.DeleteAll();
                        _observationEntryRepository.DeleteAll();
                        _observationChangeRepository.DeleteAll();
                        _observationCommentRepository.DeleteAll();
                        _observationAttachmentRepository.DeleteAll();
                        _indicatorAgeRepository.DeleteAll();

                        //have response object so need to insert into database
                        if (response.Sites != null)
                        {
                            foreach (var item in response.Sites)
                            {
                                _siteRepository.Upsert(item);
                            }
                        }
                        if (response.Activities != null)
                        {
                            foreach (var activity in response.Activities)
                            {
                                _activityRepository.Upsert(activity);
                            }
                        }
                        if (response.Indicators != null)
                        {
                            foreach (var indicator in response.Indicators)
                            {
                                _indicatorRepository.Upsert(indicator);
                            }
                        }
                        if (response.SiteIndicators != null)
                        {
                            foreach (var si in response.SiteIndicators)
                            {
                                _siteIndicatorRepository.Upsert(si);
                            }
                        }
                        if (response.Observations != null)
                        {
                            foreach (var obs in response.Observations)
                            {
                                //changes
                                var changes = response.ObservationChanges.ToList().Where(m => m.Observation_id == obs.Observation_id).ToList();
                                obs.Changes = new ObservableCollection <ObservationChange>(changes);

                                // comments
                                var comments = response.ObservationComments.ToList().Where(m => m.Observation_Id == obs.Observation_id).ToList();
                                obs.Comments = new ObservableCollection <ObservationComment>(comments);

                                // attachments
                                var attachments = response.ObservationAttachments.ToList().Where(m => m.Observation_Id == obs.Observation_id).ToList();
                                obs.Attachments = new ObservableCollection <ObservationAttachment>(attachments);

                                // Entries
                                var entries = response.ObservationEntries.ToList().Where(m => m.Observation_id == obs.Observation_id).ToList();
                                obs.ObservationEntries = new ObservableCollection <ObservationEntry>(entries);


                                //Need to get entries, changes, comments, and attachments
                                _observationRepository.Upsert(obs);
                            }
                        }

                        if (response.IndicatorAgePeriods != null)
                        {
                            foreach (var age in response.IndicatorAgePeriods)
                            {
                                _indicatorAgeRepository.Upsert(age);
                            }
                        }
                        ////save to database
                        //LastInformationText = AppResources.LastInformationText;
                        //var ci = DependencyService.Get<ILocale>().GetCurrentCultureInfo();
                        //var date = string.Format(ci, "{0}", DateTime.Now);
                        //LastInformationText = String.Format(AppResources.LastInformationText, date);

                        user.LastDownload = DateTime.Now.ToString();
                        _userInfoService.SaveUserInfo(user);
                        var last = DateTime.Parse(user.LastDownload);
                        var ci   = DependencyService.Get <ILocale>().GetCurrentCultureInfo();
                        LastInformationTextDate = user.LastDownload;                         //string.Format(ci, "{0}", last);
                        LastInformationText     = AppResources.LastInformationText;
                    }



                    //}
                }
                //return RateOptionsSubmissionResult.Failure;
            }
            catch (Exception ex)
            {
                var x = ex.ToString();
                //return RateOptionsSubmissionResult.Failure; //tell view to pop alert
                //display error
            }
            finally
            {
                _hudProvider.Dismiss();
            }
        }