private void SaveDefaultFolder(NavigationGroups nav, NavigationFolder folder) { NavigationGroup group = null; foreach (NavigationGroup g in nav) { if (group == null) { foreach (NavigationFolder f in g.NavigationFolders) { if (f == folder) { group = g; break; } } } } // NOTE: this should be impossible, but don't crash. if (group == null) { return; } RegistryKey rKey = Registry.CurrentUser.CreateSubKey(REG_PATH); rKey.SetValue("DefaultGroup", group.Name); rKey.SetValue("DefaultFolder", folder.DisplayName); }
public async Task <IActionResult> PutNavigationGroup(string id, NavigationGroup navigationGroup) { if (id != navigationGroup.Id) { return(BadRequest()); } _context.Entry(navigationGroup).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!NavigationGroupExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <IActionResult> Edit(string id, NavigationGroup navigationGroup) { if (id != navigationGroup.Id) { return(NotFound()); } if (ModelState.IsValid) { var myContent = JsonConvert.SerializeObject(navigationGroup); var buffer = System.Text.Encoding.UTF8.GetBytes(myContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (HttpResponseMessage res = await _client.PutAsync(SD.ClientApiNavigationGroups + "/" + id, byteContent)) { return(RedirectToAction(nameof(Index))); } //bool resSuccess = res.IsSuccessStatusCode; //var resReason = res.ReasonPhrase; //string errorMessage = "Message: 404 Not Found - from external API"; //_log.LogError(errorMessage); // throw new ExternalException(errorMessage); } return(View(navigationGroup)); }
public async Task <IActionResult> Create(NavigationGroup navigationGroup) { if (ModelState.IsValid) { var myContent = JsonConvert.SerializeObject(navigationGroup); var buffer = System.Text.Encoding.UTF8.GetBytes(myContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (HttpResponseMessage res = await _client.PostAsync(SD.ClientApiNavigationGroups, byteContent)) { return(RedirectToAction(nameof(Index))); } } return(View(navigationGroup)); }
// GET: NavigationGroups/Edit/5 public async Task <IActionResult> Edit(string id) { HttpResponseMessage res = await _client.GetAsync(SD.ClientApiNavigationGroups + "/" + id); if (id == null) { return(NotFound()); } NavigationGroup navigationGroup = JsonConvert.DeserializeObject <NavigationGroup>(res.Content.ReadAsStringAsync().Result); if (navigationGroup == null) { return(NotFound()); } return(View(navigationGroup)); }
public async Task <ActionResult <NavigationGroup> > PostNavigationGroup(NavigationGroup navigationGroup) { _context.NavigationGroup.Add(navigationGroup); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (NavigationGroupExists(navigationGroup.Id)) { return(Conflict()); } else { throw; } } return(CreatedAtAction("GetNavigationGroup", new { id = navigationGroup.Id }, navigationGroup)); }
public IFilter <LinkedNavigationEvent> GetLinkedNavigationFilter(NavigationAction navigationAction, NavigationGroup navigationGroup, Color colorGroup) { return(new LinkedEventFilter(navigationAction, navigationGroup, colorGroup)); }
private void AddNavigationItems() { foreach (NavigationInfo navigation in _context.Navigation) { if (navigation.GroupName == null) { MenuDropDownItem menuItem = CollectionUtils.Find( _context.Portal.MenuItems, delegate(MenuDropDownItem item) { return StringUtils.CaseInsensitiveEquals(item.ItemId, navigation.GroupId); }); if (menuItem == null) { menuItem = new MenuDropDownItem(); _context.Portal.MenuItems.Add(menuItem); } menuItem.ItemId = navigation.Id; menuItem.NavUrl = navigation.NavUrl; menuItem.Title = navigation.Caption ?? string.Empty; if (navigation.Glyph != null) { string extension; if (navigation.Glyph is Metafile) //vector { extension = "emf"; } else if (navigation.Glyph.GetFrameCount(FrameDimension.Time) > 1 || //animated (navigation.Glyph.PixelFormat & PixelFormat.Indexed) == PixelFormat.Indexed) //indexed { extension = "gif"; } else if ((navigation.Glyph.PixelFormat & PixelFormat.Alpha) == PixelFormat.Alpha) //transparency { extension = "png"; } else { extension = "jpg"; } string name = string.Format("{0}_{1}x{2}.{3}", navigation.SafeCaption, navigation.Glyph.Width, navigation.Glyph.Height, extension); _context.GlobalImageResourceManager.AddUpdateResource(name, navigation.Glyph); menuItem.SmallImageUrl = string.Format("[Localization.Global_Images:{0}]", name); } menuItem.Validate(); menuItem.Save(); navigation.Item = menuItem; } else { NavigationGroup navGroup = CollectionUtils.Find( _context.Portal.NavigationGroups, delegate(NavigationGroup item) { return StringUtils.CaseInsensitiveEquals(item.ItemId, navigation.GroupId); }); if (navGroup == null) { navGroup = new NavigationGroup(); _context.Portal.NavigationGroups.Add(navGroup); } navGroup.ItemId = navigation.GroupId; navGroup.Title = navigation.GroupName; navGroup.Description = navigation.GroupName; NavigationItem navItem = CollectionUtils.Find( navGroup.NavItems, delegate(NavigationItem item) { return StringUtils.CaseInsensitiveEquals(item.ItemId, navigation.Id); }); if (navItem == null) { navItem = new NavigationItem(); navGroup.NavItems.Add(navItem); } navItem.ItemId = navigation.Id; navItem.NavUrl = navigation.NavUrl; navItem.Title = navigation.Caption ?? string.Empty; navItem.Description = navigation.Caption ?? string.Empty; if (navigation.Glyph != null) { string extension; if (navigation.Glyph is Metafile) //vector { extension = "emf"; } else if (navigation.Glyph.GetFrameCount(FrameDimension.Time) > 1 || //animated (navigation.Glyph.PixelFormat & PixelFormat.Indexed) == PixelFormat.Indexed) //indexed { extension = "gif"; } else if ((navigation.Glyph.PixelFormat & PixelFormat.Alpha) == PixelFormat.Alpha) //transparency { extension = "png"; } else { extension = "jpg"; } string name = string.Format("{0}_{1}x{2}.{3}", navigation.SafeCaption, navigation.Glyph.Width, navigation.Glyph.Height, extension); _context.GlobalImageResourceManager.AddUpdateResource(name, navigation.Glyph); navItem.LargeImageUrl = string.Format("[Localization.Global_Images:{0}]", name); } navItem.Validate(); navItem.Save(); navGroup.Validate(); navGroup.Save(); navigation.Item = navItem; } } _context.GlobalImageResourceManager.SaveAll(); }
private NavigationData GetNavigationData( CampusCache campus ) { using ( var rockContext = new RockContext() ) { var validLocationids = new List<int>(); if ( campus.LocationId.HasValue ) { // Get all the child locations validLocationids.Add( campus.LocationId.Value ); new LocationService( rockContext ) .GetAllDescendents( campus.LocationId.Value ) .Select( l => l.Id ) .ToList() .ForEach( l => validLocationids.Add( l ) ); } var groupTypeTemplateGuid = PageParameter( "Area" ).AsGuidOrNull(); if ( !groupTypeTemplateGuid.HasValue ) { groupTypeTemplateGuid = this.GetAttributeValue( "GroupTypeTemplate" ).AsGuidOrNull(); } if ( !groupTypeTemplateGuid.HasValue ) { // Check to see if a specific group was specified Guid? guid = Rock.SystemGuid.DefinedValue.GROUPTYPE_PURPOSE_CHECKIN_TEMPLATE.AsGuid(); int? groupId = PageParameter( "Group" ).AsIntegerOrNull(); if ( groupId.HasValue && guid.HasValue ) { var group = new GroupService( rockContext ).Get( groupId.Value ); if ( group != null && group.GroupType != null ) { var groupType = GetParentPurposeGroupType( group.GroupType, guid.Value ); if ( groupType != null ) { groupTypeTemplateGuid = groupType.Guid; } } } } if ( groupTypeTemplateGuid.HasValue ) { pnlContent.Visible = true; NavData = new NavigationData(); var chartTimes = GetChartTimes(); // Get the group types var parentGroupType = GroupTypeCache.Read( groupTypeTemplateGuid.Value ); if ( parentGroupType != null ) { foreach ( var childGroupType in parentGroupType.ChildGroupTypes ) { AddGroupType( childGroupType, chartTimes ); } } // Get the groups var groupTypeIds = NavData.GroupTypes.Select( t => t.Id ).ToList(); var groups = new GroupService( rockContext ) .Queryable( "GroupLocations" ).AsNoTracking() .Where( g => groupTypeIds.Contains( g.GroupTypeId ) && g.IsActive ) .ToList(); var groupIds = groups.Select( g => g.Id ).ToList(); foreach( var group in groups ) { var childGroupIds = groups .Where( g => g.ParentGroupId.HasValue && g.ParentGroupId.Value == group.Id ) .Select( g => g.Id ) .ToList(); var childLocationIds = group.GroupLocations .Where( l => validLocationids.Contains( l.LocationId ) ) .Select( l => l.LocationId ) .ToList(); if ( childLocationIds.Any() || childGroupIds.Any() ) { var navGroup = new NavigationGroup( group, chartTimes ); navGroup.ChildLocationIds = childLocationIds; navGroup.ChildGroupIds = childGroupIds; NavData.Groups.Add( navGroup ); if ( !group.ParentGroupId.HasValue || groupIds.Contains( group.ParentGroupId.Value ) ) { NavData.GroupTypes.Where( t => t.Id == group.GroupTypeId ).ToList() .ForEach( t => t.ChildGroupIds.Add( group.Id ) ); } } } // Remove any groups without child locations var emptyGroupIds = NavData.Groups .Where( g => !g.ChildGroupIds.Any() && !g.ChildLocationIds.Any() ) .Select( g => g.Id ) .ToList(); while ( emptyGroupIds.Any() ) { NavData.Groups = NavData.Groups.Where( g => !emptyGroupIds.Contains( g.Id ) ).ToList(); NavData.Groups.ForEach( g => g.ChildGroupIds = g.ChildGroupIds.Where( c => !emptyGroupIds.Contains( c ) ).ToList() ); emptyGroupIds = NavData.Groups .Where( g => !g.ChildGroupIds.Any() && !g.ChildLocationIds.Any() ) .Select( g => g.Id ) .ToList(); } // Remove any grouptype without groups var emptyGroupTypeIds = NavData.GroupTypes .Where( t => !t.ChildGroupIds.Any() && !t.ChildGroupTypeIds.Any() ) .Select( t => t.Id ) .ToList(); while ( emptyGroupTypeIds.Any() ) { NavData.GroupTypes = NavData.GroupTypes.Where( t => !emptyGroupTypeIds.Contains( t.Id ) ).ToList(); NavData.GroupTypes.ForEach( t => t.ChildGroupTypeIds = t.ChildGroupTypeIds.Where( c => !emptyGroupTypeIds.Contains( c ) ).ToList() ); emptyGroupTypeIds = NavData.GroupTypes .Where( t => !t.ChildGroupIds.Any() && !t.ChildGroupTypeIds.Any() ) .Select( t => t.Id ) .ToList(); } // If not group types left, redirect to area select page if ( NavData.GroupTypes.Count == 0 ) { NavigateToLinkedPage( "AreaSelectPage" ); } // Get the locations var locationIds = NavData.Groups.SelectMany( g => g.ChildLocationIds ).Distinct().ToList(); foreach ( var location in new LocationService( rockContext ) .Queryable( "ParentLocation" ).AsNoTracking() .Where( l => locationIds.Contains( l.Id ) ) ) { var navLocation = AddLocation( location, chartTimes ); navLocation.HasGroups = true; } // Get the attendance counts var dayStart = RockDateTime.Today; var now = RockDateTime.Now; groupIds = NavData.Groups.Select( g => g.Id ).ToList(); var attendances = new AttendanceService( rockContext ).Queryable() .Where( a => a.ScheduleId.HasValue && a.GroupId.HasValue && a.LocationId.HasValue && a.StartDateTime > dayStart && a.StartDateTime < now && a.DidAttend.HasValue && a.DidAttend.Value && groupIds.Contains( a.GroupId.Value ) && locationIds.Contains( a.LocationId.Value ) ) .ToList(); var schedules = new ScheduleService( rockContext ).Queryable() .Where( s => s.CheckInStartOffsetMinutes.HasValue ) .ToList(); foreach ( DateTime chartTime in chartTimes ) { // Get the active schedules var activeSchedules = new List<int>(); foreach ( var schedule in schedules ) { if ( schedule.WasScheduleOrCheckInActive( chartTime ) ) { activeSchedules.Add( schedule.Id ); } } bool current = chartTime.Equals( chartTimes.Max() ); foreach ( var groupLocSched in attendances .Where( a => a.StartDateTime < chartTime && a.PersonAlias != null && activeSchedules.Contains( a.ScheduleId.Value ) ) .GroupBy( a => new { ScheduleId = a.ScheduleId.Value, GroupId = a.GroupId.Value, LocationId = a.LocationId.Value } ) .Select( g => new { ScheduleId = g.Key.ScheduleId, GroupId = g.Key.GroupId, LocationId = g.Key.LocationId, PersonIds = g.Select( a => a.PersonAlias.PersonId ).Distinct().ToList() } ) ) { AddGroupCount( chartTime, groupLocSched.GroupId, groupLocSched.PersonIds, current ); AddLocationCount( chartTime, groupLocSched.LocationId, groupLocSched.PersonIds, current ); } } return NavData; } else { if ( string.IsNullOrWhiteSpace( PageParameter( "Area" ) ) ) { // If could not determine area and did not come from are select, redirect to area select page NavigateToLinkedPage( "AreaSelectPage" ); } nbWarning.Text = "Please select a valid Check-in type in the block settings."; nbWarning.Visible = true; pnlContent.Visible = false; } } return null; }
private async Task loadDataAsync(string prefix) { lock (_lock) { if (this._navigationGroups.Count != 0) { return; } } Uri dataUri; string fileName; if (string.IsNullOrEmpty(prefix)) { fileName = "NavigationData.json"; } else { fileName = prefix + "NavigationData.json"; } if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { dataUri = new Uri("ms-appx:///Data/DesignTimeData/" + fileName); } else { dataUri = new Uri("ms-appx:///Data/DemoData/" + fileName); } StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri); string jsonText = await FileIO.ReadTextAsync(file); JsonObject jsonObject = JsonObject.Parse(jsonText); JsonArray jsonArray = jsonObject["Groups"].GetArray(); lock (_lock) { foreach (JsonValue groupValue in jsonArray) { JsonObject groupObject = groupValue.GetObject(); NavigationGroup group = new NavigationGroup(groupObject["UniqueId"].GetString(), groupObject["Title"].GetString(), groupObject["Subtitle"].GetString(), groupObject["ImagePath"].GetString(), groupObject["Description"].GetString()); foreach (JsonValue itemValue in groupObject["Items"].GetArray()) { JsonObject itemObject = itemValue.GetObject(); var item = new NavigationItem(itemObject["UniqueId"].GetString(), itemObject["Title"].GetString(), itemObject["Subtitle"].GetString(), itemObject["ImagePath"].GetString(), itemObject["Description"].GetString(), itemObject["Content"].GetString(), itemObject["TargetUri"].GetString(), itemObject["TargetParamaters"].GetString() ); //if (itemObject.ContainsKey("Docs")) //{ // foreach (JsonValue docValue in itemObject["Docs"].GetArray()) // { // JsonObject docObject = docValue.GetObject(); // item.Docs.Add(new ControlInfoDocLink(docObject["Title"].GetString(), docObject["Uri"].GetString())); // } //} if (itemObject.ContainsKey("RelatedItems")) { foreach (JsonValue relateddItemValue in itemObject["RelatedItems"].GetArray()) { item.RelatedItems.Add(relateddItemValue.GetString()); } } group.Items.Add(item); } if (!this.NavigationGroups.Any(g => g.Title == group.Title)) { this.NavigationGroups.Add(group); } } } }
public LinkedEventFilter(NavigationAction navigationAction, NavigationGroup navigationGroup, Color colorGroup) { _navigationAction = navigationAction; _navigationGroup = navigationGroup; _colorGroup = colorGroup; }
public string CurrentPageKey(NavigationGroup group) { return currentPageKey(getFrame(group)); }
public void NavigateTo(string pageKey, NavigationGroup group = NavigationGroup.Default, object parameter = null) { navigateTo(getFrame(group), pageKey, parameter); }
public void GoBack(NavigationGroup group = NavigationGroup.Default) { goBack(getFrame(group)); }
private Frame getFrame(NavigationGroup group) { return group == NavigationGroup.Default ? _framesByGroup[NavigationGroup.A] : _framesByGroup[group]; }
public void RegisterGroup(Frame frame, NavigationGroup group = NavigationGroup.Default) { _framesByGroup.Add(group == NavigationGroup.Default ? NavigationGroup.A : group, frame); }