private static List <OrgUnitAvailability> GetStoreAvailabilities(IList <ItemAvailabilityStore> inventoryInfo, ReadOnlyCollection <OrgUnitLocation> stores, string unitOfMeasure)
            {
                List <OrgUnitAvailability> storeAvailabilities = new List <OrgUnitAvailability>();

                for (int i = 0; i < inventoryInfo.Count; i++)
                {
                    var storesFound = from c in stores where c.OrgUnitName == inventoryInfo[i].OrgUnitName select c;

                    if (!storesFound.Any())
                    {
                        continue;
                    }

                    ItemAvailability itemAvailibility = new ItemAvailability
                    {
                        ItemId = inventoryInfo[i].ItemId,
                        InventoryLocationId = inventoryInfo[i].InventoryLocationId,
                        AvailableQuantity   = inventoryInfo[i].AvailableQuantity,
                        UnitOfMeasure       = unitOfMeasure
                    };

                    OrgUnitAvailability storeAvailability = new OrgUnitAvailability(storesFound.First(), new List <ItemAvailability> {
                        itemAvailibility
                    });
                    storeAvailabilities.Add(storeAvailability);
                }

                return(storeAvailabilities);
            }
        static void Postfix(ref bool __result, ItemAvailability __instance, ThingCountClass need, Pawn pawn)
        {
            if (!__result && pawn != null && pawn.Faction == Faction.OfPlayer)
            {
                foreach (Building_InfiniteStorage storage in WorldComp.GetInfiniteStorages(pawn.Map))
                {
                    if (storage.IsOperational &&
                        storage.Spawned &&
                        need != null && need.thing != null)
                    {
                        Thing thing;
                        if (storage.TryGetValue(need.thing.def, out thing))
                        {
                            if (thing.stackCount >= need.Count)
                            {
                                List <Thing> removed;
                                int          toDrop = (need.Count < thing.def.stackLimit) ? thing.def.stackLimit : need.Count;
                                if (storage.TryRemove(thing, toDrop, out removed))
                                {
                                    foreach (Thing t in removed)
                                    {
                                        BuildingUtil.DropThing(t, t.stackCount, storage, storage.Map);
                                    }

                                    __result = true;
                                    ((Dictionary <int, bool>)CachedResultsFI.GetValue(__instance))[Gen.HashCombine <Faction>(need.GetHashCode(), pawn.Faction)] = __result;
                                }
                                break;
                            }
                        }
                    }
                }
            }
        }
        //public bool ThingsAvailableAnywhere(ThingDefCountClass need, Pawn pawn)
        public static bool OrInInventory(ItemAvailability item, ThingDefCountClass need, Pawn pawn)
        {
            if (item.ThingsAvailableAnywhere(need, pawn))
            {
                return(true);
            }

            return(pawn.Map.GetComponent <ItemInvAvailabilityMapComp>().ThingsAvailableInventories(need.thingDef, pawn));
        }
        public void Show(ItemInstance item)
        {
            _item = item;
            _menuItemName.Text = item.Item.Name;
            ItemAvailability availability = Character.GetItemAvailability(_item);
            string           gemmedId     = string.Empty;
            bool             allEnabled   = false;

            switch (availability)
            {
            case ItemAvailability.Available:
                gemmedId   = string.Format("{0}.{1}.{2}.{3}", item.Id, item.Gem1Id, item.Gem2Id, item.Gem3Id);
                allEnabled = true;
                break;

            case ItemAvailability.AvailableWithEnchantRestrictions:
                gemmedId = string.Format("{0}.{1}.{2}.{3}", item.Id, item.Gem1Id, item.Gem2Id, item.Gem3Id);
                break;

            case ItemAvailability.RegemmingAllowed:
                allEnabled = true;
                break;

            case ItemAvailability.RegemmingAllowedWithEnchantRestrictions:
                gemmedId = item.Id.ToString() + ".*.*.*";
                break;

            case ItemAvailability.NotAvailable:
                gemmedId = item.Id.ToString() + ".*.*.*";
                break;
            }

            ((ToolStripMenuItem)Items[2]).Checked = allEnabled;
            List <Enchant> list = Enchant.FindEnchants(_item.Slot, Character);

            for (int i = 0; i < list.Count; i++)
            {
                if (Items.Count <= i + 3)
                {
                    ToolStripMenuItem _menuItem = new ToolStripMenuItem();
                    _menuItem.Click += new EventHandler(_menuItem_Click);
                    this.Items.Add(_menuItem);
                }
                Items[i + 3].Tag     = list[i];
                Items[i + 3].Text    = list[i].ToString();
                Items[i + 3].Visible = true;
                ((ToolStripMenuItem)Items[i + 3]).Checked = (!allEnabled && Character.AvailableItems.Contains(gemmedId + "." + list[i].Id));
            }
            for (int i = list.Count + 3; i < Items.Count; i++)
            {
                Items[i].Visible = false;
            }

            this.Show(Control.MousePosition);
        }
        //public bool ThingsAvailableAnywhere(ThingDefCountClass need, Pawn pawn)
        public static bool OrInInventory(ItemAvailability item, ThingDefCountClass need, Pawn pawn)
        {
            if (item.ThingsAvailableAnywhere(need, pawn))
            {
                return(true);
            }

            return
                (pawn.carryTracker.GetDirectlyHeldThings().Contains(need.thingDef) ||
                 pawn.Map.GetComponent <ItemInvAvailabilityMapComp>().ThingsAvailableInventories(need.thingDef, pawn.Faction));
        }
