public async Task <CommandResult> ExecuteAsync(int menuId, bool hasDeleteSubMenues = false) { try { if (menuId == default) { return(CommandResult.Failed(new CommandResultError() { Code = (int)HttpStatusCode.BadRequest, Description = MessageError.SomeDataEmptyOrInvalid })); } EhisMenu menu = await _menuRepository.Table .Where(n => n.Id == menuId) .Include(n => n.SubMenus) .SingleOrDefaultAsync(); if (menu == null) { return(CommandResult.Failed(new CommandResultError() { Code = (int)HttpStatusCode.NotFound, Description = MessageError.NotFound })); } if (hasDeleteSubMenues == true) { List <EhisMenu> deleteData = RecursiveQuery(menu); await _menuRepository.DeleteAsync(deleteData); } else { foreach (var item in menu.SubMenus) { item.ParentId = menu.ParentId; } await _menuRepository.UpdateAsync(menu.SubMenus); await _menuRepository.DeleteAsync(menu); } return(CommandResult.Success); } catch (Exception) { return(CommandResult.Failed(new CommandResultError() { Code = (int)HttpStatusCode.InternalServerError, Description = MessageError.InternalServerError })); } }
private CommandResult CheckValidData(EhisMenu model) { if (model == default || model.DisplayName == default || model.ParentId <= 0 || (model.Id > 0 && model.Id == model.ParentId)) { return(CommandResult.Failed(new CommandResultError() { Code = (int)HttpStatusCode.BadRequest, Description = MessageError.SomeDataEmptyOrInvalid })); } return(null); }
public async Task <CommandResult> ExecuteAsync(EhisMenu model) { try { CommandResult isNotValidData = CheckValidData(model); if (isNotValidData != null) { return(isNotValidData); } EhisMenu menu = await _menuRepository.GetByIdAsync(model.Id); if (model.Id != 0 && menu == null) { return(CommandResult.Failed(new CommandResultError() { Code = (int)HttpStatusCode.NotFound, Description = MessageError.NotFound })); } menu = menu ?? new EhisMenu(); menu.DisplayName = model.DisplayName; menu.ParentId = model.ParentId; if (menu.Id == 0) { await _menuRepository.InsertAsync(menu); } else { await _menuRepository.UpdateAsync(menu); } return(CommandResult.SuccessWithData(menu)); } catch (Exception) { return(CommandResult.Failed(new CommandResultError() { Code = (int)HttpStatusCode.InternalServerError, Description = MessageError.InternalServerError })); } }
private List <EhisMenu> RecursiveQuery(EhisMenu parent) { var temp = new List <EhisMenu>(); if (parent.SubMenus != null) { var children = _menuRepository.Table .Where(x => x.ParentId == parent.Id) .Include(x => x.SubMenus); foreach (var child in children) { temp.AddRange(RecursiveQuery(child)); } } temp.Add(parent); return(temp); }
public async Task <ActionResult> SaveMenuesAsync(EhisMenu model) { var result = await _saveMenuCommand.ExecuteAsync(model); return(StatusCode(result.GetStatusCode(), result.GetData())); }