Example #1
0
        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
                }));
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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
                }));
            }
        }
Example #4
0
        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()));
        }