Exemple #6
0
 public static Offer CreateNewOffer( decimal price, ItemAvailability availability, ItemCondition itemCondition )
 {
     var result = new Offer {
     Id = Guid.NewGuid(),
     Availability = availability,
     Condition = itemCondition,
     Currency = "USD",
     Price = price,
     PriceValidityStartDate = System.DateTime.Now,
     PriceValidityEndDate = System.DateTime.Now.AddYears( 100 )
       };
       return result;
 }
Exemple #7
0
    void Awake()
    {
        coinSound = Resources.Load("Sounds/coins") as AudioClip;
        sellingAbility = ItemAvailability.Regular;

        itemsForSale = new LinkedList<Item>();
        var dict = ItemFactory.GetAllItems();
        foreach (Item i in dict.Values)
        {
            if (i.availability == sellingAbility)
            {
                itemsForSale.AddLast(i);
            }
        }

        animation.Play("Idle01");
        skin = Resources.Load("ISEGUISkin") as GUISkin;
    }
            /// <summary>
            /// Convert unit of measure for item availabilities.
            /// </summary>
            /// <param name="context">The request context.</param>
            /// <param name="itemAvailabilities">The item availabilities.</param>
            /// <param name="itemUnits">The desired item unit of measures.</param>
            /// <returns>The converted item availabilities.</returns>
            internal static IEnumerable <ItemAvailability> ConvertUnitOfMeasure(RequestContext context, IEnumerable <ItemAvailability> itemAvailabilities, IEnumerable <ItemUnit> itemUnits)
            {
                List <ItemAvailability> convertedItemAvailabilities = new List <ItemAvailability>();

                IEnumerable <ItemUnit>         distinctItemUnits  = itemUnits.Distinct();
                IEnumerable <ItemUnitQuantity> itemUnitQuantities = itemAvailabilities.Select(itemAvailability => itemAvailability.GetItemUnitQuantity());
                Dictionary <ItemUnitConversion, UnitOfMeasureConversion> conversions = GetUnitOfMeasureConversions(context, itemUnitQuantities, distinctItemUnits);

                ILookup <ItemVariantInventoryDimension, ItemUnit> itemUnitLookupByItem = distinctItemUnits.ToLookup(itemUnit => itemUnit.GetItem());

                foreach (ItemAvailability itemAvailability in itemAvailabilities)
                {
                    bool hasInventoryUnit = false;
                    foreach (ItemUnit itemUnit in itemUnitLookupByItem[itemAvailability.GetItem()])
                    {
                        ItemUnitConversion      itemUnitConversion = ChannelAvailabilityHelper.GetItemUnitConversion(itemAvailability.GetItemUnitQuantity(), itemUnit);
                        UnitOfMeasureConversion unitOfMeasureConversion;
                        if (!conversions.TryGetValue(itemUnitConversion, out unitOfMeasureConversion))
                        {
                            if (!StringDataHelper.Equals(itemAvailability.UnitOfMeasure, itemUnit.UnitOfMeasure))
                            {
                                context.Notify(new UnableToConvertUnitOfMeasureNotification(itemUnitConversion));
                            }

                            if (!hasInventoryUnit)
                            {
                                convertedItemAvailabilities.Add(itemAvailability);
                                hasInventoryUnit = true;
                            }
                        }
                        else
                        {
                            ItemAvailability convertedItemAvailability = new ItemAvailability();
                            convertedItemAvailability.CopyPropertiesFrom(itemAvailability);
                            convertedItemAvailability.AvailableQuantity = unitOfMeasureConversion.Convert(itemAvailability.AvailableQuantity);
                            convertedItemAvailability.UnitOfMeasure     = itemUnitConversion.ToUnitOfMeasure;
                            convertedItemAvailabilities.Add(convertedItemAvailability);
                        }
                    }
                }

                return(convertedItemAvailabilities.AsEnumerable());
            }
        private Boolean IsAvailableByType(ItemType type, ItemAvailability available)
        {
            switch (type)
            {
            case ItemType.File:
                return(available != ItemAvailability.notavailable);

            case ItemType.Folder:
                return(available != ItemAvailability.notavailable);

            case ItemType.Link:
                return(available != ItemAvailability.notavailable);

            case ItemType.Multimedia:
            case  ItemType.ScormPackage:
            case ItemType.SharedDocument:
            case ItemType.VideoStreaming:
                return(available == ItemAvailability.available || available == ItemAvailability.waitingsettings);
            }
            return(false);
        }
