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(); } }
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(); } }
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(); } }