Пример #1
0
        public MenuResponse Execute(UpdateMenuInput input)
        {
            var menuResponse = new MenuResponse();

            try
            {
                CheckInputValidity(input);

                Log.Information("Actualizando Menu por Id: [{Id}] con nuevo nombre: [{NewTitle}]...", input.Id, input.NombreNuevo);

                var menuToUpdate = Repository.SingleOrDefault(menu => menu.Id == input.Id);
                if (menuToUpdate == null)
                {
                    var exception = new Exception($"No se pudo encontrar el menu con el id: [{input.Id}].");
                    Log.Error(exception, EXCEPTION_MESSAGE_TEMPLATE, exception.Message);
                    HandleErrors(menuResponse, exception, 404);
                    return(menuResponse);
                }

                menuToUpdate.Nombre = input.NombreNuevo;
                menuToUpdate.Base64 = input.Base64Nuevo;

                var updatedMenu = Repository.Update(menuToUpdate);
                menuResponse.Menu       = updatedMenu;
                menuResponse.StatusCode = 200;

                Log.Information("Actualizado con exito el menu con Id: [{Id}] con nuevo nombre [{NewTitle}].", input.Id, input.NombreNuevo);
            }
            catch (Exception exception)
            {
                Log.Error(exception, EXCEPTION_MESSAGE_TEMPLATE, exception.Message);
                HandleErrors(menuResponse, exception);
            }
            return(menuResponse);
        }
Пример #2
0
        public async Task <UpdateMenuOutput> Update(UpdateMenuInput input)
        {
            var menu = await _menuRepository.SingleOrDefaultAsync(p => p.Id == input.Id);

            if (menu == null)
            {
                throw new BusinessException($"不存在Id为{input.Id}的菜单信息");
            }
            var permission = await _permissionRepository.GetAsync(menu.PermissionId);

            menu       = input.MapTo(menu);
            permission = input.MapTo(permission);
            using (var locker = await _lockerProvider.CreateLockAsync("UpdateMenu"))
            {
                return(await locker.Lock(async() =>
                {
                    await UnitOfWorkAsync(async(conn, trans) =>
                    {
                        await _permissionRepository.UpdateAsync(permission, conn, trans);
                        await _menuRepository.UpdateAsync(menu, conn, trans);
                    }, Connection);
                    return new UpdateMenuOutput {
                        Id = menu.Id, PermissionId = menu.PermissionId, Tips = "更新菜单成功"
                    };
                }));
            }
        }
Пример #3
0
        public async Task <string> UpdateMenu(UpdateMenuInput input)
        {
            input.CheckDataAnnotations().CheckValidResult();
            await _menuDomainService.Update(input);

            return("更新菜单信息成功");
        }
Пример #4
0
        public UpdateMenuOutput UpdateMenu(UpdateMenuInput input)
        {
            var menu = CreateRootMenuForDto(input.Menu);

            if (!(menu is CompositeMenu))
            {
                throw new UserFriendlyException($"菜单更新失败,菜单{menu.Name}必须是组合菜单");
            }

            _menuManager.UpdateRootMenu(input.Menu.Id, (CompositeMenu)menu);

            return(new UpdateMenuOutput());
        }
Пример #5
0
        public UpdateMenuOutput UpdateMenu(UpdateMenuInput input)
        {
            var menu = _menuRepository.FirstOrDefault(input.Id);

            _menuManager.UpdateName(menu, input.Name);
            menu.DisplayName = input.DisplayName;
            menu.Icon        = input.Icon;

            var pageData = GetPageData(input.PageName, input.PageDataName);

            menu.PageData = pageData;

            return(new UpdateMenuOutput());
        }
Пример #6
0
        public async Task <string> UpdateMenu(UpdateMenuInput input)
        {
            input.CheckDataAnnotations().CheckValidResult();
            var menu = await _menuRepository.SingleOrDefaultAsync(p => p.Id == input.Id);

            if (menu == null)
            {
                throw new BusinessException($"不存在Id为{input.Id}的菜单信息");
            }
            menu = input.MapTo(menu);
            var permission = await _permissionRepository.GetAsync(menu.PermissionId);

            permission.Memo = input.Memo;
            await _menuManager.UpdateMenu(menu, permission);

            return("更新菜单成功");
        }