Exemple #10
0
            private static void SetSalesLineInventoryForShipping(RequestContext context, IEnumerable <SalesLine> salesLines, IEnumerable <ItemAvailability> itemAvailabilities, Dictionary <string, decimal> salesLineInventoryQuantities)
            {
                ILookup <ItemVariantInventoryDimension, ItemAvailability> itemAvailabilityLookup = itemAvailabilities.ToLookup(itemAvailability => itemAvailability.GetItem());
                ILookup <ItemVariantInventoryDimension, SalesLine>        salesLineLookup        = salesLines.ToLookup(salesLine => salesLine.GetItemVariantInventoryDimension());

                foreach (IGrouping <ItemVariantInventoryDimension, SalesLine> grouping in salesLineLookup)
                {
                    ItemVariantInventoryDimension item = grouping.Key;
                    SortedSet <ItemAvailability>  itemAvailabilitySortedSet = new SortedSet <ItemAvailability>(itemAvailabilityLookup[item], new ItemAvailabilityByQuantityDescendingComparer());

                    foreach (SalesLine salesLine in grouping.OrderByDescending(salesLine => salesLineInventoryQuantities[salesLine.LineId]))
                    {
                        ItemAvailability itemAvailability = itemAvailabilitySortedSet.FirstOrDefault();
                        if (SetSalesInventory(context, salesLine, itemAvailability, salesLineInventoryQuantities))
                        {
                            // Remove and add to force sort the set if available quantity is reduced.
                            itemAvailabilitySortedSet.Remove(itemAvailability);
                            itemAvailabilitySortedSet.Add(itemAvailability);
                        }
                    }
                }
            }
 public NesuiLocationWithQuantity(ItemAvailability availability)
 {
     this.LocationId = availability.locationId.internalId;
     this.Quantity = availability.quantityOnHand;
 }
Exemple #12
0
 public void InitView(RepositoryIdentifier identifier, Boolean loadSelectedItems, Boolean adminMode, Boolean showHiddenItems, Boolean disableNotAvailableItems, List <ItemType> typesToLoad, ItemAvailability availability, Boolean allowSelectFolder, List <long> idSelectedItems, List <long> idRemovedItems = null)
 {
     if (SessionTimeout())
     {
         return;
     }
     if (idRemovedItems == null)
     {
         idRemovedItems = new List <long>();
     }
     if (!loadSelectedItems)
     {
         idRemovedItems.AddRange(idSelectedItems);
         idSelectedItems = new List <long>();
     }
     InitView(identifier, adminMode, showHiddenItems, disableNotAvailableItems, typesToLoad, availability, new List <StatisticType>(), idRemovedItems, idSelectedItems);
 }
        public List <dtoRepositoryItemToSelect> ItemsToSelectGet(Int32 idCurrentUser, String rootFolder, ModuleRepository module, RepositoryIdentifier identifier, Boolean adminMode, Boolean showHiddenItems, Boolean disableNotAvailableItems, List <ItemType> typesToLoad, ItemAvailability availability, List <StatisticType> displayStatistics, List <long> idRemovedItems, List <long> idSelectedItems, Boolean selectAll, Boolean removeFolder)
        {
            Dictionary <long, String> foldersPath = FoldersFullPathGet(identifier, rootFolder);

            List <dtoRepositoryItemToSelect> results = new List <dtoRepositoryItemToSelect>();
            var query = GetQuery(identifier).Where(i => i.Deleted == BaseStatusDeleted.None && (showHiddenItems || (i.IsVisible && (i.IdCreatedBy == idCurrentUser && !i.IsVisible))) && !i.IsInternal);

            query = query.Where(i => (availability == ItemAvailability.ignore || (availability == i.Availability)) && typesToLoad.Contains(i.Type) && (!removeFolder || (removeFolder && i.IsFile)));

            List <liteRepositoryItem> fItems = query.ToList().Where(i => !idRemovedItems.Contains(i.Id)).ToList();

            if (!adminMode)
            {
                Int32 idRole        = (Int32)RoleTypeStandard.Guest;
                Int32 idProfileType = Manager.GetIdProfileType(idCurrentUser);
                List <liteItemAssignments> assignments = new List <liteItemAssignments>();
                switch (identifier.Type)
                {
                case RepositoryType.Community:
                case RepositoryType.Portal:
                    assignments = GetAssignments(fItems.Select(i => i.Id).ToList());
                    idRole      = (identifier.Type == RepositoryType.Community) ? Manager.GetActiveSubscriptionIdRole(idCurrentUser, identifier.IdCommunity) : idRole;
                    break;
                }
                fItems = fItems.Where(i => HasValidAssignments(i.Id, idCurrentUser, idRole, idProfileType, assignments)).ToList();
            }
            if (idSelectedItems == null)
            {
                idSelectedItems = new List <long>();
            }
            results = fItems.Select(i => new dtoRepositoryItemToSelect(i, (foldersPath.ContainsKey(i.IdFolder) ? foldersPath[i.IdFolder] : ""), (!disableNotAvailableItems || (disableNotAvailableItems && i.Availability == ItemAvailability.available)), (selectAll || idSelectedItems.Contains(i.Id)))).ToList();
            if (displayStatistics.Any())
            {
                List <StatisticType> statistics = new List <StatisticType>();
                if (displayStatistics.Contains(StatisticType.downloads) && (adminMode || module.Administration || module.EditOthersFiles))
                {
                    statistics.Add(StatisticType.downloads);
                }
                if (displayStatistics.Contains(StatisticType.plays) && (adminMode || module.Administration || module.EditOthersFiles))
                {
                    statistics.Add(StatisticType.plays);
                }
                if (statistics.Any())
                {
                    if (statistics.Contains(StatisticType.plays))
                    {
                        Dictionary <long, long> plays = PlayStatisticsGetFull(results.Where(i => i.Type == ItemType.Multimedia || i.Type == ItemType.ScormPackage || i.Type == ItemType.VideoStreaming).Select(i => i.Id).ToList());
                        if (plays != null)
                        {
                            List <long> idItems = plays.Keys.ToList();
                            foreach (dtoRepositoryItemToSelect item in results.Where(r => idItems.Contains(r.Id)))
                            {
                                item.Plays = (plays != null && plays.ContainsKey(item.Id) ? plays[item.Id] : 0);
                            }
                        }
                    }
                }
            }
            return(results);
        }
