Beispiel #1
0
        internal bool AddListItem(SRL_Ingredient ingredient, int listId, int sourceId)
        {
            using (DataContext)
            {
                SummeryListDetail summeryListDetail;
                try
                {
                    // Get the food id
                    Food food = (from p in DataContext.Foods where p.FoodName == ingredient.FoodName select p).SingleOrDefault();
                    if (food != null)
                    {
                        ingredient.FoodId = food.FoodId;
                    }

                    // Add to Summery Sources
                    if (food != null)
                    {
                        SummerySource summerySource = (from p in DataContext.SummerySources
                                                       where
                                                       p.SUMMERY_ID == listId && p.SOURCE_ID == sourceId &&
                                                       p.FOOD_ID == food.FoodId
                                                       select p).SingleOrDefault();
                        if (summerySource == null)
                        {
                            summerySource = new SummerySource
                            {
                                SUMMERY_ID = listId,
                                SOURCE_ID  = sourceId,
                                FOOD_ID    = food.FoodId,
                                QUANTITY   = ingredient.Quantity
                            };
                            DataContext.SummerySources.InsertOnSubmit(summerySource);
                        }
                        else
                        {
                            summerySource.QUANTITY = ingredient.Quantity;
                        }

                        DataContext.SubmitChanges();
                    }

                    // ReCalculate summery list
                    IQueryable <decimal?> summerySources = from p in DataContext.SummerySources where p.SUMMERY_ID == listId && p.FOOD_ID == ingredient.FoodId select p.QUANTITY;
                    decimal?sum = summerySources.Sum();

                    summeryListDetail = (from p in DataContext.SummeryListDetails
                                         where p.LIST_ID == listId && p.FOOD_ID == ingredient.FoodId
                                         select p).SingleOrDefault();

                    if (summeryListDetail == null)
                    {
                        summeryListDetail = new SummeryListDetail
                        {
                            FOOD_ID             = ingredient.FoodId,
                            FOOD_NAME           = ingredient.FoodName,
                            LIST_ID             = listId,
                            QUANTITY            = sum.HasValue ? sum.Value : 0,
                            MEASUREMENT_UNIT_ID = ingredient.MeasurementUnitId,
                            MEASUREMENT_UNIT    = ingredient.MeasurementUnitName
                        };
                        DataContext.SummeryListDetails.InsertOnSubmit(summeryListDetail);
                    }
                    else
                    {
                        summeryListDetail.QUANTITY = sum.HasValue ? sum.Value : 0;
                    }
                    DataContext.SubmitChanges();

                    return(true);
                }
                catch
                {
                    return(false);
                }
            }
        }
Beispiel #2
0
        internal void DeleteListItem(int summeryId, int sourceId, SRL_Ingredient ingredient)
        {
            using (DataContext)
            {
                try
                {
                    SummerySource summerySource = (from p in DataContext.SummerySources
                                                   where
                                                   p.SUMMERY_ID == summeryId && p.SOURCE_ID == sourceId &&
                                                   p.FOOD_ID == ingredient.FoodId
                                                   select p).SingleOrDefault();
                    if (summerySource != null)
                    {
                        summerySource.QUANTITY -= ingredient.Quantity;
                        if (summerySource.QUANTITY <= 0)
                        {
                            DataContext.SummerySources.DeleteOnSubmit(summerySource);
                        }
                    }

                    // ReCalculate summery list
                    IQueryable <decimal?> summerySources = from p in DataContext.SummerySources where p.SUMMERY_ID == summeryId && p.FOOD_ID == ingredient.FoodId select p.QUANTITY;
                    decimal?sum = summerySources.Sum() - ingredient.Quantity;

                    SummeryListDetail summeryListDetail = (from p in DataContext.SummeryListDetails
                                                           where p.LIST_ID == summeryId && p.FOOD_ID == ingredient.FoodId
                                                           select p).SingleOrDefault();

                    if (summeryListDetail == null)
                    {
                        if (sum > 0)
                        {
                            summeryListDetail = new SummeryListDetail
                            {
                                FOOD_ID             = ingredient.FoodId,
                                FOOD_NAME           = ingredient.FoodName,
                                LIST_ID             = summeryId,
                                QUANTITY            = sum.HasValue ? sum.Value : 0,
                                MEASUREMENT_UNIT_ID = ingredient.MeasurementUnitId,
                                MEASUREMENT_UNIT    = ingredient.MeasurementUnitName
                            };
                            DataContext.SummeryListDetails.InsertOnSubmit(summeryListDetail);
                        }
                    }
                    else
                    {
                        if (sum == 0)
                        {
                            DataContext.SummeryListDetails.DeleteOnSubmit(summeryListDetail);
                        }
                        else
                        {
                            summeryListDetail.QUANTITY = sum.HasValue ? sum.Value : 0;
                        }
                    }

                    DataContext.SubmitChanges();
                }
                catch (Exception)
                {
                }
            }
        }