Exemplo n.º 1
0
        public IList <ShoppingList> List()
        {
            var options = new GetShoppingListOptions
            {
                LoadItems = loadItems
            };

            return(context.GetShoppingLists(listsToLoad, options));
        }
Exemplo n.º 2
0
 public ShoppingList[] GetShoppingLists(IList <ShoppingList> lists, GetShoppingListOptions options)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 3
0
        public ShoppingList[] GetShoppingLists(AuthIdentity identity, IList<ShoppingList> lists, GetShoppingListOptions options)
        {
            using (var session = this.GetSession())
            {
                var loadDef = true;
                var query = session.QueryOver<ShoppingLists>()
                   .Where(p => p.UserId == identity.UserId);

                if (lists != null)
                {
                    loadDef = lists.Contains(ShoppingList.Default);
                    var ids = lists.Where(l => l.Id.HasValue).Select(l => l.Id.Value).ToArray();
                    query = query.AndRestrictionOn(x => x.ShoppingListId).IsInG(ids);
                }

                var shoppingListses = query.List();
                var ret = new List<ShoppingList>();

                if (loadDef)
                {
                    ret.Add(ShoppingList.Default);
                }

                ret.AddRange(shoppingListses.Select(l => l.AsShoppingList()));

                if (!options.LoadItems)
                {
                    return ret.ToArray();
                }

                // Load items into each list
                ICriterion filter = loadDef
                   ? Restrictions.Or(Restrictions.IsNull("ShoppingList"), Restrictions.InG("ShoppingList", shoppingListses)) // Menu can be null, or in loaded menu list
                   : Restrictions.InG("ShoppingList", shoppingListses); // Menu must be in loaded menu list

                var shoppingListItemses = session.QueryOver<ShoppingListItems>()
                   .Fetch(prop => prop.Ingredient).Eager
                   .Fetch(prop => prop.Recipe).Eager
                   .Where(p => p.UserId == identity.UserId)
                   .Where(filter)
                   .List();

                return ret.Select(m =>
                   new ShoppingList(
                      m.Id,
                      m.Title,
                      (m.Id.HasValue
                         ? shoppingListItemses.Where(f => f.ShoppingList != null && f.ShoppingList.ShoppingListId == m.Id)
                           : shoppingListItemses.Where(f => f.ShoppingList == null)).Select(r => r.AsShoppingListItem()))).ToArray();
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Returns one or more saved shopping lists from the current user.
 /// </summary>
 /// <param name="lists">A list of ShoppingList objects indicating the ID of the list to load, or ShoppingList.Default for the default list.</param>
 /// <param name="options">Indicates what data to load.  Use GetShoppingListOptions.None to simply load the names of the lists.</param>
 /// <returns>An array of ShoppingList objects with all the desired properties loaded.</returns>
 public virtual ShoppingList[] GetShoppingLists(IList <ShoppingList> lists, GetShoppingListOptions options)
 {
     return(Adapter.GetShoppingLists(Identity, lists, options));
 }
Exemplo n.º 5
0
        public ShoppingList[] GetShoppingLists(AuthIdentity identity, IList <ShoppingList> lists, GetShoppingListOptions options)
        {
            using (var session = GetSession())
            {
                var loadDef = true;
                var query   = session.QueryOver <Models.ShoppingLists>()
                              .Where(p => p.UserId == identity.UserId);

                if (lists != null) // Load individual lists
                {
                    loadDef = lists.Contains(ShoppingList.Default);
                    var ids = lists.Where(l => l.Id.HasValue).Select(l => l.Id.Value).ToArray();
                    query = query.AndRestrictionOn(x => x.ShoppingListId).IsInG(ids);
                }

                var dbLists = query.List();
                var ret     = new List <ShoppingList>();

                if (loadDef)
                {
                    ret.Add(ShoppingList.Default);
                }

                ret.AddRange(dbLists.Select(l => l.AsShoppingList()));

                if (!options.LoadItems) // We're done!
                {
                    return(ret.ToArray());
                }

                // Load items into each list
                ICriterion filter = (loadDef
               ? Expression.Or(Expression.IsNull("ShoppingList"), Expression.InG("ShoppingList", dbLists)) // Menu can be null, or in loaded menu list
               : Expression.InG("ShoppingList", dbLists));                                                 // Menu must be in loaded menu list

                var dbItems = session.QueryOver <ShoppingListItems>()
                              .Fetch(prop => prop.Ingredient).Eager
                              .Fetch(prop => prop.Recipe).Eager
                              .Where(p => p.UserId == identity.UserId)
                              .Where(filter)
                              .List();

                return(ret.Select(m =>
                                  new ShoppingList(
                                      m.Id,
                                      m.Title,
                                      (m.Id.HasValue
                     ? dbItems.Where(f => f.ShoppingList != null && f.ShoppingList.ShoppingListId == m.Id)
                     : dbItems.Where(f => f.ShoppingList == null)).Select(r => r.AsShoppingListItem())
                                      )).ToArray());
            }
        }