public async Task <string> CreateMenu(CreateMenuInput input)
        {
            input.CheckDataAnnotations().CheckValidResult();
            var exsitMenu = await _menuRepository.SingleOrDefaultAsync(p => p.Code == input.Code);

            if (exsitMenu != null)
            {
                throw new BusinessException($"系统中已经存在Code为{input.Code}的菜单信息");
            }
            var exsitPermission = await _permissionRepository.SingleOrDefaultAsync(p => p.Code == input.Code);

            if (exsitPermission != null)
            {
                throw new BusinessException($"系统中已经存在Code为{input.Code}的权限信息");
            }
            var menu       = input.MapTo <Menu>();
            var permission = new Permission()
            {
                Code = input.Code,
                Name = input.Name,
                Memo = input.Memo,
                Mold = PermissionMold.Menu
            };
            await _menuManager.CreateMenu(menu, permission);

            return("新增菜单成功");
        }
Beispiel #2
0
        public async Task <string> CreateMenu(CreateMenuInput input)
        {
            input.CheckDataAnnotations().CheckValidResult();
            await _menuDomainService.Create(input);

            return("新增菜单成功");
        }
Beispiel #3
0
        public CreateMenuOutput CreateMenu([FromBody] CreateMenuInput input)
        {
            Vendor           vendor  = _db.Vendors.Where(e => e.Id.Equals(input.VendorId) && e.Deleted == false).FirstOrDefault();
            AspUserService   aspUser = new AspUserService(_db, this);
            CreateMenuOutput output  = new CreateMenuOutput();

            if (vendor == null)
            {
                output.Result = "DOES_NOT_EXIST";
            }
            else
            {
                if (vendor.Owner == aspUser.User || aspUser.IsStaff)
                {
                    Menu newMenu = new Menu()
                    {
                        Name = input.MenuName
                    };

                    vendor.Menus.Add(newMenu);
                    _db.SaveChanges();
                    output.Result = "OK";
                }
                else
                {
                    output.Result = "NO_PRIVILEGE";
                }
            }

            return(output);
        }
