예제 #1
0
 public HomeViewModel()
 {
     Welcome   = new WelcomeViewModel();
     Sessions  = new SessionsViewModel();
     Twitter   = new TwitterViewModel();
     Favorites = new FavoritesViewModel();
 }
 /// <summary>
 /// Provides a deterministic way to create the Sessions property.
 /// </summary>
 public static void CreateSessions()
 {
     if (_sessions == null)
     {
         _sessions = new SessionsViewModel();
     }
 }
예제 #3
0
        public SessionsPage()
        {
            InitializeComponent();
            //loggedIn = Settings.Current.Email;
            showFavs           = Settings.Current.FavoritesOnly;
            showPast           = Settings.Current.ShowPastSessions;
            showAllCategories  = Settings.Current.ShowAllCategories;
            filteredCategories = Settings.Current.FilteredCategories;

            BindingContext = vm = new SessionsViewModel(Navigation);

            if (Device.OS == TargetPlatform.Windows || Device.OS == TargetPlatform.WinPhone)
            {
                ToolbarItems.Add(new ToolbarItem
                {
                    Text    = "Refresh",
                    Icon    = "toolbar_refresh.png",
                    Command = vm.ForceRefreshCommand
                });
            }


            filterItem = new ToolbarItem
            {
                Text = "Filter"
            };

            if (Device.OS != TargetPlatform.iOS)
            {
                filterItem.Icon = "toolbar_filter.png";
            }

            filterItem.Command = new Command(async() =>
            {
                if (vm.IsBusy)
                {
                    return;
                }
                App.Logger.TrackPage(AppPage.Filter.ToString());
                await NavigationService.PushModalAsync(Navigation, new EvolveNavigationPage(new FilterSessionsPage()));
            });

            ToolbarItems.Add(filterItem);

            ListViewSessions.ItemSelected += async(sender, e) =>
            {
                var session = ListViewSessions.SelectedItem as Session;
                if (session == null)
                {
                    return;
                }

                var sessionDetails = new SessionDetailsPage(session);

                App.Logger.TrackPage(AppPage.Session.ToString(), session.Title);
                await NavigationService.PushAsync(Navigation, sessionDetails);

                ListViewSessions.SelectedItem = null;
            };
        }
        public SessionsPage()
        {
            InitializeComponent();

            sessionsViewModel = new SessionsViewModel();
            BindingContext    = sessionsViewModel;
        }
        public void Init()
        {
            _webService        = new Mock <IWebService>();
            _navigationService = new Mock <INavigationService>();

            viewModel = new SessionsViewModel(_webService.Object, _navigationService.Object);
        }
        public async void Init_DataLoadsSuccessfully_LoadsTimeSlots()
        {
            var session = new Session {
                StartTime = DateTime.Now, EndTime = DateTime.Now, Id = 42, SpeakerId = 1
            };
            var data = new CampData
            {
                Sessions = new List <Session> {
                    session
                },
                Speakers = new List <Speaker> {
                    new Speaker {
                        Id = 1
                    }
                },
            };

            DataClient.GetDataBody = () => Task.FromResult(data);
            var viewModel = new SessionsViewModel(Messenger, CodeCampService);

            Assert.True(viewModel.IsLoading);

            await viewModel.Init();

            Assert.AreEqual(1, viewModel.TimeSlots.Count);

            var slot = viewModel.TimeSlots.First();

            Assert.AreEqual(session.StartTime, slot.StartTime);
            Assert.AreEqual(session.EndTime, slot.EndTime);
            Assert.AreEqual(1, slot.Sessions.Count);
            Assert.AreEqual(session, slot.Sessions.First());
            Assert.False(viewModel.IsLoading);
        }
 private void CloseSessionsButton_Click(object sender, RoutedEventArgs e)
 {
     sessionsViewModel                    = null;
     SessionsDataGrid.DataContext         = null;
     TrackedGrid.RowDefinitions[2].Height = new GridLength(0);
     GC.Collect();
     _trackedUsersManager.StopTrackingUserSession();
 }
예제 #8
0
        // GET: /<controller>/
        public IActionResult Index()
        {
            var vm = new SessionsViewModel {
                Sessions = DataStore.Sessions.ToList()
            };

            return(View(vm));
        }
