public static void FillViewModel(ISessionItemViewModel vm, Session model)
        {
            vm.Title = model.Title;
            vm.TrackArea = string.Format("{0}: {1}", model.Track, model.Area);
            vm.Level = (model.LevelGeneral == model.LevelSpecific)
                             ? model.LevelSpecific
                             : string.Format("{0} / {1}", model.LevelGeneral, model.LevelSpecific);
            vm.Abstract = model.Abstract;
            vm.SessionId = model.SessionId;
            vm.Technology = model.Technology;

            // time zone adjustments are handled at the model level:
            vm.StartTime = model.StartTime;
            vm.EndTime = model.EndTime;

            if (vm.StartTime != DateTime.MinValue && vm.EndTime != DateTime.MinValue)
            {
                // i.e. Fri 06/03 11:30 AM - 12:30 PM
                vm.TimeText = string.Format("{0:ddd MM/dd h:mm tt} - {1:h:mm tt}", vm.StartTime, vm.EndTime);
            }
            vm.SpeakerId = model.SpeakerId;
            vm.Room = model.Room;
            vm.RoomText = !string.IsNullOrEmpty(vm.Room) ? string.Format("Room {0}", vm.Room) : vm.Room;

            if (!string.IsNullOrEmpty(vm.TimeText) && !string.IsNullOrEmpty(vm.Room))
                vm.TimeAndRoom = string.Format("{0}  Room {1}", vm.TimeText, vm.Room);

            vm.Url = model.Url;

            if (model.VoteRank != null)
            {
                vm.VoteRank = ("NONE" == model.VoteRank) ? "None"
                    : model.VoteRank.StartsWith("TOP") ? "Top " + model.VoteRank.Substring(3) : model.VoteRank;
            }

            //vm.Speaker = new SpeakerItemViewModel(model.Speaker);
        }
 public SessionItemViewModel(Session session)
     : this()
 {
     SetSession(session);
 }
        private void SetSession(Session session)
        {
            SessionItemMapper.FillViewModel(this, session);

            // for performance we copy this off and lazy get all later
            //this.Speaker = new SpeakerItemViewModel(session.Speaker);

            this.SpeakerName = null != session.Speaker ? session.Speaker.Name : "Unknown Speaker (Refresh)";

            _session = session;
        }