Example #1
0
        /// <summary>
        /// Handles the SaveChanges event of the EditSaveControl control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        void EditSaveControl_SaveChanges(object sender, SaveControl.SaveEventArgs e)
        {
            // Validate form
            if (!this.Page.IsValid)
            {
                e.RunScript = false;
                return;
            }

            ExpressionDto expression = (ExpressionDto)Session[_ExpressionDtoEditSessionKey];             //null;

            if (ExpressionId > 0 && expression == null)
            {
                expression = ExpressionManager.GetExpressionDto(ExpressionId);                 //Int32.Parse(Parameters["ExpressionId"].ToString()));
            }
            else if (ExpressionId == 0)
            {
                expression = new ExpressionDto();
            }

            IDictionary context = new ListDictionary();

            context.Add(_ExpressionDtoString, expression);

            ViewControl.SaveChanges(context);

            if (expression.HasChanges())
            {
                ExpressionManager.SaveExpression(expression);
            }

            // we don't need to store Dto in session any more
            Session.Remove(_ExpressionDtoEditSessionKey);
        }
Example #2
0
        /// <summary>
        /// Processes the delete command.
        /// </summary>
        /// <param name="items">The items.</param>
        void ProcessDeleteCommand(string[] items)
        {
            for (int i = 0; i < items.Length; i++)
            {
                string[] keys = EcfListView.GetPrimaryKeyIdStringItems(items[i]);
                if (keys != null)
                {
                    string     id             = keys[0];
                    List <int> expressionList = new List <int>();

                    SegmentDto dto = SegmentManager.GetSegmentDto(Int32.Parse(id));
                    if (dto.Segment.Count > 0)
                    {
                        SegmentDto.SegmentRow segmentRow = dto.Segment[0];
                        foreach (SegmentDto.SegmentConditionRow condition in segmentRow.GetSegmentConditionRows())
                        {
                            expressionList.Add(condition.ExpressionId);
                        }
                        dto.Segment[0].Delete();
                        SegmentManager.SaveSegment(dto);
                    }

                    // Delete corresponding expressions
                    foreach (int expressionId in expressionList)
                    {
                        ExpressionDto expressionDto = ExpressionManager.GetExpressionDto(expressionId);
                        if (expressionDto != null && expressionDto.Expression.Count > 0)
                        {
                            expressionDto.Expression[0].Delete();
                            ExpressionManager.SaveExpression(expressionDto);
                        }
                    }
                }
            }
        }
Example #3
0
    /// <summary>
    /// Saves the changes.
    /// </summary>
    /// <param name="context">The context.</param>
    public override void SaveChanges(IDictionary context)
    {
        base.SaveChanges(context);

        // Populate setting
        Settings settings = new Settings();

        settings.EntryXFilter   = EntryXFilter.SelectedEntryCode;
        settings.EntryYFilter   = EntryYFilter.SelectedEntryCode;
        settings.SourceQuantity = Decimal.Parse(SourceQuantity.Text);
        settings.TargetQuantity = Decimal.Parse(TargetQuantity.Text);
        settings.AmountOff      = Decimal.Parse(OfferAmount.Text);
        int offerType = Int32.Parse(OfferType.SelectedValue);

        settings.AmountType = offerType == 1 ? PromotionRewardAmountType.Percentage : PromotionRewardAmountType.Value;
        settings.RewardType = PromotionRewardType.EachAffectedEntry;

        // Create custom expression from template
        string expr = Replace(Config.Expression, settings);

        // save properties for promotion
        PromotionDto.PromotionRow promotion = PromotionDto.Promotion[0];
        promotion.OfferAmount = Decimal.Parse(OfferAmount.Text);
        promotion.OfferType   = Int32.Parse(OfferType.SelectedValue);
        promotion.Params      = SerializeSettings(settings);

        // Create or modify expression
        ExpressionDto expressionDto = new ExpressionDto();

        //PromotionDto.PromotionConditionRow row = null;

        ExpressionDto.ExpressionRow expressionRow = CreateExpressionRow(ref expressionDto);
        expressionRow.Category      = ExpressionCategory.CategoryKey.Promotion.ToString();
        expressionRow.ExpressionXml = expr;
        if (expressionRow.RowState == DataRowState.Detached)
        {
            expressionDto.Expression.Rows.Add(expressionRow);
        }

        // Save expression
        ExpressionManager.SaveExpression(expressionDto);

        // Assign expression id to our new condition
        PromotionDto.PromotionCondition[0].ExpressionId = expressionRow.ExpressionId;

        //if (row.RowState == DataRowState.Detached)
        //PromotionDto.PromotionCondition.Rows.Add(row);
    }