Exemple #14
0
 public AvailItemsChangedEventArgs(string thingChanging, ItemAvailability newAvailability) {
     ThingChanging = thingChanging;
     NewAvailability = newAvailability;
 }
Exemple #15
0
 public void OnAvailableItemsChanged(string thingChanging, ItemAvailability newAvailability)
 {
     if (thingChanging.StartsWith("-")) {
         ItemSlot slot = ItemSlot.None;
         // Enchants
         if (thingChanging.Length == ("-1" + "1000").Length) { slot = (ItemSlot)int.Parse(thingChanging.Substring(1, 1), System.Globalization.CultureInfo.InvariantCulture); }
         else if (thingChanging.Length == ("-10" + "1000").Length) { slot = (ItemSlot)int.Parse(thingChanging.Substring(1, 2), System.Globalization.CultureInfo.InvariantCulture); }
         // Reforges, the availabiility on these never change
         //else if(thingChanging.Length== ("-1"  +   "000" + "1000").Length) { slot = (ItemSlot)int.Parse(thingChanging.Substring(1, 1)); }
         //else if(thingChanging.Length== ("-10" +   "000" + "1000").Length) { slot = (ItemSlot)int.Parse(thingChanging.Substring(1, 2)); }
         // Tinkerings
         else if (thingChanging.Length == ("-1" + "00000" + "1000").Length) { slot = (ItemSlot)int.Parse(thingChanging.Substring(1, 1), System.Globalization.CultureInfo.InvariantCulture); }
         else if (thingChanging.Length == ("-10" + "00000" + "1000").Length) { slot = (ItemSlot)int.Parse(thingChanging.Substring(1, 2), System.Globalization.CultureInfo.InvariantCulture); }
         // Wipe out the stored relevants list for this slot
         _relevantItemInstances.Remove(GetCharacterSlotByItemSlot(slot));
     }
     if (AvailableItemsChanged != null)
         AvailableItemsChanged(this, new AvailItemsChangedEventArgs(thingChanging, newAvailability));
 }
 public void LoadItems(RepositoryIdentifier identifier, Boolean adminMode, Boolean showHiddenItems, Boolean disableNotAvailableItems, List <ItemType> typesToLoad, ItemAvailability availability, List <StatisticType> displayStatistics, List <long> idRemovedItems, List <long> idSelectedItems, Boolean selectAll, OrderBy orderBy, Boolean ascending, Int32 pageIndex, Int32 pageSize)
 {
     if (!SessionTimeout())
     {
         LoadItems(Service.GetPermissions(identifier, UserContext.CurrentUserID), UserContext.CurrentUserID, true, identifier, adminMode, showHiddenItems, disableNotAvailableItems, typesToLoad, availability, displayStatistics, idRemovedItems, idSelectedItems, selectAll, orderBy, ascending, pageIndex, pageSize);
     }
 }
 public void InitView(Boolean allowPaging, Boolean selectAll, Int32 pageSize, RepositoryIdentifier identifier, Boolean adminMode, Boolean showHiddenItems, Boolean disableNotAvailableItems, List <ItemType> typesToLoad, ItemAvailability availability, List <StatisticType> displayStatistics, List <long> idRemovedItems, List <long> idSelectedItems = null, OrderBy orderBy = OrderBy.name, Boolean ascending = true)
 {
     if (SessionTimeout())
     {
         return;
     }
     View.IdUserLoader                    = UserContext.CurrentUserID;
     View.AvailableTypes                  = typesToLoad;
     View.CurrentAvailability             = availability;
     View.IdRemovedItems                  = idRemovedItems;
     View.LoadForModule                   = false;
     View.ModuleCode                      = ModuleRepository.UniqueCode;
     View.RepositoryIdentifier            = identifier;
     View.CurrentOrderBy                  = orderBy;
     View.CurrentAscending                = ascending;
     View.isInitialized                   = true;
     View.CurrentAdminMode                = adminMode;
     View.CurrentShowHiddenItems          = showHiddenItems;
     View.CurrentDisableNotAvailableItems = disableNotAvailableItems;
     if (!typesToLoad.Any(t => t == ItemType.Multimedia || t == ItemType.ScormPackage || t == ItemType.VideoStreaming))
     {
         displayStatistics.Remove(StatisticType.plays);
         displayStatistics.Remove(StatisticType.myplays);
     }
     if (!typesToLoad.Any(t => t != ItemType.Folder && t != ItemType.Link))
     {
         displayStatistics.Remove(StatisticType.downloads);
         displayStatistics.Remove(StatisticType.mydownloads);
     }
     View.DisplayStatistics = displayStatistics;
     LoadItems(Service.GetPermissions(identifier, UserContext.CurrentUserID), UserContext.CurrentUserID, allowPaging, identifier, adminMode, showHiddenItems, disableNotAvailableItems, typesToLoad, availability, displayStatistics, idRemovedItems, idSelectedItems, selectAll, orderBy, ascending, 0, pageSize);
 }
        private void LoadItems(ModuleRepository module, Int32 idCurrentUser, Boolean allowPaging, RepositoryIdentifier identifier, Boolean adminMode, Boolean showHiddenItems, Boolean disableNotAvailableItems, List <ItemType> typesToLoad, ItemAvailability availability, List <StatisticType> displayStatistics, List <long> idRemovedItems, List <long> idSelectedItems, Boolean selectAll, OrderBy orderBy, Boolean ascending, Int32 pageIndex, Int32 pageSize)
        {
            List <long> selectedItems = idSelectedItems;

            if (!selectAll)
            {
                Dictionary <Boolean, List <long> > selections = View.GetCurrentSelection();
                selectedItems = selectedItems.Except(selections[false]).ToList();
                selectedItems.AddRange(selections[true]);
                View.IdSelectedItems = selectedItems;
            }

            List <dtoRepositoryItemToSelect> items = Service.ItemsToSelectGet(idCurrentUser, "/", module, identifier, adminMode, showHiddenItems, disableNotAvailableItems, typesToLoad, availability, displayStatistics, idRemovedItems, idSelectedItems, selectAll, !typesToLoad.Contains(ItemType.Folder));

            PagerBase pager = new PagerBase();

            if (allowPaging)
            {
                Int32 itemsCount = (items == null ? 0 : items.Count());
                pager.PageSize  = pageSize;
                pager.Count     = (itemsCount > 0) ? itemsCount - 1 : 0;
                pager.PageIndex = pageIndex;
                View.Pager      = pager;
                pageIndex       = pager.PageIndex;
            }

            if (items == null)
            {
                View.LoadItems(null);
            }
            else
            {
                items = Service.ItemsToSelectReorder(items, orderBy, ascending);
                if (items != null)
                {
                    if (allowPaging)
                    {
                        View.LoadItems(items.Skip(pageIndex * pageSize).Take(pageSize).ToList());
                    }
                    else
                    {
                        View.LoadItems(items);
                    }
                }
                else
                {
                    View.LoadItems(new List <dtoRepositoryItemToSelect>());
                }
            }
        }
