internal void SendSpeakerNavigatingMessage(Speaker speaker)
 {
     throw new System.NotImplementedException();
 }
 ////public override void Cleanup()
 ////{
 ////    // Clean own resources if needed
 ////    base.Cleanup();
 ////}
 internal void SendSpeakerNavigatingMessage(Speaker speaker)
 {
     Messenger.Default.Send<SpeakerSelectionChangedMessage>(new SpeakerSelectionChangedMessage { Speaker = speaker });
 }
        void SessionDownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                string stringArray = e.Result.Substring(12, e.Result.Length - 13);

                ReportSessionProgress("Reading data...", 80);
                List <SessionDto> sessions = JsonConvert.DeserializeObject <List <SessionDto> >(stringArray);

                ReportSessionProgress("Preparing to save data...", 85);
                ConferenceDataContext dc = new ConferenceDataContext("isostore:/conference.sdf");

                dc.Sessions.DeleteAllOnSubmit(dc.Sessions);
                dc.SubmitChanges();

                ReportSessionProgress("Saving to device...", 90);
                List <Session> sessionList = new List <Session>();
                foreach (var ssn in sessions.OrderBy(r => r.title))
                {
                    // check to see if the tags exist already, if not add them
                    foreach (var tag in ssn.tags)
                    {
                        if (dc.Tags.Where(t => t.Title == tag).Count() == 0)
                        {
                            dc.Tags.InsertOnSubmit(new Tag {
                                Title = tag, SessionTags = new EntitySet <SessionTags>()
                            });
                            dc.SubmitChanges();
                        }
                    }

                    // create a db version of the record
                    Session s = new Session
                    {
                        Abstract        = ssn.@abstract,
                        Finish          = ssn.finish,
                        Room            = ssn.room,
                        SessionId       = ssn.id,
                        Start           = ssn.start,
                        TagList         = string.Join(", ", ssn.tags).ToUpper(),
                        Title           = ssn.title,
                        SessionSpeakers = new EntitySet <SessionSpeakers>(),
                        SessionTags     = new EntitySet <SessionTags>()
                    };

                    // update the db
                    dc.Sessions.InsertOnSubmit(s);
                    dc.SubmitChanges();

                    // build up the speaker list
                    foreach (int speakerId in ssn.speakers)
                    {
                        Speaker speaker = dc.Speakers.Where(sp => sp.SpeakerId == speakerId).First();
                        s.SessionSpeakers.Add(new SessionSpeakers {
                            Speaker = speaker, Session = s
                        });
                        dc.SubmitChanges();
                    }

                    // default is a speaker if none are present
                    if (s.SessionSpeakers.Count == 0)
                    {
                        s.SessionSpeakers.Add(new SessionSpeakers {
                            Session = s, Speaker = dc.Speakers.Where(k => k.FirstName == "TBD").First()
                        });
                    }

                    // build up the tag list
                    foreach (var item in ssn.tags)
                    {
                        Tag tag = dc.Tags.Where(t => t.Title == item).First();
                        s.SessionTags.Add(new SessionTags {
                            Session = s, Tag = tag
                        });
                        dc.SubmitChanges();
                    }
                }


                ReportSessionProgress("Sessions downloaded and saved.", 95);

                int sessionCount  = dc.Sessions.Count();
                int speakersCount = dc.Speakers.Count();
                ReportCompletedRefresh(sessionCount, speakersCount);
                dc.Dispose();
                dc = null;
            }
            else
            {
                NetworkWentBoom();
            }
        }