Exemplo n.º 1
0
        /// <summary>
        /// Processes the drag events.
        /// </summary>
        private void ProcessDragEvents()
        {
            string argument = Request["__EVENTARGUMENT"].ToStringSafe();
            var    segments = argument.SplitDelimitedValues();

            //
            // Check for the event to add a new action.
            //
            if (segments.Length == 3 && segments[0] == "add-action")
            {
                var actionComponent = SmsActionContainer.GetComponent(segments[1]);
                var order           = segments[2].AsInteger();

                var rockContext      = new RockContext();
                var smsActionService = new SmsActionService(rockContext);

                var action = new SmsAction
                {
                    SmsPipelineId = GetSmsPipelineId().Value,
                    Name          = actionComponent.Title,
                    IsActive      = true,
                    Order         = order,
                    SmsActionComponentEntityTypeId = actionComponent.TypeId
                };

                smsActionService.Queryable()
                .Where(a => a.Order >= order)
                .ToList()
                .ForEach(a => a.Order += 1);

                smsActionService.Add(action);

                rockContext.SaveChanges();

                BindActions();

                SmsActionCache.Clear();
            }

            //
            // Check for the event to drag-reorder actions.
            //
            else if (segments.Length == 3 && segments[0] == "reorder-action")
            {
                var rockContext      = new RockContext();
                var smsActionService = new SmsActionService(rockContext);

                var actions = smsActionService.Queryable()
                              .OrderBy(a => a.Order)
                              .ThenBy(a => a.Id)
                              .ToList();

                smsActionService.Reorder(actions, segments[1].AsInteger(), segments[2].AsInteger());
                rockContext.SaveChanges();

                BindActions();

                SmsActionCache.Clear();
            }
        }
        /// <summary>
        /// Processes the drag events.
        /// </summary>
        private void ProcessDragEvents()
        {
            string argument      = Request["__EVENTARGUMENT"].ToStringSafe();
            var    segments      = argument.SplitDelimitedValues();
            var    smsPipelineId = GetSmsPipelineId();

            if (smsPipelineId == null || segments.Length != 3)
            {
                return;
            }

            using (var rockContext = new RockContext())
            {
                var smsActionService = new SmsActionService(rockContext);

                var actions = smsActionService
                              .Queryable()
                              .Where(a => a.SmsPipelineId == smsPipelineId)
                              .OrderBy(a => a.Order)
                              .ThenBy(a => a.Id)
                              .ToList();

                // Reset order actions to eliminate gaps.
                for (var i = 0; i < actions.Count; i++)
                {
                    actions[i].Order = i;
                }

                // Check for the event to add a new action.
                if (segments[0] == "add-action")
                {
                    var actionComponent = SmsActionContainer.GetComponent(segments[1]);
                    var order           = segments[2].AsInteger();

                    var action = new SmsAction
                    {
                        SmsPipelineId = smsPipelineId.Value,
                        Name          = actionComponent.Title,
                        IsActive      = true,
                        Order         = order,
                        SmsActionComponentEntityTypeId = actionComponent.TypeId
                    };

                    actions
                    .Where(a => a.Order >= order)
                    .ToList()
                    .ForEach(a => a.Order += 1);

                    smsActionService.Add(action);
                }
                else if (segments[0] == "reorder-action")
                {
                    // Check for the event to drag-reorder actions.
                    smsActionService.Reorder(actions, segments[1].AsInteger(), segments[2].AsInteger());
                }

                rockContext.SaveChanges();
                BindActions();
                SmsActionCache.Clear();
            }
        }