Exemple #1
0
        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);
        }
Exemple #2
0
        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());
        }
Exemple #3
0
        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));
        }
Exemple #4
0
 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));
 }
Exemple #5
0
        // 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));
        }
Exemple #6
0
        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();
        }
Exemple #9
0
        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);
                    }
                }
            }
        }
Exemple #11
0
 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);
 }