public void Visit(CorporateHangarFolder folder)
        {
            var parentEntity = folder.GetOrLoadParentEntity();

            Debug.Assert(parentEntity != null, "folder.ParentEntity != null");
            parentEntity.AcceptVisitor(this);
        }
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character = request.Session.Character;
                var hangarEID = request.Data.GetOrDefault <long>(k.eid);

                var corporation     = character.GetCorporation();
                var corporateHangar = corporation.GetHangar(hangarEID, character);

                corporateHangar.Folders.Count().ThrowIfGreaterOrEqual(_corporationManager.Settings.NumberOfHangarFolders, ErrorCodes.MaxNumberOfHangarFoldersReached);

                var corporateHangarFolder = CorporateHangarFolder.CreateCorporateHangarFolder();
                corporateHangarFolder.Owner = corporation.Eid;

                corporateHangar.AddChild(corporateHangarFolder);

                //inherit logging
                corporateHangarFolder.SetLogging(corporateHangar.IsLogging(), null);
                corporateHangar.Save();

                Message.Builder.FromRequest(request)
                .WithData(corporateHangarFolder.ToDictionary())
                .Send();
                scope.Complete();
            }
        }