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); }
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); }
/// <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(); }
public async Task <ActionResult <long> > CreateAsync([FromBody] MenuCreationDto menuDto) { return(CreatedResult(await _menuService.CreateAsync(menuDto))); }