public static Meeting ViewMeetingToModel(this ViewMeeting meet)
 {
     return(new Meeting
     {
         Id = meet.Id,
         DateStart = meet.DateStart,
         DateEnd = meet.DateEnd,
         RoomId = meet.RoomId
     });
 }
        public static ViewMeeting MeetingToView(this Meeting meet)
        {
            var vm = new ViewMeeting
            {
                Id        = meet.Id,
                DateStart = meet.DateStart,
                DateEnd   = meet.DateEnd,
                RoomId    = meet.RoomId
            };

            vm.Answers = meet.Answers?.Select(i => i.AnswerToView()).ToList();
            return(vm);
        }
Beispiel #3
0
        /// <summary>
        /// Init ourselves with a new meeting ref
        /// </summary>
        /// <param name="meetings"></param>
        public CategoryURIViewModel(IMeetingListRef meetings, IBlobCache cache = null)
        {
            cache = cache ?? Blobs.LocalStorage;

            // Get the list of items we are going to show. If there
            // is an error we should display it.
            MeetingList = new ReactiveList <IMeetingRefExtended>();
            var meetingStream = meetings.FetchAndUpdateRecentMeetings(cache: cache)
                                .Replay(1);

            meetingStream
            .OnErrorResumeNext(Observable.Empty <IMeetingRefExtended[]>())
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(m => SetMeetings(m));

            var errorStream = new Subject <Exception>();

            ErrorsVM = new ErrorUserControlViewModel(errorStream);

            meetingStream
            .Subscribe(_ => { },
                       except => errorStream.OnNext(except));

            meetingStream
            .Select(_ => true)
            .ToProperty(this, x => x.IsReady, out _isReady, false, RxApp.MainThreadScheduler);

            meetingStream.Connect();

            // When the user wants to view one of the meetings we are showing
            ViewMeeting    = ReactiveCommand.Create();
            MeetingToVisit = ViewMeeting
                             .Select(m => m as IMeetingRefExtended)
                             .Where(m => m != null)
                             .Select(m => new MeetingPageViewModel(Locator.Current.GetService <IScreen>(), m.Meeting));
        }