Exemple #19
0
        private void LoadItems(ModuleRepository module, Int32 idCurrentUser, RepositoryIdentifier identifier, Boolean adminMode, Boolean showHiddenItems, Boolean disableNotAvailableItems, List <ItemType> typesToLoad, ItemAvailability availability, List <StatisticType> displayStatistics, List <long> idRemovedItems, List <long> idSelectedItems)
        {
            List <ItemType> aTypes = new List <ItemType>();

            if (!typesToLoad.Contains(ItemType.Folder))
            {
                aTypes.Add(ItemType.Folder);
            }
            aTypes.AddRange(typesToLoad);
            List <dtoRepositoryItemToSelect> items = Service.ItemsToSelectGet(idCurrentUser, "/", module, identifier, adminMode, showHiddenItems, disableNotAvailableItems, aTypes, availability, displayStatistics, idRemovedItems, idSelectedItems, false, false);

            idSelectedItems      = idSelectedItems.Where(i => items.Any(x => x.Id == i)).ToList();
            View.IdSelectedItems = idSelectedItems;
            if (items == null)
            {
                View.LoadItems(null);
            }
            else
            {
                View.LoadItems(items);
            }
        }
Exemple #20
0
 private ItemAvailability StatusToAvailability(FileTransferBase file, ItemAvailability current)
 {
     return(StatusToAvailability(file.Status, current));
 }