예제 #9
0
        public SessionsPage()
        {
            Title = "Sessions";
            this.BindingContext = viewModel = new SessionsViewModel();
            NavigationPage.SetHasNavigationBar(this, true);

            var refresh = new ToolbarItem
            {
                Command  = viewModel.LoadSessionsCommand,
                Icon     = "refresh.png",
                Name     = "refresh",
                Priority = 0
            };

            ToolbarItems.Add(refresh);


            listView = new ListView {
                RowHeight = 40
            };
            // see the SessionCell implementation for how the variable row height is calculated
            listView.HasUnevenRows = true;

            listView.ItemsSource         = viewModel.SessionsGrouped;
            listView.IsGroupingEnabled   = true;
            listView.GroupDisplayBinding = new Binding("Key");             //this is our key property on grouping. - See more at: http://motzcod.es/#sthash.QlKNtfa4.dpuf

            var cell = new DataTemplate(typeof(TextCell));

            cell.SetBinding(TextCell.TextProperty, "Name");
            cell.SetBinding(TextCell.DetailProperty, "MainPresenter.DisplayName");

            listView.ItemTemplate = cell;


            listView.ItemSelected += (sender, e) => {
                if (listView.SelectedItem == null)
                {
                    return;
                }
                var session     = e.SelectedItem as Session;
                var sessionPage = new SessionPage(session);
                Navigation.PushAsync(sessionPage);
                listView.SelectedItem = null;
            };

            var activityIndicator = new ActivityIndicator();

            activityIndicator.SetBinding(ActivityIndicator.IsVisibleProperty, "IsBusy");
            activityIndicator.SetBinding(ActivityIndicator.IsRunningProperty, "IsBusy");

            Content = new StackLayout {
                VerticalOptions = LayoutOptions.FillAndExpand,
                Children        = { activityIndicator, listView }
            };
        }
예제 #10
0
        private void btnClear_Click(object sender, System.EventArgs e)
        {
            var result = MessageBox.Show("Click okay and I'll totally nuke all your saved sessions. Is that what you really want?", "Srsly?", MessageBoxButton.OKCancel);

            if (result == MessageBoxResult.OK)
            {
                SessionsViewModel vm = this.DataContext as SessionsViewModel;
                vm.ClearSavedSessions();
            }
        }
        public async Task <IActionResult> Sessions()
        {
            var viewModel = new SessionsViewModel();

            var response = await _adminService.GetSessions(new GetSessionsRequest());

            viewModel.Sessions = response.Sessions;

            return(View(viewModel));
        }
예제 #12
0
        private void reinitializeChildViewModels()
        {
            OverviewViewModel = new OverviewViewModel(Messenger, _campService);
            OverviewViewModel.Init();

            SessionsViewModel = new SessionsViewModel(Messenger, _campService);
            SessionsViewModel.Init();

            SpeakersViewModel = new SpeakersViewModel(Messenger, _campService);
            SpeakersViewModel.Init();

            SponsorsViewModel = new SponsorsViewModel(Messenger, _campService);
            SponsorsViewModel.Init();
        }
        public async void Init_ExceptionThrown_ReportsError()
        {
            DataClient.GetDataBody = delegate { throw new Exception(); };
            string errorMessage = null;

            Messenger.Subscribe <ErrorMessage>(msg => errorMessage = msg.Message);

            var viewModel = new SessionsViewModel(Messenger, CodeCampService);
            await viewModel.Init();

            Assert.NotNull(errorMessage);
            Assert.False(viewModel.IsLoading);
            Assert.Null(viewModel.TimeSlots);
        }
예제 #14
0
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            if (this.NavigationContext.QueryString.ContainsKey("parameter"))
            {
                string newparameter = this.NavigationContext.QueryString["parameter"];
                if (newparameter.Equals("savedPivotItem"))
                {
                    sessionPivot.SelectedItem = savedPivotItem;
                    SessionsViewModel vm = this.DataContext as SessionsViewModel;
                    vm.RefreshSavedSessions(null);
                }
            }
        }
