public static Group MoveListToHistory(string groupObjectId)
        {
            // Move list to history and gets the group
            Group g = GroupsDataAccess.GetInstance().MoveListToHistory(groupObjectId);

            return(g);
        }
 public static void UpdateGroup(Group group)
 {
     GroupsDataAccess.GetInstance().UpdateGroup(group);
 }
 public static void AddProduct(string groupObjectId, Product product)
 {
     GroupsDataAccess.GetInstance().AddProduct(groupObjectId, product);
 }
 public static Group GetGroupByID(string groupObjectId)
 {
     return(GroupsDataAccess.GetInstance().GetGroup(groupObjectId));
 }
 public static void UpdateGroupParticipents(string propertyName, List <string> value, string objectId)
 {
     GroupsDataAccess.GetInstance().UpdateGroupParticipents(propertyName, value, objectId);
 }
 public static Group AddGroup(Group group)
 {
     return(GroupsDataAccess.GetInstance().AddGroup(group));
 }
 public static List <Group> GetMyGroups(string userId)
 {
     return(GroupsDataAccess.GetInstance().GetMyGroups(userId));
 }
        private static Dictionary <string, double> GetProductFriquency(string groupObjectId)
        {
            // Move list to history and gets the group
            Group group = GroupsDataAccess.GetInstance().GetGroup(groupObjectId);
            Dictionary <string, double> dic = new Dictionary <string, double>();

            // If there is at least 10 history lists
            if (group.HistoryLists.Count >= 1)
            {
                DateTime firstListDate = DateTime.Now;;
                // Get all the lists from the last 3 monthes
                List <HistoryShoppingList> lists       = group.HistoryLists.Where(p => p.ShopDate > (DateTime.Today.AddMonths(-3))).ToList();
                List <HistoryProduct>      Allproducts = new List <HistoryProduct>();
                foreach (HistoryShoppingList list in lists)
                {
                    if (list.ShopDate.CompareTo(firstListDate) < 0)
                    {
                        firstListDate = list.ShopDate;
                    }
                    list.ProductsList.Distinct().ToList();
                    foreach (Product product in list.ProductsList)
                    {
                        Allproducts.Add(new HistoryProduct(product, list.ShopDate));
                    }
                }
                while (Allproducts.Count > 0)
                {
                    List <HistoryProduct> curProducts = Allproducts.Where(p => p.Name == Allproducts[0].Name).ToList();
                    List <double>         countPro    = new List <double>();

                    if (curProducts.Count > 2)
                    {
                        for (int i = 0; i <= (DateTime.Now - firstListDate).Days; i++)
                        {
                            bool found = false;
                            foreach (HistoryProduct hisPro in curProducts)
                            {
                                if ((hisPro.ShopDate - firstListDate).Days == i)
                                {
                                    countPro.Add(hisPro.Amount);
                                    found = true;
                                }
                            }
                            if (!found)
                            {
                                countPro.Add(0);
                            }
                        }
                        double quantity = GetRecomendedQuntity(countPro);
                        if (quantity >= 1)
                        {
                            dic.Add(curProducts[0].Name, Math.Round(quantity));
                        }
                    }
                    // delete the current products
                    int count = Allproducts.Count;
                    for (int index = 0; index < count; index++)
                    {
                        if (Allproducts[index].Name == curProducts[0].Name)
                        {
                            Allproducts.Remove(Allproducts[index]);
                            count--;
                        }
                    }
                }
            }

            return(dic);
        }