public void HandleRequest(IRequest request)
        {
            var character  = request.Session.Character;
            var bulletinID = request.Data.GetOrDefault <int>(k.bulletinID);

            var corporation = character.GetPrivateCorporationOrThrow();

            _bulletinHandler.BulletinExists(bulletinID, corporation.Eid).ThrowIfFalse(ErrorCodes.ItemNotFound);

            var result = new Dictionary <string, object>(2)
            {
                { k.details, _bulletinHandler.GetBulletin(bulletinID, corporation.Eid).ToDictionary() },
                { k.entries, _bulletinHandler.GetBulletinEntries(bulletinID) }
            };

            Message.Builder.FromRequest(request)
            .WithData(result)
            .Send();
        }
        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();
            }
        }