Example #4
0
    /// <summary>
    /// Saves the changes.
    /// </summary>
    /// <param name="context">The context.</param>
    public override void SaveChanges(IDictionary context)
    {
        base.SaveChanges(context);

        // Populate setting
        Settings settings = new Settings();

        settings.TargetExpression    = ApplyConditionFilter.NodeCollection[0].ChildNodes;
        settings.ConditionExpression = ConditionFilter.NodeCollection[0].ChildNodes;


        // save properties for promotion
        PromotionDto.PromotionRow promotion = PromotionDto.Promotion[0];
        promotion.Params = SerializeSettingsBinary(settings);

        //// Create custom expression from template
        //string expr = Replace(Config.Expression, settings);

        //// Create or modify expression
        ExpressionDto expressionDto = new ExpressionDto();

        ExpressionDto.ExpressionRow expressionRow = CreateExpressionRow(ref expressionDto);
        expressionRow.Category      = ExpressionCategory.CategoryKey.Promotion.ToString();
        expressionRow.ExpressionXml = string.Empty;
        if (expressionRow.RowState == DataRowState.Detached)
        {
            expressionDto.Expression.Rows.Add(expressionRow);
        }
        //Change DataSource from FilterNodeCollection  to ExpressionDto
        ConditionFilter.Provider.DataSource = expressionDto;
        ConditionFilter.Provider.SaveFilters("PromotionCondition", expressionRow.ExpressionId.ToString(),
                                             settings.ConditionExpression);

        //// Save expression
        ExpressionManager.SaveExpression(expressionDto);

        ApplyConditionFilter.DataSource = expressionDto;
        ApplyConditionFilter.Provider.SaveFilters("PromotionAction", expressionRow.ExpressionId.ToString(),
                                                  settings.TargetExpression);


        //// Save expression
        ExpressionManager.SaveExpression(expressionDto);

        //// Assign expression id to our new condition
        PromotionDto.PromotionCondition[0].ExpressionId = expressionRow.ExpressionId;
    }
Example #5
0
        /// <summary>
        /// Processes the delete command.
        /// </summary>
        /// <param name="items">The items.</param>
        void ProcessDeleteCommand(string[] items)
        {
            for (int i = 0; i < items.Length; i++)
            {
                string[] keys = EcfListView.GetPrimaryKeyIdStringItems(items[i]);
                if (keys != null)
                {
                    int id = Int32.Parse(keys[0]);

                    ExpressionDto dto = ExpressionManager.GetExpressionDto(id);
                    if (dto.Expression.Count > 0)
                    {
                        dto.Expression[0].Delete();
                        ExpressionManager.SaveExpression(dto);
                    }
                }
            }
        }
Example #6
0
        /// <summary>
        /// Processes the delete command.
        /// </summary>
        /// <param name="items">The items.</param>
        void ProcessDeleteCommand(string[] items)
        {
            for (int i = 0; i < items.Length; i++)
            {
                string[] keys = EcfListView.GetPrimaryKeyIdStringItems(items[i]);
                if (keys != null)
                {
                    string id = keys[0];

                    using (TransactionScope scope = new TransactionScope())
                    {
                        // delete selected sites
                        PromotionDto dto            = PromotionManager.GetPromotionDto(Int32.Parse(id));
                        List <int>   expressionList = new List <int>();
                        if (dto.Promotion.Count > 0)
                        {
                            PromotionDto.PromotionRow promotionRow = dto.Promotion[0];
                            foreach (PromotionDto.PromotionConditionRow condition in promotionRow.GetPromotionConditionRows())
                            {
                                expressionList.Add(condition.ExpressionId);
                            }
                            dto.Promotion[0].Delete();
                            PromotionManager.SavePromotion(dto);

                            // Delete corresponding expressions
                            foreach (int expressionId in expressionList)
                            {
                                ExpressionDto expressionDto = ExpressionManager.GetExpressionDto(expressionId);
                                if (expressionDto != null && expressionDto.Expression.Count > 0)
                                {
                                    expressionDto.Expression[0].Delete();
                                    ExpressionManager.SaveExpression(expressionDto);
                                }
                            }
                        }

                        scope.Complete();
                    }
                }
            }
        }
