예제 #1
0
        public bool DbHasUpdates()
        {
            bool _bReturn = false;
            VoterFileDataContext _voterDB = new VoterFileDataContext(string.Format(VoterFileDataContext.DBConnectionString, _settings.DbFileName));

            if (_voterDB.DatabaseExists())
            {
                try
                {
                    IEnumerable <VoterFileEntry> voters = from voter in _voterDB.AllVoters
                                                          where voter.ModifiedTime > _settings.GetSetting <DateTime>("lastsync")
                                                          select voter;
                    if (voters.Count() > 0)
                    {
                        _bReturn = true;
                    }
                }
                catch (Exception ex)
                {
                    Log(" Error reporting changes: " + ex.ToString());
                }
            }
            _voterDB.Dispose();
            return(_bReturn);
        }
예제 #2
0
        public string GetUpdateString(DateTime updateTime)
        {
            string stUpdates = "";
            VoterFileDataContext _voterDB = new VoterFileDataContext(string.Format(VoterFileDataContext.DBConnectionString, _settings.DbFileName));

            if (_voterDB.DatabaseExists())
            {
                try
                {
                    IEnumerable <VoterFileEntry> voters = from voter in _voterDB.AllVoters
                                                          where (voter.ModifiedTime > _settings.GetSetting <DateTime>("lastsync") &&
                                                                 voter.ModifiedTime <= updateTime && voter.IsUpdated)
                                                          select voter;
                    App.Log("  GetUpdateString Query completed.");
                    StringWriter _updateString = new StringWriter();

                    if (App.thisApp._settings.GetSetting <string>("dataformat") == "csv")
                    {
                        StringBuilder csv = new StringBuilder();
                        csv.Clear();
                        if (App.thisApp._settings.GetSetting <bool>("_trhack"))
                        {
                            csv.AppendLine("redid,party,resultofcontact,email,cellphone,issupporter,comments,modifiedtime");
                        }
                        else
                        {
                            csv.AppendLine("recid,party,resultofcontact,email,cellphone,issupporter,comments,modifiedtime");
                        }
                        _updateString.Write(csv.ToString());
                        csv.Clear();

                        foreach (VoterFileEntry voter in voters)
                        {
                            // TODO: Add WriteUpdateToCsv() method to VoterFileEntry object
                            csv.AppendFormat("{0},{1},{2},{3},{4},{5},{6},{7}{8}", voter.VoterID, voter.Party, voter.ResultOfContact, voter.Email, voter.CellPhone, voter.IsSupporter, voter.Comments, voter.ModifiedTime, System.Environment.NewLine);
                            _updateString.Write(csv.ToString());
                            csv.Clear();
                        }
                        _updateString.Flush();
                        stUpdates = _updateString.ToString();
                        _updateString.Close();
                        csv.Clear();
                    }
                    Log("  Completed: Updates = " + stUpdates);
                }
                catch (Exception ex)
                {
                    Log(" Error reporting changes: " + ex.ToString());
                    stUpdates = "";
                }
            }
            _voterDB.Dispose();
            return(stUpdates);
        }