Exemple #21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ItemAvailabilityModel"/> class.
 /// </summary>
 /// <param name="availability">The availability.</param>
 public ItemAvailabilityModel(ItemAvailability availability)
 {
     _availability = availability;
 }
Exemple #22
0
        public void InitView(RepositoryIdentifier identifier, Boolean loadSelectedItems, Boolean adminMode, Boolean showHiddenItems, Boolean disableNotAvailableItems, ItemAvailability availability, Boolean allowSelectFolder, List <long> idSelectedItems, List <long> idRemovedItems = null)
        {
            if (SessionTimeout())
            {
                return;
            }
            if (idRemovedItems == null)
            {
                idRemovedItems = new List <long>();
            }
            if (!loadSelectedItems)
            {
                idRemovedItems.AddRange(idSelectedItems);
                idSelectedItems = new List <long>();
            }
            List <ItemType> typesToLoad = new List <ItemType>()
            {
                { ItemType.File }, { ItemType.Multimedia }, { ItemType.Link }, { ItemType.ScormPackage }, { ItemType.SharedDocument }, { ItemType.VideoStreaming }
            };

            InitView(identifier, adminMode, showHiddenItems, disableNotAvailableItems, typesToLoad, availability, new List <StatisticType>(), idRemovedItems, idSelectedItems);
        }
            /// <summary>
            /// Processes the specified request.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>
            /// Available quantities of specified listings at the requested warehouse.
            /// </returns>
            protected override GetListingAvailableQuantitiesResponse Process(GetListingAvailableQuantitiesRequest request)
            {
                ThrowIf.Null(request, "request");
                ThrowIf.NullOrEmpty(request.ProductIds, "No Ids have been provided");

                QueryResultSettings settings = QueryResultSettings.AllRecords;
                var productIds = request.ProductIds.Distinct().ToList();
                ProductSearchCriteria queryCriteria = new ProductSearchCriteria(this.Context.GetPrincipal().ChannelId)
                {
                    Ids       = productIds,
                    DataLevel = CommerceEntityDataLevel.Identity,
                };

                var productSearchResult = request.RequestContext.Runtime.Execute <ProductSearchServiceResponse>(
                    new ProductSearchServiceRequest(queryCriteria, settings), request.RequestContext).ProductSearchResult;

                if (productSearchResult.Results.IsNullOrEmpty())
                {
                    string nonResolvedProductIdsInfo = string.Join(" ", productIds);
                    //// This is a valid situtation for cross channel scenarios, wish lists for example.
                    NetTracer.Warning("None of the specified product ids were found on the current channel {0}. ProductIds = {1}", this.Context.GetPrincipal().ChannelId, nonResolvedProductIdsInfo);
                    return(new GetListingAvailableQuantitiesResponse());
                }

                var productMap = productSearchResult.Results.ToDictionary(p => p.RecordId, p => p);
                var items      = this.GetItemAndInventDimId(productIds, productSearchResult, productMap);

                settings = new QueryResultSettings(new PagingInfo(items.Count(), 0));
                var itemAvailabilities = new HashSet <ItemAvailability>();
                var itemUnits          = new HashSet <ItemUnit>();

                if (request.ChannelId == 0)
                {
                    var itemVariantInventoryDimensions = new HashSet <ItemVariantInventoryDimension>();
                    foreach (var item in items)
                    {
                        itemVariantInventoryDimensions.Add(new ItemVariantInventoryDimension(item.Item1, item.Item2));
                    }

                    var itemAvailableQuantitiesRequest  = new GetItemAvailableQuantitiesByItemsServiceRequest(settings, itemVariantInventoryDimensions, string.Empty);
                    var itemAvailableQuantitiesResponse = this.Context.Execute <GetItemAvailableQuantitiesByItemsServiceResponse>(itemAvailableQuantitiesRequest);
                    foreach (var quantity in itemAvailableQuantitiesResponse.ItemAvailableQuantities.Results)
                    {
                        if (quantity != null)
                        {
                            var productAvailableQuantity = new ItemAvailability
                            {
                                ItemId = quantity.ItemId,
                                VariantInventoryDimensionId = quantity.VariantInventoryDimensionId,
                                AvailableQuantity           = quantity.AvailableQuantity,
                                UnitOfMeasure = quantity.UnitOfMeasure
                            };

                            itemAvailabilities.Add(productAvailableQuantity);

                            var itemUnit = new ItemUnit
                            {
                                ItemId = quantity.ItemId,
                                VariantInventoryDimensionId = quantity.VariantInventoryDimensionId,
                                UnitOfMeasure = items.Where(i => i.Item1.Equals(quantity.ItemId) && i.Item2.Equals(quantity.VariantInventoryDimensionId)).SingleOrDefault().Item3
                            };

                            itemUnits.Add(itemUnit);
                        }
                    }
                }
                else
                {
                    var itemWarehouses = new HashSet <ItemWarehouse>();
                    foreach (var item in items)
                    {
                        var itemWarehouse = new ItemWarehouse()
                        {
                            ItemId = item.Item1,
                            VariantInventoryDimensionId = item.Item2,
                            InventoryLocationId         = this.Context.GetChannelConfiguration().InventLocation
                        };
                        itemWarehouses.Add(itemWarehouse);
                    }

                    var warehouseRequest  = new GetItemAvailabilitiesByItemWarehousesServiceRequest(settings, itemWarehouses);
                    var warehouseResponse = this.Context.Execute <GetItemAvailabilitiesByItemWarehousesServiceResponse>(warehouseRequest);
                    foreach (var quantity in warehouseResponse.ItemAvailabilities.Results)
                    {
                        if (quantity != null)
                        {
                            itemAvailabilities.Add(quantity);

                            var itemUnit = new ItemUnit
                            {
                                ItemId = quantity.ItemId,
                                VariantInventoryDimensionId = quantity.VariantInventoryDimensionId,
                                UnitOfMeasure = items.Where(i => i.Item1.Equals(quantity.ItemId) && i.Item2.Equals(quantity.VariantInventoryDimensionId)).SingleOrDefault().Item3
                            };

                            itemUnits.Add(itemUnit);
                        }
                    }
                }

                var itemAvailabilitiesList  = ChannelAvailabilityHelper.ConvertUnitOfMeasure(this.Context, itemAvailabilities.ToList(), itemUnits.ToList());
                var processedAvailabilities = this.ProcessItemAvailabilities(itemAvailabilitiesList, productIds, productSearchResult, productMap);

                return(new GetListingAvailableQuantitiesResponse(processedAvailabilities.AsPagedResult()));
            }