Beispiel #4
0
        public async Task Create(CreateMenuInput input)
        {
            var menu = input.MapTo <Menu>();
            var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.ParentId == input.ParentId);

            if (menu.Mold == MenuMold.Top)
            {
                menu.Code  = (thisLevelMenuCount + 1).ToString().PadRight(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                menu.Level = 1;
            }
            else
            {
                var parentMenu = await _menuRepository.SingleOrDefaultAsync(p => p.Id == input.ParentId);

                if (parentMenu == null)
                {
                    throw new BusinessException($"不存在Id为{input.ParentId}的菜单信息");
                }
                menu.Code  = parentMenu.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + (thisLevelMenuCount + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                menu.Level = parentMenu.Level + 1;
            }
            var permission = input.MapTo <Permission>();

            await UnitOfWorkAsync(async (conn, trans) => {
                var permissionId  = await _permissionRepository.InsertAndGetIdAsync(permission, conn, trans);
                menu.PermissionId = permissionId;
                await _menuRepository.InsertAsync(menu, conn, trans);
            }, Connection);
        }
Beispiel #5
0
        public async Task <MenuDto> CreateSystemMenu(CreateMenuInput input)
        {
            var menu = input.MapTo <Menu>();

            menu.IsSystem = true;
            menu.Target   = "_self";
            _menuRepository.Insert(menu);
            await CurrentUnitOfWork.SaveChangesAsync();

            await RebuildMenu();

            return(menu.MapTo <MenuDto>());
        }
Beispiel #6
0
        public async Task <MenuDto> CreateCustomMenu(CreateMenuInput input)
        {
            await  CheckNameRepeat(input.DisplayName);

            var menu = input.MapTo <Menu>();

            menu.IsSystem = false;
            menu.Target   = "_blank";
            _menuRepository.Insert(menu);
            await CurrentUnitOfWork.SaveChangesAsync();

            await RebuildMenu();

            return(menu.MapTo <MenuDto>());
        }
Beispiel #7
0
        public async Task <CreateMenuOutput> Create(CreateMenuInput input)
        {
            var  menu         = input.MapTo <Menu>();
            long menuParentId = 0;
            var  exsitMenu    = await _menuRepository.FirstOrDefaultAsync(p => p.Name == input.Name);

            if (exsitMenu != null)
            {
                throw new BusinessException($"系统中已经存在{input.Name}的菜单,请勿重复添加");
            }
            if (menu.Mold == MenuMold.Top)
            {
                var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.Mold == MenuMold.Top);

                menu.Code  = (thisLevelMenuCount + 1).ToString().PadRight(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                menu.Level = 1;
            }
            else
            {
                var parentMenu = await _menuRepository.SingleOrDefaultAsync(p => p.PermissionId == input.ParentPermissionId);

                if (parentMenu == null)
                {
                    throw new BusinessException($"不存在PermissionId为{input.ParentPermissionId}的菜单信息");
                }
                menuParentId = parentMenu.Id;
                var thisLevelMenuCount = await _menuRepository.GetCountAsync(p => p.Mold == MenuMold.SubMenu && p.ParentId == parentMenu.Id);

                menu.Code  = parentMenu.Code + HeroConstants.CodeRuleRestrain.CodeSeparator + (thisLevelMenuCount + 1).ToString().PadLeft(HeroConstants.CodeRuleRestrain.CodeCoverBit, HeroConstants.CodeRuleRestrain.CodeCoverSymbol);
                menu.Level = parentMenu.Level + 1;
            }
            var permission = input.MapTo <Permission>();

            await UnitOfWorkAsync(async (conn, trans) => {
                var permissionId  = await _permissionRepository.InsertAndGetIdAsync(permission, conn, trans);
                menu.PermissionId = permissionId;
                menu.ParentId     = menuParentId;
                await _menuRepository.InsertAsync(menu, conn, trans);
            }, Connection);

            return(new CreateMenuOutput()
            {
                Id = menu.Id, PermissionId = menu.PermissionId, Tips = "新增菜单成功"
            });
        }
Beispiel #8
0
        public MenuResponse Execute(CreateMenuInput input)
        {
            var menuResponse = new MenuResponse();

            try
            {
                Log.Information("Creando Menu Con nombre [{NewName}]...", input?.Nombre);
                byte[]     imageBytes = Convert.FromBase64String(input?.Base64);
                MenuEntity menuEntity = Mapper.Map <CreateMenuInput, MenuEntity>(input);
                menuEntity.FechaCreacion = DateTime.Now;
                menuResponse.Menu        = Repository.Create(menuEntity);
                menuResponse.StatusCode  = 200;
                Log.Information("Menu creado con el nombre [{NewName}] con el Id: [{Id}]", menuResponse.Menu.Nombre, menuResponse.Menu.Id);
            }
            catch (Exception exception)
            {
                Log.Error(exception, "Error al crear el Menu: [{NewName}].", input?.Nombre);
                HandleErrors(menuResponse, exception);
            }
            return(menuResponse);
        }
Beispiel #9
0
 public async Task <CreateMenuOutput> CreateMenu(CreateMenuInput input)
 {
     input.CheckDataAnnotations().CheckValidResult();
     return(await _menuDomainService.Create(input));
 }
Beispiel #10
0
 [AbpAuthorize("CanCreateMenues")] //An example of permission checking
 public async Task CreateMenu(CreateMenuInput input)
 {
     await _menuRepository.InsertAsync(new Menu(input.Name, input.DisplayName, AbpSession.TenantId, input.ParentId, input.Icon, input.Url, input.RequiresAuthentication, input.RequiredPermissionName, input.Order));
 }
 public IActionResult Crear(CreateMenuInput menu)
 {
     return(ExecuteAndHandleRequest(() => MenuRequestAggregate.CreateMenuRequest.Execute(menu)));
 }