/// <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); }
/// <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); } } } } }
/// <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); }
/// <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; }
/// <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); } } } }
/// <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(); } } } }
/// <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); }
/// <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); }