コード例 #1
0
        public void HandleRequest(IRequest request)
        {
            var character      = request.Session.Character;
            var itemDefinition = request.Data.GetOrDefault <int>(k.definition);

            //training character => no markets in range
            if (character.IsInTraining())
            {
                var trainingResult = new Dictionary <string, object>
                {
                    { k.definition, itemDefinition },
                };

                Message.Builder.FromRequest(request).WithData(trainingResult).Send();
                return;
            }

            long?corporationEid = character.CorporationEid;

            if (DefaultCorporationDataCache.IsCorporationDefault((long)corporationEid))
            {
                corporationEid = null;
            }

            var trainingMarketEid = _marketHandler.GetTrainingMarketEid();

            //raw select by definition
            //exclude training market
            //include corp orders if character in private corp
            //include normal orders (non corp)
            var orders = _marketOrderRepository.GetAllByDefinition(itemDefinition).Where(r => r.marketEID != trainingMarketEid && (r.forMembersOf == corporationEid || r.forMembersOf == null)).ToArray();


            //ez szabalyozza le, hogy nem latszanak a pbs marketek
            //itt lehet ugyeskedni
            //filtered markets
            //var orders = repo.GetByMarketEids(MarketHandler.GetAllDefaultMarketsEids(), itemDefinition, request.character.CorporationEid).ToArray();

            var orderDict = new Dictionary <string, object>(orders.Length);
            var counter   = 0;

            foreach (var oneOrder in orders.Select(order => order.ToDictionary()))
            {
                orderDict.Add("m" + counter++, oneOrder);
            }

            var result = new Dictionary <string, object>
            {
                { k.definition, itemDefinition },
                { k.orders, orderDict }
            };

            Message.Builder.FromRequest(request).WithData(result).Send();
        }