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); }
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; }
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; }