Exemple #24
0
            private static bool SetSalesInventory(RequestContext context, SalesLine salesLine, ItemAvailability itemAvailability, Dictionary <string, decimal> salesLineInventoryQuantities)
            {
                decimal salesLineInventoryQuantity = salesLineInventoryQuantities[salesLine.LineId];

                if (itemAvailability == null)
                {
                    var notification = new InventoryNotFoundNotification(salesLine.LineId);
                    context.Notify(notification);
                }
                else
                {
                    if (itemAvailability.AvailableQuantity < salesLineInventoryQuantity)
                    {
                        var notification = new InsufficientQuantityAvailableNotification(salesLine.LineId, salesLine.ItemId);
                        context.Notify(notification);
                    }

                    salesLine.InventoryLocationId = itemAvailability.InventoryLocationId;

                    itemAvailability.AvailableQuantity -= salesLineInventoryQuantity;

                    return(true);
                }

                return(false);
            }
Exemple #25
0
 public void ConstructComponents()
 {
     this.spawnedThings      = new ThingOwner <Thing>(this);
     this.cellIndices        = new CellIndices(this);
     this.listerThings       = new ListerThings(ListerThingsUse.Global);
     this.listerBuildings    = new ListerBuildings();
     this.mapPawns           = new MapPawns(this);
     this.dynamicDrawManager = new DynamicDrawManager(this);
     this.mapDrawer          = new MapDrawer(this);
     this.tooltipGiverList   = new TooltipGiverList();
     this.pawnDestinationReservationManager = new PawnDestinationReservationManager();
     this.reservationManager = new ReservationManager(this);
     this.physicalInteractionReservationManager = new PhysicalInteractionReservationManager();
     this.designationManager             = new DesignationManager(this);
     this.lordManager                    = new LordManager(this);
     this.debugDrawer                    = new DebugCellDrawer();
     this.passingShipManager             = new PassingShipManager(this);
     this.haulDestinationManager         = new HaulDestinationManager(this);
     this.gameConditionManager           = new GameConditionManager(this);
     this.weatherManager                 = new WeatherManager(this);
     this.zoneManager                    = new ZoneManager(this);
     this.resourceCounter                = new ResourceCounter(this);
     this.mapTemperature                 = new MapTemperature(this);
     this.temperatureCache               = new TemperatureCache(this);
     this.areaManager                    = new AreaManager(this);
     this.attackTargetsCache             = new AttackTargetsCache(this);
     this.attackTargetReservationManager = new AttackTargetReservationManager(this);
     this.lordsStarter                   = new VoluntarilyJoinableLordsStarter(this);
     this.thingGrid                  = new ThingGrid(this);
     this.coverGrid                  = new CoverGrid(this);
     this.edificeGrid                = new EdificeGrid(this);
     this.blueprintGrid              = new BlueprintGrid(this);
     this.fogGrid                    = new FogGrid(this);
     this.glowGrid                   = new GlowGrid(this);
     this.regionGrid                 = new RegionGrid(this);
     this.terrainGrid                = new TerrainGrid(this);
     this.pathGrid                   = new PathGrid(this);
     this.roofGrid                   = new RoofGrid(this);
     this.fertilityGrid              = new FertilityGrid(this);
     this.snowGrid                   = new SnowGrid(this);
     this.deepResourceGrid           = new DeepResourceGrid(this);
     this.exitMapGrid                = new ExitMapGrid(this);
     this.linkGrid                   = new LinkGrid(this);
     this.glowFlooder                = new GlowFlooder(this);
     this.powerNetManager            = new PowerNetManager(this);
     this.powerNetGrid               = new PowerNetGrid(this);
     this.regionMaker                = new RegionMaker(this);
     this.pathFinder                 = new PathFinder(this);
     this.pawnPathPool               = new PawnPathPool(this);
     this.regionAndRoomUpdater       = new RegionAndRoomUpdater(this);
     this.regionLinkDatabase         = new RegionLinkDatabase();
     this.moteCounter                = new MoteCounter();
     this.gatherSpotLister           = new GatherSpotLister();
     this.windManager                = new WindManager(this);
     this.listerBuildingsRepairable  = new ListerBuildingsRepairable();
     this.listerHaulables            = new ListerHaulables(this);
     this.listerMergeables           = new ListerMergeables(this);
     this.listerFilthInHomeArea      = new ListerFilthInHomeArea(this);
     this.reachability               = new Reachability(this);
     this.itemAvailability           = new ItemAvailability(this);
     this.autoBuildRoofAreaSetter    = new AutoBuildRoofAreaSetter(this);
     this.roofCollapseBufferResolver = new RoofCollapseBufferResolver(this);
     this.roofCollapseBuffer         = new RoofCollapseBuffer();
     this.wildAnimalSpawner          = new WildAnimalSpawner(this);
     this.wildPlantSpawner           = new WildPlantSpawner(this);
     this.steadyEnvironmentEffects   = new SteadyEnvironmentEffects(this);
     this.skyManager                 = new SkyManager(this);
     this.overlayDrawer              = new OverlayDrawer();
     this.floodFiller                = new FloodFiller(this);
     this.weatherDecider             = new WeatherDecider(this);
     this.fireWatcher                = new FireWatcher(this);
     this.dangerWatcher              = new DangerWatcher(this);
     this.damageWatcher              = new DamageWatcher();
     this.strengthWatcher            = new StrengthWatcher(this);
     this.wealthWatcher              = new WealthWatcher(this);
     this.regionDirtyer              = new RegionDirtyer(this);
     this.cellsInRandomOrder         = new MapCellsInRandomOrder(this);
     this.rememberedCameraPos        = new RememberedCameraPos(this);
     this.mineStrikeManager          = new MineStrikeManager();
     this.storyState                 = new StoryState(this);
     this.retainedCaravanData        = new RetainedCaravanData(this);
     this.components.Clear();
     this.FillComponents();
 }
