private void CreateActions(MaterialMenuConfiguration configuration)
        {
            if (_choices == null || _choices.Count <= 0)
            {
                throw new ArgumentException("Parameter actions should not be null or empty");
            }

            var actionModels = new List <ActionModel>();

            _choices.ForEach(a =>
            {
                var actionModel = new MenuActionModel {
                    Text = a.Text, Image = a.Image, Index = a.Index
                };
                actionModel.TextColor       = configuration.TextColor;
                actionModel.FontFamily      = configuration.TextFontFamily;
                actionModel.SelectedCommand = new Command <int>(async(position) =>
                {
                    if (this.InputTaskCompletionSource?.Task.Status == TaskStatus.WaitingForActivation)
                    {
                        actionModel.IsSelected = true;
                        await this.DismissAsync();
                        this.InputTaskCompletionSource?.SetResult(position);
                    }
                });
                actionModel.SizeChangeCommand = new Command <Dictionary <string, object> >(this.LabelSizeChanged);

                actionModels.Add(actionModel);
                actionModel.Index = actionModels.IndexOf(actionModel);
            });

            this.SetList(actionModels);
        }
        public async Task <JsonResult> Action(MenuActionModel model)
        {
            JsonResult result = new JsonResult
            {
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };
            var  message   = "";
            bool isSuccess = false;

            try
            {
                if (ModelState.IsValid)
                {
                    if (model.ID > 0)
                    {
                        _menu            = _IMenuServices.GetDataById(model.ID);
                        _menu.MenuName   = model.MenuName;
                        _menu.Controller = model.Controller;
                        _menu.Action     = model.Action;
                        _menu.IsParent   = model.IsParent;
                        _menu.IsActive   = model.IsActive;
                        _menu.ParentId   = model.ParentId;
                        _menu.Icon       = model.Icon;
                        _menu.UpdateDate = DateTime.Now;
                        isSuccess        = _IMenuServices.UpdateData(_menu);
                    }
                    else
                    {
                        _menu.MenuName    = model.MenuName;
                        _menu.Controller  = model.Controller;
                        _menu.Action      = model.Action;
                        _menu.IsParent    = model.IsParent;
                        _menu.IsActive    = model.IsActive;
                        _menu.ParentId    = model.ParentId;
                        _menu.Icon        = model.Icon;
                        _menu.EntryDate   = DateTime.Now;
                        _menu.ProjectName = "Library Management System";
                        isSuccess         = await Task.Run(() => _IMenuServices.SaveData(_menu));
                    }
                }
                else
                {
                    message = string.Join("; ", ModelState.Values
                                          .SelectMany(x => x.Errors)
                                          .Select(x => x.ErrorMessage));
                }
            }
            catch (Exception ex)
            {
                message = ex.Message;
            }
            if (isSuccess)
            {
                message     = "Data Save Successfully!!";
                result.Data = new { Success = true, Message = message };
            }
            else
            {
                result.Data = new { Success = false, Message = message };
            }
            return(result);
        }