예제 #15
0
        public ActionResult Sessions(int?id)
        {
            var defaultEvent = service.GetDefaultEvent();
            int eventid      = defaultEvent.ID;

            ViewBag.Event = service.GetEvent(eventid);

            var sessions  = service.GetSessions(eventid);
            var timeSlots = service.GetTimeslots(eventid);

            var viewModel = new SessionsViewModel();

            foreach (var session in sessions)
            {
                if ((id == null) || (id == -1) || (session.TimeslotID == id))
                {
                    viewModel.Sessions.Add(new Session()

                    {
                        ID          = session.ID,
                        Name        = session.Name,
                        Description = session.Description,
                        Speaker     = session.Speaker,
                        ImageUrl    = session.ImageUrl,
                        Image       = session.Image,
                        SpeakerID   = session.SpeakerID,
                        StartTime   = session.StartTime.HasValue ? session.StartTime.Value.ToString() : string.Empty,
                        EndTime     = session.EndTime.HasValue ? session.EndTime.Value.ToString() : string.Empty,
                        Status      = session.Status,
                        Location    = string.IsNullOrEmpty(session.Location) ? string.Empty : session.Location
                    });
                }
            }

            foreach (var time in timeSlots)
            {
                viewModel.Timeslots.Add(new Timeslot()
                {
                    ID        = time.ID,
                    EventID   = time.EventID,
                    StartTime = time.StartTime,
                    EndTime   = time.EndTime,
                    Name      = time.Name
                });
            }

            return(View(viewModel));
        }
예제 #16
0
        public ActionResult Index()
        {
            var upcomingSessions = _context.Sessions
                                   .Include(s => s.GM)
                                   .Include(s => s.GameSystem)
                                   .Where(s => s.DateTime > DateTime.Now);

            var viewModel = new SessionsViewModel
            {
                UpcomingSessions = upcomingSessions,
                ShowActions      = User.Identity.IsAuthenticated,
                Heading          = "Upcoming Sessions"
            };

            return(View("Sessions", viewModel));
        }
예제 #17
0
 private void ListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
 {
     if (e.AddedItems.Count > 0)
     {
         SessionsViewModel vm      = this.DataContext as SessionsViewModel;
         Session           session = e.AddedItems[0] as Session;
         if (session != null)
         {
             _currentSessionId = session.SessionId;
             vm.SendSessionNavigatingMessage(session);
         }
         ListBox listbox = sender as ListBox;
         listbox.SelectedIndex = -1;
         NavigationService.Navigate(new System.Uri("/Views/SessionPage.xaml", System.UriKind.Relative));
     }
 }
예제 #18
0
        public ItineraryPage()
        {
            InitializeComponent();
            viewModel      = App.SimpleIoC.Resolve <SessionsViewModel>();
            BindingContext = viewModel;

            //DS 010715 CodeSmell - Use Commanding
            ListSessions.ItemSelected += (sender, e) => {
                viewModel.CurrentSession = (Eventarin.Core.Models.Session)e.SelectedItem;
                var sessionID = 0;
                {
                    if (viewModel.CurrentSession != null)
                    {
                        sessionID = viewModel.CurrentSession.Id;
                        viewModel.SessionItemClicked.Execute(sessionID);
                    }
                }
            };



//			this.ToolbarItems.Add(new ToolbarItem {
//                Text = "Refresh",
//				Icon = "reload.png",
//				Command = viewModel.RefreshCommand
//			});
            //this.ToolbarItems.Clear ();
//			var hamburgerItem = new ToolbarItem ();
//			hamburgerItem.Order = ToolbarItemOrder.Primary;
//			hamburgerItem.Priority = 0;
//			hamburgerItem.Text = "Back to sessions";
//

            //(TextCell = "Sessions", "hamburger_menu_icon.png", Action.Combine, ToolbarItemOrder.Primary, 0);
            //	this.ToolbarItems.Add (hamburgerItem);
//			this.ToolbarItems.Add(new ToolbarItem {
//				Text = "",
//
//				Icon = "hamburger_menu_icon.png",
//
//				Command = viewModel.RefreshCommand
//
//			});
            //

            this.BackgroundColor = Color.White;
        }
        public void ViewSessionCommand_NavigatesToSession()
        {
            var session = new Session {
                Id = 42
            };
            var viewModel = new SessionsViewModel(Messenger, CodeCampService);

            viewModel.ViewSessionCommand.Execute(session);

            Assert.AreEqual(1, Dispatcher.ShowViewModelRequests.Count);

            var request       = Dispatcher.ShowViewModelRequests.Single();
            var navParameters = request.ParameterValues.Read(typeof(SessionViewModel.NavigationParameters)) as SessionViewModel.NavigationParameters;

            Assert.NotNull(navParameters);
            Assert.AreEqual(session.Id, navParameters.Id);
        }
        public async Task <IActionResult> Sessions(GetSessionsRequest request)
        {
            var viewModel = new SessionsViewModel(request);

            if (ModelState.IsValid)
            {
                var response = await _adminService.GetSessions(request);

                if (response.IsSuccessful)
                {
                    viewModel.Sessions       = response.Sessions;
                    viewModel.SelectedFilter = response.SelectedFilter;
                    return(View(viewModel));
                }
            }
            AddNotifications(request);
            return(View(viewModel));
        }