Example #7
0
    /// <summary>
    /// Saves the changes.
    /// </summary>
    /// <param name="context">The context.</param>
    public override void SaveChanges(IDictionary context)
    {
        base.SaveChanges(context);

        // Populate setting
        Settings settings = new Settings();

        settings.EntryXFilter = EntryXFilter.SelectedEntryCode;
        settings.EntryYFilter = EntryYFilter.SelectedEntryCode;
        // Create custom expression from template
        string expr = Replace(Config.Expression, settings);

        // save properties for promotion
        PromotionDto.PromotionRow promotion = PromotionDto.Promotion[0];
        promotion.OfferAmount = 100;
        promotion.OfferType   = 0; //undef not use
        promotion.Params      = SerializeSettings(settings);

        // Create or modify expression
        ExpressionDto expressionDto = new ExpressionDto();

        //PromotionDto.PromotionConditionRow row = null;

        ExpressionDto.ExpressionRow expressionRow = CreateExpressionRow(ref expressionDto);
        expressionRow.Category      = ExpressionCategory.CategoryKey.Promotion.ToString();
        expressionRow.ExpressionXml = expr;
        if (expressionRow.RowState == DataRowState.Detached)
        {
            expressionDto.Expression.Rows.Add(expressionRow);
        }

        // Save expression
        ExpressionManager.SaveExpression(expressionDto);

        // Assign expression id to our new condition
        PromotionDto.PromotionCondition[0].ExpressionId = expressionRow.ExpressionId;

        //if (row.RowState == DataRowState.Detached)
        //PromotionDto.PromotionCondition.Rows.Add(row);
    }
Example #8
0
        /// <summary>
        /// Handles the SaveChanges event of the EditSaveControl control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        void EditSaveControl_SaveChanges(object sender, SaveControl.SaveEventArgs e)
        {
            // Validate form
            if (!this.Page.IsValid)
            {
                e.RunScript = false;
                return;
            }

            SegmentDto    segment    = (SegmentDto)Session[_SegmentDtoEditSessionKey];
            ExpressionDto expression = (ExpressionDto)Session[_ExpressionDtoEditSessionKey];

            if (segment == null && SegmentId > 0)
            {
                segment = SegmentManager.GetSegmentDto(SegmentId);
            }
            else if (segment == null && SegmentId == 0)
            {
                segment = new SegmentDto();
            }


            if (expression == null && SegmentId > 0)
            {
                expression = ExpressionManager.GetExpressionBySegmentDto(SegmentId);
            }
            else if (expression == null && SegmentId == 0)
            {
                expression = new ExpressionDto();
            }

            /*
             * // if we add a new segment, remove all other segments from Dto that is passed to control that saves changes
             * if (SegmentId == 0 && segment != null && segment.Segment.Count > 0)
             * {
             *      SegmentDto.SegmentRow[] rows2del = (SegmentDto.SegmentRow[])segment.Segment.Select(String.Format("{0} <> {1}", _SegmentIdString, SegmentId));
             *      if (rows2del != null)
             *              foreach (SegmentDto.SegmentRow row in rows2del)
             *                      segment.Segment.RemoveSegmentRow(row);
             * }*/

            IDictionary context = new ListDictionary();

            context.Add(_SegmentDtoString, segment);
            context.Add(_ExpressionDtoString, expression);

            ViewControl.SaveChanges(context);

            // save expressionDto
            if (expression.HasChanges())
            {
                ExpressionManager.SaveExpression(expression);
            }

            // update segment conditions
            foreach (ExpressionDto.ExpressionRow tmpRow in expression.Expression.Rows)
            {
                // skip deleted rows
                if (tmpRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }

                // add SegmentConditionRow
                SegmentDto.SegmentConditionRow[] segmentConditionRows = (SegmentDto.SegmentConditionRow[])segment.SegmentCondition.Select(String.Format("ExpressionId={0}", tmpRow.ExpressionId));
                if (segmentConditionRows == null || segmentConditionRows.Length == 0)
                {
                    // add new expression
                    SegmentDto.SegmentConditionRow newSCRow = segment.SegmentCondition.NewSegmentConditionRow();
                    newSCRow.ExpressionId = tmpRow.ExpressionId;
                    newSCRow.SegmentId    = segment.Segment[0].SegmentId;

                    if (newSCRow.RowState == DataRowState.Detached)
                    {
                        segment.SegmentCondition.Rows.Add(newSCRow);
                    }
                }
            }

            // save segmentDto
            if (segment.HasChanges())
            {
                SegmentManager.SaveSegment(segment);
            }

            // we don't need to store Dto in session any more
            Session.Remove(_SegmentDtoEditSessionKey);
            Session.Remove(_ExpressionDtoEditSessionKey);
        }