Пример #1
0
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var resultIds = request.Data.GetOrDefault <int[]>(k.items);

                if (resultIds.Length > 1000)
                {
                    // ezt azert,h ne szalljon el az sql, kell kliensbe is egy ilyen limit
                    Array.Resize(ref resultIds, 1000);
                }

                var character = request.Session.Character;
                var repo      = new MineralScanResultRepository(character);

                foreach (var id in resultIds)
                {
                    repo.DeleteById(id);
                }

                Transaction.Current.OnCommited(() =>
                {
                    var info = new Dictionary <string, object> {
                        { k.items, resultIds }
                    };
                    Message.Builder.FromRequest(request)
                    .WithData(info)
                    .Send();
                });

                scope.Complete();
            }
        }
Пример #2
0
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character = request.Session.Character;
                character.IsDocked.ThrowIfFalse(ErrorCodes.CharacterHasToBeDocked);

                var containerEid = request.Data.GetOrDefault <long>(k.containerEID);
                var itemEid      = request.Data.GetOrDefault <long>(k.itemEID);

                var container = Container.GetWithItems(containerEid, character, ContainerAccess.Remove);
                container.ThrowIfType <VolumeWrapperContainer>(ErrorCodes.AccessDenied);

                var item = container.GetItemOrThrow(itemEid).ThrowIfNotType <MineralScanResultItem>(ErrorCodes.DefinitionNotSupported);

                var scanResult = item.ToScanResult().ThrowIfNull(ErrorCodes.ServerError);

                var repo = new MineralScanResultRepository(character);
                repo.InsertOrThrow(scanResult);

                Transaction.Current.OnCommited(() =>
                {
                    var result = new Dictionary <string, object>
                    {
                        { k.container, container.ToDictionary() },
                        { k.scanResult, scanResult.ToDictionary() }
                    };

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

                scope.Complete();
            }
        }
Пример #3
0
        public void HandleRequest(IRequest request)
        {
            var character = request.Session.Character;
            var repo      = new MineralScanResultRepository(character);
            var result    = repo.GetAll().ToDictionary("s", r => r.ToDictionary());

            Message.Builder.FromRequest(request).WithData(result).Send();
        }
        public void CleanUp(Character character)
        {
            //reset extensions
            character.ResetAllExtensions();

            //reset credit
            character.Credit = 0;

            //reset sparks
            _sparkHelper.ResetSparks(character);

            //remove scanresults
            var repo = new MineralScanResultRepository(character);

            repo.DeleteAll();

            //remove insurance
            InsuranceHelper.RemoveAll(character);

            //remove market orders
            _marketHelper.RemoveAll(character);

            Db.Query().CommandText("delete charactertransactions where characterid=@characterID").SetParameter("@characterID", character.Id).ExecuteNonQuery();

            Db.Query().CommandText("delete productionlog where characterid=@characterID").SetParameter("@characterID", character.Id).ExecuteNonQuery();

            Db.Query().CommandText("delete techtreeunlockednodes where owner=@eid").SetParameter("@eid", character.Eid).ExecuteNonQuery();

            Db.Query().CommandText("delete techtreelog where character=@characterID").SetParameter("@characterID", character.Id).ExecuteNonQuery();

            Db.Query().CommandText("delete techtreepoints where owner=@eid").SetParameter("@eid", character.Eid).ExecuteNonQuery();

            character.HomeBaseEid = null;

            //delete all items
            Db.Query().CommandText("delete entities where owner=@rootEid")
            .SetParameter("@rootEid", character.Eid)
            .ExecuteNonQuery();

            Transaction.Current.OnCommited(() =>
            {
                //stop productions
                ProductionAbort(character);
                //stop all missions
                MissionForceAbort(character);
            });

            //do/finish character wizard
        }
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character = request.Session.Character;
                character.IsDocked.ThrowIfFalse(ErrorCodes.CharacterHasToBeDocked);

                var repo = new MineralScanResultRepository(character);

                var scanResultId = request.Data.GetOrDefault <int>(k.ID);
                var scanResult   = repo.Get(scanResultId).ThrowIfNull(ErrorCodes.MineralScanResultNotFound);
                var item         = scanResult.ToItem();
                item.Owner = character.Eid;

                var container = character.GetPublicContainerWithItems();
                container.AddItem(item, false);
                container.Save();

                Transaction.Current.OnCommited(() => Message.Builder.FromRequest(request).WithData(container.ToDictionary()).Send());

                scope.Complete();
            }
        }