예제 #21
0
        public ActionResult Create(SessionsViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    SessionManager.CreateSession(viewModel.TimeAndDate);
                    DataContext.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                catch (CinematicException ex)
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                    return(View(viewModel));
                }
            }

            return(View(viewModel));
        }
        private void _trackedUsersManager_SessionUserUpdated(object sender, RLTracker.Models.Session.Session e)
        {
            var selectedItem = TrackedUserGrid.SelectedItem;

            if (selectedItem != null)
            {
                var record = selectedItem as TrackedUserViewModel;

                sessionsViewModel = new SessionsViewModel();
                ViewModelMapper.SessionViewModel(e, sessionsViewModel, record.Name);
                SelectedPlayer.Content       = record.Name;
                SessionsDataGrid.DataContext = sessionsViewModel.Sessions;
                SessionsDataGrid.Items.Refresh();
                if (TrackedGrid.RowDefinitions[2].Height == new GridLength(0))
                {
                    TrackedGrid.RowDefinitions[2].Height = new GridLength(TrackedGrid.ActualHeight / 2 - 5);
                }
            }
        }
        public SessionsPage()
        {
            InitializeComponent();
            viewModel      = App.SimpleIoC.Resolve <SessionsViewModel>();
            BindingContext = viewModel;


            this.ToolbarItems.Add(new ToolbarItem {
                Name    = "Refresh",
                Icon    = "nav_refresh.png",
                Command = viewModel.RefreshCommand
            });

            ListSessions.ItemSelected += (sender, e) =>
            {
                viewModel.CurrentSession = (Eventarin.Core.Models.Session)e.SelectedItem;
                viewModel.SessionItemClicked.Execute(viewModel.CurrentSession.Id);
            };
        }
예제 #24
0
        public ActionResult Playing()
        {
            var userId   = User.Identity.GetUserId();
            var sessions = _context.Players
                           .Where(p => p.PlayerId == userId)
                           .Select(p => p.Session)
                           .Include(g => g.GM)
                           .Include(g => g.GameSystem)
                           .ToList();

            var viewModel = new SessionsViewModel()
            {
                UpcomingSessions = sessions,
                ShowActions      = User.Identity.IsAuthenticated,
                Heading          = "Sessions I'm Attending"
            };

            return(View("Sessions", viewModel));
        }
        public SessionsPage()
        {
            InitializeComponent();
            viewModel      = App.SimpleIoC.Resolve <SessionsViewModel>();
            BindingContext = viewModel;


            stackSessions.HeightRequest = 250 * viewModel.Sessions.Count;

            //DS 010715 CodeSmell - Use Commanding. Research why the EventarinCell Command is always null
            ListSessions.ItemSelected += (sender, e) => {
                viewModel.CurrentSession = (Eventarin.Core.Models.Session)e.SelectedItem;
                var sessionID = 0;
                {
                    if (viewModel.CurrentSession != null)
                    {
                        sessionID = viewModel.CurrentSession.Id;
                        viewModel.SessionItemClicked.Execute(sessionID);
                    }
                }
            };
        }
예제 #26
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            if (isNewInstance)
            {
                if (viewModel == null)
                {
                    viewModel = new SessionsViewModel();

                    if (State.Count > 0)
                    {
                        viewModel = (SessionsViewModel)State["viewModel"];
                    }
                    else
                    {
                        viewModel = new SessionsViewModel();
                        viewModel.Load();
                    }
                    DataContext = viewModel;
                }
            }
            isNewInstance = false;
        }
