public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var character = request.Session.Character; var entry = request.Data.GetOrDefault <string>(k.text); var bulletinID = request.Data.GetOrDefault <int>(k.bulletinID); string.IsNullOrEmpty(entry).ThrowIfTrue(ErrorCodes.TextEmpty); var corporation = character.GetPrivateCorporationOrThrow(); _bulletinHandler.BulletinExists(bulletinID, corporation.Eid).ThrowIfFalse(ErrorCodes.ItemNotFound); var id = _bulletinHandler.InsertEntry(bulletinID, character.Id, entry); var result = new Dictionary <string, object>(4) { { k.bulletinID, bulletinID }, { k.entryID, id }, { k.text, entry }, { k.characterID, character.Id }, { k.date, DateTime.Now } }; Message.Builder.SetCommand(request.Command) .WithData(result) .ToCharacters(corporation.GetCharacterMembers()).Send(); var bulletinDescription = _bulletinHandler.GetBulletin(bulletinID); Transaction.Current.OnCommited(() => _bulletinHandler.SendBulletinUpdate(bulletinDescription, CorporationBulletinEvent.newEntry, character)); scope.Complete(); } }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var character = request.Session.Character; var title = request.Data.GetOrDefault <string>(k.title); var entryText = request.Data.GetOrDefault <string>(k.text); string.IsNullOrEmpty(entryText).ThrowIfTrue(ErrorCodes.TextEmpty); string.IsNullOrEmpty(title).ThrowIfTrue(ErrorCodes.TextEmpty); var corporation = character.GetPrivateCorporationOrThrow(); corporation.GetMemberRole(character).IsAnyRole(CorporationRole.CEO, CorporationRole.PRManager, CorporationRole.DeputyCEO).ThrowIfFalse(ErrorCodes.InsufficientPrivileges); //create a bulletin var bulletin = _bulletinHandler.StartBulletin(corporation.Eid, title, character); //add initial entry _bulletinHandler.InsertEntry(bulletin.bulletinID, character.Id, entryText); var entries = _bulletinHandler.GetBulletinEntries(bulletin.bulletinID); var result = new Dictionary <string, object>(2) { { k.details, bulletin.ToDictionary() }, { k.entries, entries } }; Message.Builder.FromRequest(request) .WithData(result) .Send(); Transaction.Current.OnCommited(() => _bulletinHandler.SendBulletinUpdate(bulletin, CorporationBulletinEvent.bulletinStarted, character)); scope.Complete(); } }