public void OnDiff(BaseModelDiff.DiffExpiredItem diff)
    {
        bool flag = false;

        if (Utility.IsExist(diff.add))
        {
            List <ItemInfo> list = null;
            int             num  = -1;
            int             i    = 0;
            for (int count = diff.add.Count; i < count; i++)
            {
                ExpiredItem     o     = diff.add[i];
                List <ItemInfo> list2 = list;
                if (num != o.itemId || list == null)
                {
                    list2 = GetItemList((ItemInfo x) => x.tableID == o.itemId, 1);
                    num   = o.itemId;
                    list  = list2;
                }
                foreach (ItemInfo item in list2)
                {
                    if (item.expiredAtItem == null)
                    {
                        item.expiredAtItem = new List <ExpiredItem>();
                    }
                    item.expiredAtItem.Add(o);
                }
            }
            flag = true;
        }
        if (Utility.IsExist(diff.update))
        {
            List <ItemInfo> list3 = null;
            int             num2  = -1;
            int             j     = 0;
            for (int count2 = diff.update.Count; j < count2; j++)
            {
                ExpiredItem     o2    = diff.update[j];
                List <ItemInfo> list4 = list3;
                if (num2 != o2.itemId || list3 == null)
                {
                    list4 = GetItemList((ItemInfo x) => x.tableID == o2.itemId, 1);
                    num2  = o2.itemId;
                    list3 = list4;
                }
                foreach (ItemInfo item2 in list4)
                {
                    ExpiredItem expiredItem = item2.expiredAtItem.Find((ExpiredItem y) => y.uniqId.Equals(o2.uniqId));
                    expiredItem.expiredAt = o2.expiredAt;
                    expiredItem.used      = o2.used;
                }
            }
            flag = true;
        }
        if (flag)
        {
            MonoBehaviourSingleton <GameSceneManager> .I.SetNotify(GameSection.NOTIFY_FLAG.UPDATE_ITEM_INVENTORY);
        }
    }
示例#2
0
        private void DoWork(object state)
        {
            DateTime now = DateTime.Now;

            var scope = scopeFactory.CreateScope();

            var dbContext = scope.ServiceProvider.GetRequiredService <AuctionDbContext>();

            var latestSessionBid = dbContext.Bids
                                   .Where(x => x.AccountId == 1 && x.Item.BidStatus == BidStatus.Complete && x.IsLatestBidWinner)
                                   .OrderByDescending(x => x.BidSession).FirstOrDefault();

            if (latestSessionBid != null)
            {
                var latestEndBid = dbContext.Bids
                                   .Where(x => x.BidSession == latestSessionBid.BidSession)
                                   .OrderByDescending(x => x.CurrentBid)
                                   .FirstOrDefault();

                var existingExpiredItem = dbContext.ExpiredItems
                                          .FirstOrDefault(x => x.ItemId == latestEndBid.ItemId && x.SessionId == latestEndBid.BidSession);

                if (existingExpiredItem == null)
                {
                    var model = new ExpiredItem
                    {
                        ItemId      = latestEndBid.ItemId,
                        ExpiredDate = now,
                        SessionId   = latestEndBid.BidSession,
                        IsSeen      = false
                    };

                    dbContext.ExpiredItems.Add(model);

                    dbContext.SaveChanges();

                    _logger.LogInformation("Expired Item ID: { Expired Item}", latestEndBid.ItemId + "was sent notification successful!");
                }
                else
                {
                    _logger.LogInformation("Notification of expired Item ID: { Expired Item}", latestEndBid.ItemId + " is existed");
                }

                hubContext.Clients.All.SendAsync("refreshNotifications");
            }
            else
            {
                _logger.LogInformation("Expired Item: There is no expired items");
            }

            var count = Interlocked.Increment(ref executionCount) + "----" + now;

            _logger.LogInformation("Timed Hosted Service is working");
            _logger.LogInformation("Count {Count}", count);
        }
    public override void UpdateUI()
    {
        SetLabelText((Enum)UI.STR_TITLE, StringTable.Get(STRING_CATEGORY.COMMON, 103u));
        SetLabelText((Enum)UI.STR_TITLE_REFLECT, StringTable.Get(STRING_CATEGORY.COMMON, 103u));
        List <ItemInfo> itemList = MonoBehaviourSingleton <InventoryManager> .I.GetItemList((ItemInfo x) => x.tableData.type == ITEM_TYPE.TICKET, 0);

        ExpiredItem[] showList = GetItemList(itemList).ToArray();
        GetCtrl(UI.LBL_CAUTION).GetComponent <UILabel>().supportEncoding = true;
        string text = StringTable.Get(STRING_CATEGORY.SHOP, 14u);

        SetLabelText((Enum)UI.LBL_CAUTION, text);
        SetActive((Enum)UI.BTN_TO_GACHA, MonoBehaviourSingleton <GameSceneManager> .I.GetCurrentSceneName() != "ShopScene");
        SetActive((Enum)UI.GRD_LIST, showList.Length > 0);
        SetActive((Enum)UI.STR_ORDER_NON_LIST, showList.Length == 0);
        SetActive((Enum)UI.OBJ_ACTIVE_ROOT, showList.Length > 0);
        SetActive((Enum)UI.OBJ_INACTIVE_ROOT, showList.Length == 0);
        if (showList.Length == 0)
        {
            SetLabelText((Enum)UI.LBL_MAX, "0");
            SetLabelText((Enum)UI.LBL_NOW, "0");
            UIScrollView component = GetCtrl(UI.SCR_LIST).GetComponent <UIScrollView>();
            if (component != null)
            {
                component.set_enabled(false);
                component.verticalScrollBar.alpha = 0f;
            }
        }
        else
        {
            pageMax = 1 + (showList.Length - 1) / 10;
            bool flag = pageMax > 1;
            SetActive((Enum)UI.OBJ_ACTIVE_ROOT, flag);
            SetActive((Enum)UI.OBJ_INACTIVE_ROOT, !flag);
            SetLabelText((Enum)UI.LBL_MAX, pageMax.ToString());
            SetLabelText((Enum)UI.LBL_NOW, nowPage.ToString());
            int           num   = 10 * (nowPage - 1);
            int           num2  = (nowPage != pageMax) ? 10 : (showList.Length - num);
            ExpiredItem[] array = new ExpiredItem[num2];
            Array.Copy(showList, num, array, 0, num2);
            showList = array;
            SetGrid(UI.GRD_LIST, "GachaTicketListItem", showList.Length, true, delegate(int i, Transform t, bool is_recycle)
            {
                ExpiredItem expiredItem     = showList[i];
                ItemTable.ItemData itemData = Singleton <ItemTable> .I.GetItemData((uint)expiredItem.itemId);
                UITexture component2        = FindCtrl(t, UI.TEX_ICON).GetComponent <UITexture>();
                ResourceLoad.LoadItemIconTexture(component2, itemData.iconID);
                SetLabelText(t, UI.LBL_NAME, itemData.name);
                string empty  = string.Empty;
                string empty2 = string.Empty;
                if (string.IsNullOrEmpty(expiredItem.expiredAt))
                {
                    empty  = "-";
                    empty2 = "-";
                }
                else
                {
                    empty  = expiredItem.expiredAt;
                    empty2 = TimeManager.GetRemainTimeToText(expiredItem.expiredAt, 1);
                }
                SetLabelText(t, UI.LBL_LIMIT, empty);
                SetLabelText(t, UI.LBL_COUNTDOWN, empty2);
            });
        }
    }