Пример #7
0
        public async Task Update(UpdateMenuInput input)
        {
            var menu = await _menuRepository.SingleOrDefaultAsync(p => p.Id == input.Id);

            if (menu == null)
            {
                throw new BusinessException($"不存在Id为{input.Id}的菜单信息");
            }
            var permission = await _permissionRepository.GetAsync(menu.PermissionId);

            menu       = input.MapTo(menu);
            permission = input.MapTo(permission);
            await UnitOfWorkAsync(async (conn, trans) => {
                await _permissionRepository.UpdateAsync(permission, conn, trans);
                await _menuRepository.UpdateAsync(menu, conn, trans);
            }, Connection);
        }
Пример #8
0
 private void CheckInputValidity(UpdateMenuInput input)
 {
     if (input == null)
     {
         throw new ArgumentNullException(nameof(input));
     }
     if (input.Id <= 0)
     {
         throw new ArgumentException($"Input {nameof(input.Id)} debe ser 1 or mayor.");
     }
     if (string.IsNullOrWhiteSpace(input.NombreNuevo))
     {
         throw new ArgumentException($"Input {nameof(input.NombreNuevo)} no puede ser vacio.");
     }
     if (string.IsNullOrWhiteSpace(input.Base64Nuevo))
     {
         throw new ArgumentException($"Input {nameof(input.Base64Nuevo)} no puede ser vacio.");
     }
 }
Пример #9
0
        public UpdateMenuOutput UpdateMenu(UpdateMenuInput input)
        {
            var menu = _menuRepository.FirstOrDefault(input.Id);

            if (!string.IsNullOrEmpty(input.Name))
            {
                _menuManager.UpdateName(menu, input.Name);
            }

            if (!string.IsNullOrEmpty(input.DisplayName))
            {
                menu.DisplayName = input.DisplayName;
            }

            if (!string.IsNullOrEmpty(input.Icon))
            {
                menu.Icon = input.Icon;
            }

            return(new UpdateMenuOutput());
        }
Пример #10
0
        /// <summary>
        /// 更新菜单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <ApiResult> UpdateMenu(UpdateMenuInput input)
        {
            var menu = await GetByIdAsync(input.Id);

            if (menu == null)
            {
                return(ApiResult.DataNotFound());
            }
            // 更新菜单时不允许更新父节点
            menu.MenuName             = input.MenuName;
            menu.MenuLeval            = input.MenuLeval;
            menu.MenuUrl              = input.MenuUrl;
            menu.MenuLayer            = input.MenuLayer;
            menu.IsSys                = input.IsSys;
            menu.IsOut                = input.IsOut;
            menu.IsParent             = input.IsParent;
            menu.TargetFrame          = input.TargetFrame;
            menu.Weight               = input.Weight;
            menu.LastModificationTime = DateTime.Now;
            await _menuRepository.UpdateAsync(menu);

            return(new ApiResult().Success());
        }
Пример #11
0
        public async Task <MenuDto> UpdateMenu(UpdateMenuInput input)
        {
            var menu = await _menuRepository.GetAsync(input.Id);

            await CheckNameRepeat(input.DisplayName, menu);

            if (menu.IsSystem && menu.Url != input.Url)
            {
                throw new UserFriendlyException("系统菜单链接不可修改");
            }
            menu.DisplayName            = input.DisplayName;
            menu.Icon                   = input.Icon;
            menu.IsVisible              = input.IsVisible;
            menu.RequiredPermissionName = input.RequiredPermissionName;
            if (!menu.IsSystem)
            {
                menu.Url = input.Url;
            }
            await CurrentUnitOfWork.SaveChangesAsync();

            await RebuildMenu();

            return(menu.MapTo <MenuDto>());
        }
Пример #12
0
 public IActionResult Update(int id, [FromBody] UpdateMenuInput menu)
 {
     menu.Id = id;
     _menuService.Update(menu);
     return(Created("", new { menu.Id }));
 }
Пример #13
0
 public async Task <UpdateMenuOutput> UpdateMenu(UpdateMenuInput input)
 {
     input.CheckDataAnnotations().CheckValidResult();
     return(await _menuDomainService.Update(input));
 }
Пример #14
0
 public IActionResult Put(UpdateMenuInput input)
 {
     return(ExecuteAndHandleRequest(() => MenuRequestAggregate.UpdateMenuRequest.Execute(input)));
 }