Exemple #26
0
        private ItemAvailability StatusToAvailability(TransferStatus status, ItemAvailability current)
        {
            ItemAvailability avail = current;

            switch (status)
            {
            case TransferStatus.Multimedia_AnalyzeError:
                avail = ItemAvailability.witherrors;
                break;

            case TransferStatus.Scorm_AnalyzeError:
                avail = ItemAvailability.witherrors;
                break;

            case TransferStatus.FileTypeError:
                avail = ItemAvailability.witherrors;
                break;

            case TransferStatus.UnableToDeleteAfterUnzip:
                avail = ItemAvailability.witherrors;
                break;

            case TransferStatus.UnzipFileNotFound:
                avail = ItemAvailability.witherrors;
                break;

            case TransferStatus.UploadFileNotFound:
                avail = ItemAvailability.witherrors;
                break;

            case TransferStatus.UnableToUnzip:
                avail = ItemAvailability.unabletounzip;
                break;

            case TransferStatus.Error:
                avail = ItemAvailability.witherrors;
                break;

            case TransferStatus.ReadyForTransfer:
                avail = ItemAvailability.transfer;
                break;

            case TransferStatus.Copying:
                avail = ItemAvailability.transfer;
                break;

            case TransferStatus.ReadyToUnzip:
                avail = ItemAvailability.transfer;
                break;

            case TransferStatus.Unzipping:
                avail = ItemAvailability.transfer;
                break;

            case TransferStatus.Unzipped:
                //current
                break;

            case TransferStatus.ReadyToDelete:
                //current
                break;

            case TransferStatus.Completed:
                avail = ItemAvailability.available;
                break;

            case TransferStatus.Deleting:
                //current
                break;

            case TransferStatus.Deleted:
                //current
                break;

            case TransferStatus.ReadyToAnalyze:
                avail = ItemAvailability.analyzing;
                break;

            case TransferStatus.Analyzed:
                //current
                break;

            case TransferStatus.Multimedia_NoCandidates:
                avail = ItemAvailability.waitingsettings;
                break;

            default:
                //current
                break;
            }

            return(avail);
        }