예제 #27
0
        public ActionResult Create(int?id, DateTime?SelectedDate)
        {
            // Return to Index if id is null
            if (id == null)
            {
                return(RedirectToAction("Index"));
            }

            // Get the dining type matching the id
            var diningType = DbContext.DiningType.FirstOrDefault(x => x.Id == id);

            // If no dining type was found return error
            if (diningType == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Id = id;
            //if (Date != null)
            //    ViewBag.Date = Date;

            // Load all reservations for upcoming dates or for a specific date
            List <Reservation> reservations;

            if (SelectedDate == null)
            {
                reservations = DbContext.Reservation.Include(x => x.Table).Where(x => x.StartTime >= DateTime.Now && x.EndTime >= DateTime.Now).ToList();
            }
            else
            {
                DateTime tempDate = SelectedDate.Value;

                reservations = DbContext.Reservation.Include(x => x.Table).AsEnumerable().Where(x => x.StartTime <= /*>=*/ DateTime.Now && x.EndTime >= DateTime.Now /*&& x.StartTime.Date == tempDate.Date*/).ToList();
            }
            // Length of the dining type
            var length = new TimeSpan(diningType.Length.Hour, diningType.Length.Minute, diningType.Length.Second);

            // Extra time of the dining type
            var extra = new TimeSpan(diningType.ExtraTime.Hour, diningType.ExtraTime.Minute, diningType.ExtraTime.Second);

            // List for all available sessions
            var list = new List <Session>();

            // Loop through and add all available dining sessions
            for (DateTime time = diningType.StartTime; time < diningType.EndTime; time = time.Add(length).Add(extra))
            {
                list.Add(new Session()
                {
                    StartTime = time, EndTime = time.Add(length).Add(extra)
                });
            }

            // Get all tables
            List <Table> Tables;

            Tables = DbContext.Table.Include(x => x.Reservations.Select(r => r.Orders)).ToList();

            //if (Date == null)
            //    Tables = DbContext.Table.Include(x => x.Reservations).ToList().Where(r => r.Reservations.se >= DateTime.Now && r.EndTime >= DateTime.Now).ToList();
            //else
            //    Tables = DbContext.Table.Include(x => x.Reservations.Where(r => r.StartTime >= DateTime.Now && r.EndTime >= DateTime.Now && Date == r.StartTime.Date)).ToList();

            // List of table viewmodel
            var TablesModel = new List <TableViewModel>();

            // Loop through the tables
            foreach (var table in Tables)
            {
                var sessions = new List <Session>();
                // Loop through all sessions
                foreach (var s in list)
                {
                    // Check if session is available for the table
                    var available = table.Reservations.FirstOrDefault(x => x.StartTime >= s.StartTime && x.EndTime <= s.StartTime) == null;

                    // Add the session to the list
                    sessions.Add(new Session()
                    {
                        StartTime = s.StartTime, EndTime = s.EndTime, Available = available
                    });
                }

                // Add the table with session data to the list
                TablesModel.Add(new TableViewModel()
                {
                    Session = sessions, Table = table
                });
            }

            // Create viewmodel
            var viewModel = new SessionsViewModel()
            {
                SelectedDate = SelectedDate,
                Sessions     = list,
                Tables       = TablesModel,
            };

            // Return view with a viewmodel holding all the data
            return(View(viewModel));
        }
예제 #28
0
        // GET: Sessions/Create
        public ActionResult Create()
        {
            var viewModel = new SessionsViewModel();

            return(View(viewModel));
        }
예제 #29
0
 public SessionPage()
 {
     InitializeComponent();
     viewModel      = App.SimpleIoC.Resolve <SessionsViewModel> ();
     BindingContext = viewModel;
 }
 /// <summary>
 /// Provides a deterministic way to delete the Sessions property.
 /// </summary>
 public static void ClearSessions()
 {
     _sessions.Cleanup();
     _sessions = null;
 }
예제 #31
0
 /// <summary>
 /// Provides a deterministic way to create the Sessions property.
 /// </summary>
 public static void CreateSessions()
 {
     if (_sessions == null)
     {
         _sessions = new SessionsViewModel();
     }
 }
예제 #32
0
 /// <summary>
 /// Provides a deterministic way to delete the Sessions property.
 /// </summary>
 public static void ClearSessions()
 {
     _sessions.Cleanup();
     _sessions = null;
 }