public Tuple <string, DateTime> GetNameAndDateAndMenuItems(hccCartItem cartItem, hccCartItemCalendar cartCalendar) //, out List<hccMenuItem> menuItems) { string newName = cartItem.SimpleName; DateTime?delDate = null; Tuple <string, DateTime> retVal = null; try { hccProductionCalendar prodCal = hccProductionCalendar.GetById(cartCalendar.CalendarID); if (prodCal != null) { hccProgramPlan plan = hccProgramPlan.GetById(cartItem.Plan_PlanID.Value); List <hccCartItemCalendar> cartCals = hccCartItemCalendar.GetByCartItemID(cartItem.CartItemID); hccCartItemCalendar cartCal = cartCals.Where(a => a.CalendarID == prodCal.CalendarID).SingleOrDefault(); if (cartCal != null) { int cartCalIndex = cartCals.IndexOf(cartCal); newName += " - Week: " + (cartCalIndex + 1).ToString(); delDate = prodCal.DeliveryDate; } } } catch { throw; } if (delDate.HasValue) { retVal = new Tuple <string, DateTime>(newName, delDate.Value); } return(retVal); }
public hccCartItemCalendar GetNextCartCalendar(DayOfWeek requiredDayOfWeek) { try { hccProductionCalendar prodCal = hccProductionCalendar.GetById(this.CalendarID); DateTime nextDeliveryDate = prodCal.DeliveryDate.AddDays(7); hccProductionCalendar nextProdCal = hccProductionCalendar.GetBy(nextDeliveryDate); int calendarId = 0; if (nextProdCal == null) { nextProdCal = new DAL.hccProductionCalendar { DeliveryDate = nextDeliveryDate, Name = "Delivery Date " + nextDeliveryDate.ToShortDateString(), OrderCutOffDate = nextDeliveryDate.AddDays(-8) }; calendarId = nextProdCal.Save(); } else { calendarId = nextProdCal.CalendarID; } var nextCartCalendar = hccCartItemCalendar.GetBy(this.CartItemID, calendarId); if (nextCartCalendar == null) { nextCartCalendar = new hccCartItemCalendar { CalendarID = calendarId, CartItemID = this.CartItemID }; nextCartCalendar.Save(); return(nextCartCalendar); } else { throw new Exception("hccCartItemCalendar - nextCartCalendar was expected to be null"); } } catch { throw; } }
public static List <MOTCartItem> GetFromCartCalendarForWaaG(hccCartItemCalendar cartCal) { List <MOTCartItem> retMotItems = new List <MOTCartItem>(); hccCartItem cartItem = hccCartItem.GetById(cartCal.CartItemID); hccProductionCalendar prodCal = hccProductionCalendar.GetById(cartCal.CalendarID); hccProgramPlan plan = hccProgramPlan.GetById(cartItem.Plan_PlanID.Value); List <hccProgramDefaultMenu> defMenus = hccProgramDefaultMenu.GetBy(cartCal.CalendarID, plan.ProgramID); List <hccMenuItem> planMeals = new List <hccMenuItem>(); defMenus.ForEach(delegate(hccProgramDefaultMenu defMenu) { hccCartDefaultMenuException cartDefMenuEx = hccCartDefaultMenuException.GetBy(defMenu.DefaultMenuID, cartCal.CartCalendarID); hccMenuItem selItem; Enums.CartItemSize selPortionSize; string prefsString = string.Empty; if (cartDefMenuEx == null) { selItem = hccMenuItem.GetById(defMenu.MenuItemID); selPortionSize = (Enums.CartItemSize)defMenu.MenuItemSizeID; prefsString = "None"; } else { selItem = hccMenuItem.GetById(cartDefMenuEx.MenuItemID); selPortionSize = (Enums.CartItemSize)cartDefMenuEx.MenuItemSizeID; prefsString = hccCartDefaultMenuExPref.GetPrefsBy(cartDefMenuEx.DefaultMenuExceptID) .Select(a => a.Name).DefaultIfEmpty("None").Aggregate((c, d) => c + ", " + d); } MOTCartItem curMotItem = null; if (selItem != null) { if (selPortionSize == Enums.CartItemSize.NoSize) { selPortionSize = Enums.CartItemSize.RegularSize; } curMotItem = new MOTCartItem { CartItem = cartItem, CartItemId = cartItem.CartItemID, CustomerName = cartItem.UserProfile.ParentProfileName, OrderNumber = cartItem.OrderNumber, DeliveryDate = prodCal.DeliveryDate, DayNumber = defMenu.DayNumber, ItemName = selItem.Name, MealType = selItem.MealType, PortionSize = Enums.GetEnumDescription(selPortionSize), Preferences = prefsString, ProfileName = cartItem.UserProfile.ProfileName, Servings = cartItem.Quantity.ToString() }; retMotItems.Add(curMotItem); } }); return(retMotItems); }
public static List <MOTCartItem> GetFromCartCalendarForMOT(hccCartItemCalendar cartCal) { try { List <MOTCartItem> retMotItems = new List <MOTCartItem>(); List <MOTCartItem> addlMotItems = new List <MOTCartItem>(); hccCartItem cartItem = hccCartItem.GetById(cartCal.CartItemID); hccProductionCalendar prodCal = hccProductionCalendar.GetById(cartCal.CalendarID); hccProgramPlan plan = hccProgramPlan.GetById(cartItem.Plan_PlanID.Value); List <hccProgramDefaultMenu> defMenus = hccProgramDefaultMenu.GetBy(cartCal.CalendarID, plan.ProgramID, plan.NumDaysPerWeek); List <hccMenuItem> planMeals = new List <hccMenuItem>(); defMenus.ForEach(delegate(hccProgramDefaultMenu defMenu) { hccCartDefaultMenuException cartDefMenuEx = hccCartDefaultMenuException.GetBy(defMenu.DefaultMenuID, cartCal.CartCalendarID); hccMenuItem selItem; Enums.CartItemSize selPortionSize = Enums.CartItemSize.NoSize; string prefsString = string.Empty; if (cartDefMenuEx == null) { selItem = hccMenuItem.GetById(defMenu.MenuItemID); selPortionSize = (Enums.CartItemSize)defMenu.MenuItemSizeID; prefsString = "None"; } else { selItem = hccMenuItem.GetById(cartDefMenuEx.MenuItemID); selPortionSize = (Enums.CartItemSize)cartDefMenuEx.MenuItemSizeID; try { prefsString = string.Empty; List <hccPreference> prefs = hccCartDefaultMenuExPref.GetPrefsBy(cartDefMenuEx.DefaultMenuExceptID); prefsString = prefs.Select(a => a.Name).DefaultIfEmpty("None").Aggregate((c, d) => c + ", " + d); } catch (Exception) { throw; } } if (selPortionSize == Enums.CartItemSize.NoSize) { selPortionSize = Enums.CartItemSize.RegularSize; } MOTCartItem curMotItem = null; if (selItem != null) { if (selItem.MealType == Enums.MealTypes.BreakfastEntree || selItem.MealType == Enums.MealTypes.LunchEntree || selItem.MealType == Enums.MealTypes.DinnerEntree || selItem.MealType == Enums.MealTypes.ChildEntree || selItem.MealType == Enums.MealTypes.Beverage || selItem.MealType == Enums.MealTypes.Dessert || selItem.MealType == Enums.MealTypes.Goods || selItem.MealType == Enums.MealTypes.Miscellaneous || selItem.MealType == Enums.MealTypes.Salad || selItem.MealType == Enums.MealTypes.Snack || selItem.MealType == Enums.MealTypes.Soup || selItem.MealType == Enums.MealTypes.Supplement) { curMotItem = retMotItems.FirstOrDefault(a => a.DayNumber == defMenu.DayNumber && a.MealType == selItem.MealType); if (curMotItem == null || curMotItem.MealType == Enums.MealTypes.Snack) { curMotItem = new MOTCartItem { CartItem = cartItem, CartItemId = cartItem.CartItemID, CustomerName = cartItem.UserProfile.ParentProfileName, OrderNumber = cartItem.OrderNumber + "-PRG", DeliveryDate = prodCal.DeliveryDate, DayNumber = defMenu.DayNumber, ItemName = selItem.Name, MealType = selItem.MealType, PortionSize = Enums.GetEnumDescription(selPortionSize), Preferences = prefsString, ProfileName = cartItem.UserProfile != null ? cartItem.UserProfile.ProfileName : string.Empty, Servings = cartItem.Quantity.ToString(), MenuItem = selItem, Quantity = cartItem.Quantity, Sides = "None" }; if (cartItem.SnapShipAddrId.HasValue) { hccAddress addr = hccAddress.GetById(cartItem.SnapShipAddrId.Value); curMotItem.DeliveryMethod = ((Enums.DeliveryTypes)addr.DefaultShippingTypeID).ToString(); } retMotItems.Add(curMotItem); } else { curMotItem.Sides += selPortionSize + " - " + selItem.Name; } } else { // get parent entree type Enums.MealTypes parentType = Enums.MealTypes.Unknown; if (selItem.MealType == Enums.MealTypes.BreakfastSide) { parentType = Enums.MealTypes.BreakfastEntree; } else if (selItem.MealType == Enums.MealTypes.LunchSide) { parentType = Enums.MealTypes.LunchEntree; } else if (selItem.MealType == Enums.MealTypes.DinnerSide) { parentType = Enums.MealTypes.DinnerEntree; } else if (selItem.MealType == Enums.MealTypes.OtherSide) { parentType = Enums.MealTypes.OtherEntree; } else if (selItem.MealType == Enums.MealTypes.ChildSide) { parentType = Enums.MealTypes.ChildEntree; } curMotItem = retMotItems.FirstOrDefault(a => a.DayNumber == defMenu.DayNumber && a.MealType == parentType); if (curMotItem == null) { curMotItem = retMotItems.FirstOrDefault(a => a.DayNumber == defMenu.DayNumber); if (curMotItem == null) { curMotItem = new MOTCartItem { CartItem = cartItem, CartItemId = cartItem.CartItemID, CustomerName = cartItem.UserProfile.ParentProfileName, OrderNumber = cartItem.OrderNumber + "-PRG", DeliveryDate = prodCal.DeliveryDate, DayNumber = defMenu.DayNumber, ItemName = selItem.Name, MealType = selItem.MealType, PortionSize = Enums.GetEnumDescription(selPortionSize), Preferences = prefsString, ProfileName = cartItem.UserProfile != null ? cartItem.UserProfile.ProfileName : string.Empty, Servings = cartItem.Quantity.ToString(), MenuItem = selItem, Quantity = cartItem.Quantity, Sides = "None" }; if (cartItem.SnapShipAddrId.HasValue) { hccAddress addr = hccAddress.GetById(cartItem.SnapShipAddrId.Value); curMotItem.DeliveryMethod = ((Enums.DeliveryTypes)addr.DefaultShippingTypeID).ToString(); } retMotItems.Add(curMotItem); } } else { if (string.IsNullOrWhiteSpace(curMotItem.Sides)) { curMotItem.Sides = selItem.Name; if (prefsString != "None" && !string.IsNullOrWhiteSpace(prefsString)) { curMotItem.Sides += " (" + prefsString + ")"; } } else { if (curMotItem.Sides == "None") { curMotItem.Sides = selItem.Name; } else { curMotItem.Sides += ", " + selItem.Name; } if (prefsString != "None" && !string.IsNullOrWhiteSpace(prefsString)) { curMotItem.Sides += " (" + prefsString + ")"; } } } } } }); List <MOTCartItem> removeDupItems = new List <MOTCartItem>(); retMotItems.ForEach(delegate(MOTCartItem motItem) { if (motItem.MealType == Enums.MealTypes.BreakfastEntree || motItem.MealType == Enums.MealTypes.LunchEntree || motItem.MealType == Enums.MealTypes.DinnerEntree || motItem.MealType == Enums.MealTypes.ChildEntree || motItem.MealType == Enums.MealTypes.Beverage || motItem.MealType == Enums.MealTypes.Dessert || motItem.MealType == Enums.MealTypes.Goods || motItem.MealType == Enums.MealTypes.Miscellaneous || motItem.MealType == Enums.MealTypes.Salad || motItem.MealType == Enums.MealTypes.Snack || motItem.MealType == Enums.MealTypes.Soup || motItem.MealType == Enums.MealTypes.Supplement) { if (motItem.CartItem.Quantity > 1) { for (int i = 1; i <= motItem.CartItem.Quantity; i++) { MOTCartItem copyMotItem = new MOTCartItem { CartItem = motItem.CartItem, CartItemId = motItem.CartItemId, OrderNumber = motItem.OrderNumber, DeliveryDate = motItem.DeliveryDate, CustomerName = motItem.CustomerName, DayNumber = motItem.DayNumber, ItemName = motItem.ItemName, MealType = motItem.MealType, PortionSize = motItem.PortionSize, Preferences = motItem.Preferences, ProfileName = motItem.ProfileName, MenuItem = motItem.MenuItem, Index = motItem.Index, Quantity = motItem.Quantity, Sides = motItem.Sides, DeliveryMethod = motItem.DeliveryMethod, Servings = "1" //motItem.Servings }; addlMotItems.Add(copyMotItem); } removeDupItems.Add(motItem); } } }); if (addlMotItems.Count > 0) { retMotItems.AddRange(addlMotItems); } if (removeDupItems.Count > 0) { removeDupItems.ForEach(a => retMotItems.Remove(a)); } var t = retMotItems.ToList(); return(t); } catch (Exception) { throw; } }
public static List <MOTCartItem> GetFromCartCalendar(hccCartItemCalendar cartCal) { List <MOTCartItem> retMotItems = new List <MOTCartItem>(); hccCartItem cartItem = hccCartItem.GetById(cartCal.CartItemID); hccProductionCalendar prodCal = hccProductionCalendar.GetById(cartCal.CalendarID); hccProgramPlan plan = hccProgramPlan.GetById(cartItem.Plan_PlanID.Value); List <hccProgramDefaultMenu> defMenus = hccProgramDefaultMenu.GetBy(cartCal.CalendarID, plan.ProgramID); List <hccMenuItem> planMeals = new List <hccMenuItem>(); defMenus.ForEach(delegate(hccProgramDefaultMenu defMenu) { hccCartDefaultMenuException cartDefMenuEx = hccCartDefaultMenuException.GetBy(defMenu.DefaultMenuID, cartCal.CartCalendarID); hccMenuItem selItem; Enums.CartItemSize selPortionSize; string prefsString = string.Empty; // Get the current menuItem if (cartDefMenuEx == null) { selItem = hccMenuItem.GetById(defMenu.MenuItemID); selPortionSize = (Enums.CartItemSize)defMenu.MenuItemSizeID; prefsString = "None"; } else { selItem = hccMenuItem.GetById(cartDefMenuEx.MenuItemID); selPortionSize = (Enums.CartItemSize)cartDefMenuEx.MenuItemSizeID; prefsString = hccCartDefaultMenuExPref.GetPrefsBy(cartDefMenuEx.DefaultMenuExceptID) .Select(a => a.Name).DefaultIfEmpty("None").Aggregate((c, d) => c + ", " + d); } MOTCartItem curMotItem = null; if (selItem != null) { if (selPortionSize == Enums.CartItemSize.NoSize) { selPortionSize = Enums.CartItemSize.RegularSize; } // determine if current item is an Entree or side if (selItem.MealType == Enums.MealTypes.BreakfastEntree || selItem.MealType == Enums.MealTypes.LunchEntree || selItem.MealType == Enums.MealTypes.DinnerEntree || selItem.MealType == Enums.MealTypes.OtherEntree || selItem.MealType == Enums.MealTypes.ChildEntree || selItem.MealType == Enums.MealTypes.Beverage || selItem.MealType == Enums.MealTypes.Dessert || selItem.MealType == Enums.MealTypes.Goods || selItem.MealType == Enums.MealTypes.Miscellaneous || selItem.MealType == Enums.MealTypes.Salad || selItem.MealType == Enums.MealTypes.Snack || selItem.MealType == Enums.MealTypes.Soup || selItem.MealType == Enums.MealTypes.Supplement) { // Entrees // determine if this type of entree has been added in previous loop curMotItem = retMotItems.FirstOrDefault(a => a.DayNumber == defMenu.DayNumber && a.MealType == selItem.MealType); if (curMotItem == null) { //if not added in previous loop, add new curMotItem = new MOTCartItem { MenuItem = selItem, CartItem = cartItem, CartItemId = cartItem.CartItemID, CustomerName = cartItem.UserProfile.ParentProfileName, OrderNumber = cartItem.OrderNumber, DeliveryDate = prodCal.DeliveryDate, DayNumber = defMenu.DayNumber, ItemName = selItem.Name, MealType = selItem.MealType, PortionSize = Enums.GetEnumDescription(selPortionSize), Preferences = prefsString, ProfileName = cartItem.UserProfile.ProfileName, Servings = cartItem.Quantity.ToString(), }; retMotItems.Add(curMotItem); } else { //if entree added in previous loop, add as a side curMotItem.Sides += selPortionSize + " - " + selItem.Name; } } else { // Sides // get parent entree type Enums.MealTypes parentType = Enums.MealTypes.Unknown; if (selItem.MealType == Enums.MealTypes.BreakfastSide) { parentType = Enums.MealTypes.BreakfastEntree; } else if (selItem.MealType == Enums.MealTypes.LunchSide) { parentType = Enums.MealTypes.LunchEntree; } else if (selItem.MealType == Enums.MealTypes.DinnerSide) { parentType = Enums.MealTypes.DinnerEntree; } else if (selItem.MealType == Enums.MealTypes.OtherSide) { parentType = Enums.MealTypes.OtherEntree; } else if (selItem.MealType == Enums.MealTypes.ChildSide) { parentType = Enums.MealTypes.ChildEntree; } // determine if this type of entree has been added in previous loop curMotItem = retMotItems.FirstOrDefault(a => a.DayNumber == defMenu.DayNumber && a.MealType == parentType); if (curMotItem == null) { curMotItem = retMotItems.FirstOrDefault(a => a.DayNumber == defMenu.DayNumber); if (curMotItem == null) { curMotItem = new MOTCartItem { MenuItem = selItem, CartItem = cartItem, CartItemId = cartItem.CartItemID, CustomerName = cartItem.UserProfile.ParentProfileName, OrderNumber = cartItem.OrderNumber, DeliveryDate = prodCal.DeliveryDate, DayNumber = defMenu.DayNumber, ItemName = selItem.Name, MealType = selItem.MealType, PortionSize = Enums.GetEnumDescription(selPortionSize), Preferences = prefsString, ProfileName = cartItem.UserProfile.ProfileName, Servings = cartItem.Quantity.ToString(), Sides = "NoneB" }; retMotItems.Add(curMotItem); } } else { if (string.IsNullOrWhiteSpace(curMotItem.Sides)) { curMotItem.Sides += selItem.Name; if (prefsString != "None" && !string.IsNullOrWhiteSpace(prefsString)) { curMotItem.Sides += " (" + prefsString + ")"; } } else { curMotItem.Sides += ", " + selItem.Name; if (prefsString != "None" && !string.IsNullOrWhiteSpace(prefsString)) { curMotItem.Sides += " (" + prefsString + ")"; } } } } } }); return(retMotItems); }
public static List <PackingSlip> GeneratePackingSlips(DateTime deliveryDate) { List <PackingSlip> outSlips = new List <PackingSlip>(); List <AggrCartItem> agItems = hccCartItem.Search(null, null, null, deliveryDate, true, false); foreach (AggrCartItem agItem in agItems) { hccCart cart = hccCart.GetBy(agItem.CartItem.OrderNumber); if (cart != null && (cart.Status == Enums.CartStatus.Paid || cart.Status == Enums.CartStatus.Fulfilled)) { PackingSlip existItem = outSlips.SingleOrDefault(a => a.OrderNumber == agItem.CartItem.OrderNumber); if (existItem == null) { PackingSlip ps = new PackingSlip { OrderNumber = agItem.CartItem.OrderNumber, DeliveryDay = agItem.DeliveryDate.DayOfWeek.ToString(), DeliveryDate = agItem.DeliveryDate.ToShortDateString() }; //if (agItem.CartItem.UserProfile.ParentProfileID.HasValue) // ps.SpecialInstructions = hccUserProfileNote.GetBy(agItem.CartItem.UserProfile.ParentProfileID.Value, Enums.UserProfileNoteTypes.ShippingNote, null) // .Select(a => a.Note).DefaultIfEmpty(string.Empty).Aggregate((b, c) => b + ", " + c); string n1 = hccUserProfileNote.GetBy(agItem.CartItem.UserProfile.UserProfileID, Enums.UserProfileNoteTypes.ShippingNote, null) .Select(a => a.Note).DefaultIfEmpty(string.Empty).Aggregate((b, c) => b + ", " + c); if (!string.IsNullOrWhiteSpace(n1)) { if (!string.IsNullOrWhiteSpace(ps.SpecialInstructions)) { ps.SpecialInstructions += ", " + n1; } else { ps.SpecialInstructions += n1; } } if (agItem.CartSnap != null) { ps.LastName = agItem.CartSnap.LastName; ps.FirstName = agItem.CartSnap.FirstName; ps.OrderProfile = agItem.CartSnap.ProfileName; ps.Customer = ps.LastName + ", " + ps.FirstName; } else { ps.LastName = agItem.CartItem.UserProfile.ParentProfileName; ps.Customer = ps.LastName; ps.OrderProfile = agItem.CartItem.UserProfile.ProfileName; } if (agItem.CartItem != null) { if (agItem.CartItem.Plan_IsAutoRenew == true && agItem.CartItem.ItemTypeID == 1) { ps.IsFamily = "Yes"; } else if (agItem.CartItem.Plan_IsAutoRenew == false && agItem.CartItem.ItemTypeID == 1) { ps.IsFamily = "No"; } else { ps.IsFamily = "N/A"; } } if (agItem.CartItem.SnapShipAddrId.HasValue) { hccAddress shipAddr = hccAddress.GetById(agItem.CartItem.SnapShipAddrId.Value); ps.DeliveryAddress = shipAddr.ToString(); ps.DeliveryAddress += shipAddr.IsBusiness ? "<b>Business Address</b>" : "<b>Residential Address</b>"; ps.DeliveryMethod = Enums.GetEnumDescription(((Enums.DeliveryTypes)shipAddr.DefaultShippingTypeID)); } if (agItem.CartItem.ItemType == Enums.CartItemType.DefinedPlan) { hccProductionCalendar pc = hccProductionCalendar.GetBy(agItem.DeliveryDate); hccProgramPlan pg = hccProgramPlan.GetById(agItem.CartItem.Plan_PlanID.Value); int defMenuCount = hccProgramDefaultMenu.GetBy(pc.CalendarID, pg.ProgramID) .Where(a => a.MenuItemID > 0 && a.DayNumber <= pg.NumDaysPerWeek).Count(); ps.ItemsCount += agItem.TotalQuantity * defMenuCount; } else { ps.ItemsCount += agItem.TotalQuantity; } // NEW ASSUMPTION: No packing sheet should be printed if no cart items exist. if (ps.ItemsCount > 0) { outSlips.Add(ps); } } else { if (agItem.CartItem.ItemType == Enums.CartItemType.DefinedPlan) { hccProductionCalendar pc = hccProductionCalendar.GetBy(agItem.DeliveryDate); hccProgramPlan pg = hccProgramPlan.GetById(agItem.CartItem.Plan_PlanID.Value); int defMenuCount = hccProgramDefaultMenu.GetBy(pc.CalendarID, pg.ProgramID) .Where(a => a.MenuItemID > 0 && a.DayNumber <= pg.NumDaysPerWeek).Count(); existItem.ItemsCount += agItem.TotalQuantity * defMenuCount; } else { existItem.ItemsCount += agItem.TotalQuantity; } } } } return(outSlips.OrderBy(a => a.LastName).ThenBy(a => a.FirstName).ThenBy(a => a.OrderNumber).ToList()); }