예제 #3
0
        public void FillVoterList(List <PushpinModel> fillWith)
        {
            if (fillWith == null || fillWith.Count < 1)
            {
                VoterFileDataContext _voterDB = new VoterFileDataContext(string.Format(VoterFileDataContext.DBConnectionString, App.thisApp._settings.DbFileName));

                if (!(App.thisApp._settings.DbStatus == DbState.Loaded) || !_voterDB.DatabaseExists())
                {
                    App.Log("Database not ready to load voters yet.");
                    return;
                }
                App.VotersViewModel.StreetList.Clear();
                App.VotersViewModel.VoterList.Clear();

                IEnumerable <VoterFileEntry> data = from VoterFileEntry voter in _voterDB.AllVoters select voter;
                foreach (VoterFileEntry _v in data)
                {
                    PushpinModel p = new PushpinModel(_v);
                    if ((p.Street != null) && (!App.VotersViewModel.StreetList.Contains(p.Street)))
                    {
                        App.VotersViewModel.StreetList.Add(p.Street);
                    }
                    App.VotersViewModel.VoterList.Add(p);
                }
                _voterDB.Dispose();
            }
            else
            {
                App.VotersViewModel.StreetList.Clear();
                App.VotersViewModel.VoterList.Clear();

                foreach (PushpinModel p in fillWith)
                {
                    if ((p.Street != null) && (!App.VotersViewModel.StreetList.Contains(p.Street)))
                    {
                        App.VotersViewModel.StreetList.Add(p.Street);
                    }
                    App.VotersViewModel.VoterList.Add(p);
                }
            }
            if (App.VotersViewModel.VoterList.Count <= 0)
            {
                App.Log("There are no voters in database!");
                return;
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("Found {0} voters in database.", App.VotersViewModel.VoterList.Count);
            }
        }
        private void SaveVoterChanges()
        {
            // If either the email or cell textbox controls had focus when save button was tapped those changes were
            // not updated ot the view model (because focus was not lost), so we will do that now.
            if (txtEmail.Text != ((VoterFileEntry)DataContext).Email)
            {
                BindingExpression expression = txtEmail.GetBindingExpression(TextBox.TextProperty);
                expression.UpdateSource();
            }
            if (txtCell.Text != ((VoterFileEntry)DataContext).CellPhone)
            {
                BindingExpression expression = txtCell.GetBindingExpression(TextBox.TextProperty);
                expression.UpdateSource();
            }
            if (txtComments.Text != ((VoterFileEntry)DataContext).Comments)
            {
                BindingExpression expression = txtComments.GetBindingExpression(TextBox.TextProperty);
                expression.UpdateSource();
            }
            if (_voterDB.DatabaseExists())
            {
                ((VoterFileEntry)DataContext).ModifiedTime = System.DateTime.Now;
                ((VoterFileEntry)DataContext).IsUpdated    = true;
                _voterDB.SubmitChanges();
                App.Log("Submitted changes to database");
            }
            else
            {
                App.Log("ERROR: we don't have a database!");
            }

            _voterDB.Dispose();
            // PostUpdate() will attempt to post this update (and any outstanding updates) if there is network access.
            // If the update fails, then the next change will trigger another call to PostUpdate(), which will attempt
            // to post that update and this one.
            App.thisApp.PostUpdate();
        }
예제 #5
0
        public bool UpdateVoter()
        {
            bool success = false;
            VoterFileDataContext _voterDB = new VoterFileDataContext(string.Format(VoterFileDataContext.DBConnectionString, _settings.DbFileName));

            if (_voterDB.DatabaseExists())
            {
                try
                {
                    IQueryable <VoterFileEntry> voterQuery = from voter in _voterDB.AllVoters where voter.VoterID == _selectedVoter.VoterID select voter;
                    VoterFileEntry voterToUpdate           = voterQuery.FirstOrDefault();
                    if (voterToUpdate.VoterID == _selectedVoter.VoterID)
                    {
                        voterToUpdate.Party                   = _selectedVoter.VoterFile.Party;
                        voterToUpdate.ResultOfContact         = _selectedVoter.ResultOfContact;
                        voterToUpdate.Email                   = _selectedVoter.Email;
                        voterToUpdate.CellPhone               = _selectedVoter.CellPhone;
                        voterToUpdate.IsSupporter             = _selectedVoter.IsSupporter;
                        voterToUpdate.IsVolunteer             = _selectedVoter.IsVolunteer;
                        voterToUpdate.IsUpdated               = _selectedVoter.VoterFile.IsUpdated;
                        voterToUpdate.Comments                = _selectedVoter.Comments;
                        voterToUpdate.ModifiedTime            = DateTime.Now;
                        _selectedVoter.VoterFile.ModifiedTime = voterToUpdate.ModifiedTime;
                        _voterDB.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
                        success = true;
                        NotifyPropertyChanged("HasUpdates");
                    }
                    else
                    {
                        Log(String.Format(" ERROR: Voter returned from query (id={0}) did not match selected voter (id={1}).", voterToUpdate.VoterID, _selectedVoter.VoterID));
                    }
                }
                catch (Exception ex)
                {
                    Log(" Error updating voter record: " + _selectedVoter.FullName + "  : " + ex.ToString());
                }
            }
            _voterDB.Dispose();
            return(success);
        }