public static DesiredProperties FromJsonObject(JObject appsNode)
            {
                List <AppDesiredState> appDesiredStates = new List <AppxManagementDataContract.AppDesiredState>();
                AppListQuery           appListQuery     = new AppListQuery();

                foreach (JProperty property in appsNode.Children())
                {
                    // Logger.Log("Property Name = " + property.Name, LoggingLevel.Verbose);
                    if (String.IsNullOrEmpty(property.Name))
                    {
                        continue;
                    }

                    if (property.Name == JsonQueryApps)
                    {
                        appListQuery = AppListQuery.FromJsonObject((JObject)property.Value);
                    }
                    else
                    {
                        appDesiredStates.Add(AppDesiredState.FromJsonObject(property.Name, property.Value));
                    }
                }

                return(new DesiredProperties(appDesiredStates, appListQuery));
            }
            public static AppListQuery FromJsonObject(JObject obj)
            {
                AppListQuery query = new AppListQuery();

                query.store    = Utils.GetBool(obj, JsonStore, false);
                query.nonStore = Utils.GetBool(obj, JsonNonStore, false);
                return(query);
            }
Exemple #3
0
        public AppListQuery Search(AppListQuery query) {
            List<IMongoQuery> mongoQueries = new List<IMongoQuery>();

            if (query.DeviceType != DeviceType.NotProvided) {
                mongoQueries.Add(
                    Query.Or(
                        Query.EQ("brief.deviceType", query.DeviceType),
                        Query.EQ("brief.deviceType", DeviceType.Universal)
                    )
                );
            }

            if (!String.IsNullOrEmpty(query.Category)) {
                Category category = Category.Get(query.Category);
                if (category != null) {
                    mongoQueries.Add(Query.EQ("brief.primaryCategory", category.Id));
                }
            }

            if (query.PriceMode == PriceMode.Free) {
                mongoQueries.Add(Query.EQ("brief.price", 0));
            }
            else if (query.PriceMode == PriceMode.Paid) {
                mongoQueries.Add(Query.GT("brief.price", 0));
            }

            if (query.UpdateType.HasValue) {
                mongoQueries.Add(Query.EQ("brief.lastValidUpdate.type", query.UpdateType.Value));
            }

            MongoCursor<App> baseCursor = mongoQueries.Count == 0 ?
                apps.FindAll() : 
                apps.Find(Query.And(mongoQueries.ToArray()));
            AppBrief[] result = baseCursor
                .SetFields("brief")
                .SetSkip(query.SkipSize)
                .SetLimit(query.TakeSize)
                .Select(a => a.Brief)
                .ToArray();
            query.Fill(result);

            return query;
        }
Exemple #4
0
        private ICollection<TrackingApp> RetrieveTrackingApps(AppUpdateType updateType, int size = 9) {
            AppListQuery appQuery = new AppListQuery() {
                UpdateType = updateType,
                PageIndex = 1,
                PageSize = size
            };
            appQuery = Repository.App.Search(appQuery);

            if (User.Identity.IsAuthenticated) {
                AppTrackQuery trackQuery = new AppTrackQuery() {
                    PageIndex = 1,
                    PageSize = appQuery.Result.Count,
                    User = CurrentUser.Id,
                    RelatedApps = appQuery.Result.Select(a => a.Id)
                };
                ICollection<AppTrack> tracks = Repository.AppTrack.Retrieve(trackQuery).Result;

                return new TrackingAppQuery(appQuery, tracks).Result;
            }
            else {
                return appQuery.Result.Select(a => new TrackingApp(a, null)).ToArray();
            }
        }
 public DesiredProperties(List <AppDesiredState> states, AppListQuery query)
 {
     appDesiredStates = states;
     appListQuery     = query;
 }