Пример #1
0
        public async Task <AppSrvResult <long> > CreateAsync(MenuCreationDto input)
        {
            var allMenus = await _cacheService.GetAllMenusFromCacheAsync();

            var isExistsCode = allMenus.Any(x => x.Code == input.Code);

            if (isExistsCode)
            {
                return(Problem(HttpStatusCode.Forbidden, "该菜单编码已经存在"));
            }

            var isExistsName = allMenus.Any(x => x.Name == input.Name);

            if (isExistsName)
            {
                return(Problem(HttpStatusCode.Forbidden, "该菜单名称已经存在"));
            }

            var parentMenu = allMenus.FirstOrDefault(x => x.Code == input.PCode);
            var addDto     = ProducePCodes(input, parentMenu);
            var menu       = Mapper.Map <SysMenu>(addDto);

            menu.Id = IdGenerater.GetNextId();
            await _menuRepository.InsertAsync(menu);

            return(menu.Id);
        }
Пример #2
0
        private MenuCreationDto ProducePCodes(MenuCreationDto saveDto, MenuDto parentMenuDto)
        {
            if (saveDto.PCode.IsNullOrWhiteSpace() || saveDto.PCode.EqualsIgnoreCase("0"))
            {
                saveDto.PCode  = "0";
                saveDto.PCodes = "[0],";
                saveDto.Levels = 1;
                return(saveDto);
            }

            saveDto.Levels = parentMenuDto.Levels + 1;
            saveDto.PCodes = $"{parentMenuDto.PCodes}[{parentMenuDto.Code}]";

            return(saveDto);
        }
Пример #3
0
        /// <summary>
        /// Создание нового меню
        /// </summary>
        /// <param name="menuCreationDto">DTO-объект меню</param>
        /// <exception cref="DublicateMenuTypeException">
        /// Меню такого типа уже существует в БД
        /// </exception>
        public void CreateMenu(MenuCreationDto menuCreationDto)
        {
            if (menuCreationDto == null)
                throw new ArgumentNullException("menuCreationDto");

            Menu menu = new CreationDtoToMenuMapper().Map(menuCreationDto);

            if (_menuRepository.GetOneByType(menu.MenuType) != null)
            {
                throw new DublicateMenuTypeException(
                    String.Format("Меню с типом {0} уже существует!", menu.MenuType));
            }

            _menuRepository.Create(menu);
            _menuRepository.Save();
        }
Пример #4
0
 public async Task <ActionResult <long> > CreateAsync([FromBody] MenuCreationDto menuDto)
 {
     return(CreatedResult(await _menuService.CreateAsync(menuDto)));
 }