/// <summary> /// Change subscription for Partners in selected Extract /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ChangeSubscription(System.Object sender, EventArgs e) { PSubscriptionTable SubscriptionTable = new PSubscriptionTable(); PSubscriptionRow SubscriptionRow = SubscriptionTable.NewRowTyped(); PPartnerTable PartnersWithoutSubs = new PPartnerTable(); int SubscriptionsChanged; String MessageText; List <String> FieldsToChange = new List <string>(); if (!WarnIfNotSingleSelection(Catalog.GetString("Add Subscription")) && (GetSelectedDetailRow() != null)) { TFrmUpdateExtractChangeSubscriptionDialog dialog = new TFrmUpdateExtractChangeSubscriptionDialog(this.FindForm()); dialog.SetExtractName(GetSelectedDetailRow().ExtractName); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (dialog.GetReturnedParameters(ref SubscriptionRow, ref FieldsToChange)) { SubscriptionTable.Rows.Add(SubscriptionRow); // perform update of extract data on server side TRemote.MPartner.Partner.WebConnectors.ChangeSubscription (GetSelectedDetailRow().ExtractId, ref SubscriptionTable, FieldsToChange, out PartnersWithoutSubs, out SubscriptionsChanged); MessageText = String.Format(Catalog.GetString( "Subscription {0} successfully changed for {1} out of {2} Partner(s) in Extract {3}."), SubscriptionRow.PublicationCode, SubscriptionsChanged, GetSelectedDetailRow().KeyCount, GetSelectedDetailRow().ExtractName); if (PartnersWithoutSubs.Rows.Count > 0) { MessageText += "\r\n\r\n" + String.Format(Catalog.GetString( "See the following Dialog for the {0} Partner(s) that are not subscribed for this Publication and therefore no change was made for them."), PartnersWithoutSubs.Rows.Count); } MessageBox.Show(MessageText, Catalog.GetString("Change Subscription"), MessageBoxButtons.OK, MessageBoxIcon.Information); if (PartnersWithoutSubs.Rows.Count > 0) { TFrmSimplePartnerListDialog partnerDialog = new TFrmSimplePartnerListDialog(this.FindForm()); partnerDialog.SetExplanation("These partners do not have a Subscription for " + SubscriptionRow.PublicationCode, "The Subscription was therefore not changed for the following Partners:"); partnerDialog.SetPartnerList(PartnersWithoutSubs); partnerDialog.ShowDialog(); } } } } }
/// <summary> /// Change subscription for Partners in selected Extract /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ChangeSubscription(System.Object sender, EventArgs e) { PSubscriptionTable SubscriptionTable = new PSubscriptionTable(); PSubscriptionRow SubscriptionRow = SubscriptionTable.NewRowTyped(); PPartnerTable PartnersWithoutSubs = new PPartnerTable(); int SubscriptionsChanged; String MessageText; List <String>FieldsToChange = new List <string>(); if (!WarnIfNotSingleSelection(Catalog.GetString("Add Subscription")) && (GetSelectedDetailRow() != null)) { TFrmUpdateExtractChangeSubscriptionDialog dialog = new TFrmUpdateExtractChangeSubscriptionDialog(this.FindForm()); dialog.SetExtractName(GetSelectedDetailRow().ExtractName); if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (dialog.GetReturnedParameters(ref SubscriptionRow, ref FieldsToChange)) { SubscriptionTable.Rows.Add(SubscriptionRow); // perform update of extract data on server side TRemote.MPartner.Partner.WebConnectors.ChangeSubscription (GetSelectedDetailRow().ExtractId, ref SubscriptionTable, FieldsToChange, out PartnersWithoutSubs, out SubscriptionsChanged); MessageText = String.Format(Catalog.GetString( "Subscription {0} successfully changed for {1} out of {2} Partner(s) in Extract {3}."), SubscriptionRow.PublicationCode, SubscriptionsChanged, GetSelectedDetailRow().KeyCount, GetSelectedDetailRow().ExtractName); if (PartnersWithoutSubs.Rows.Count > 0) { MessageText += "\r\n\r\n" + String.Format(Catalog.GetString( "See the following Dialog for the {0} Partner(s) that are not subscribed for this Publication and therefore no change was made for them."), PartnersWithoutSubs.Rows.Count); } MessageBox.Show(MessageText, Catalog.GetString("Change Subscription"), MessageBoxButtons.OK, MessageBoxIcon.Information); if (PartnersWithoutSubs.Rows.Count > 0) { TFrmSimplePartnerListDialog partnerDialog = new TFrmSimplePartnerListDialog(this.FindForm()); partnerDialog.SetExplanation("These partners do not have a Subscription for " + SubscriptionRow.PublicationCode, "The Subscription was therefore not changed for the following Partners:"); partnerDialog.SetPartnerList(PartnersWithoutSubs); partnerDialog.ShowDialog(); } } } } }
public static void AddSubscription(int AExtractId, ref PSubscriptionTable ATable, out PPartnerTable AExistingSubscriptionPartners, out int ASubscriptionsAdded) { PSubscriptionTable SubscriptionTable = new PSubscriptionTable(); PSubscriptionRow SubscriptionRowTemplate; PSubscriptionRow SubscriptionRow; MExtractTable ExtractTable; PPartnerTable PartnerTable; PPartnerRow PartnerRow; PPartnerTable ExistingSubscriptionPartners; int SubscriptionsAdded = 0; // only use first row in table (as rows can't be serialized as parameters) SubscriptionRowTemplate = (PSubscriptionRow)ATable.Rows[0]; ExistingSubscriptionPartners = new PPartnerTable(); TDBTransaction Transaction = null; bool SubmissionOK = false; DBAccess.GDBAccessObj.BeginAutoTransaction(IsolationLevel.Serializable, ref Transaction, ref SubmissionOK, delegate { ExtractTable = MExtractAccess.LoadViaMExtractMaster(AExtractId, Transaction); // query all rows of given extract foreach (MExtractRow ExtractRow in ExtractTable.Rows) { // for each extract row either add subscription or add to list of partners already having one if (PSubscriptionAccess.Exists(SubscriptionRowTemplate.PublicationCode, ExtractRow.PartnerKey, Transaction)) { PartnerRow = ExistingSubscriptionPartners.NewRowTyped(); PartnerTable = PPartnerAccess.LoadByPrimaryKey(ExtractRow.PartnerKey, Transaction); DataUtilities.CopyAllColumnValues(PartnerTable.Rows[0], PartnerRow); ExistingSubscriptionPartners.Rows.Add(PartnerRow); } else { SubscriptionRow = SubscriptionTable.NewRowTyped(); DataUtilities.CopyAllColumnValues(SubscriptionRowTemplate, SubscriptionRow); SubscriptionRow.PartnerKey = ExtractRow.PartnerKey; SubscriptionTable.Rows.Add(SubscriptionRow); SubscriptionsAdded++; } } // now submit changes to the database PSubscriptionAccess.SubmitChanges(SubscriptionTable, Transaction); SubmissionOK = true; }); AExistingSubscriptionPartners = ExistingSubscriptionPartners; ASubscriptionsAdded = SubscriptionsAdded; }
public static void AddSubscription(int AExtractId, ref PSubscriptionTable ATable, out PPartnerTable AExistingSubscriptionPartners, out int ASubscriptionsAdded) { PSubscriptionTable SubscriptionTable = new PSubscriptionTable(); PSubscriptionRow SubscriptionRowTemplate; PSubscriptionRow SubscriptionRow; MExtractTable ExtractTable; PPartnerTable PartnerTable; PPartnerRow PartnerRow; // only use first row in table (as rows can't be serialized as parameters) SubscriptionRowTemplate = (PSubscriptionRow)ATable.Rows[0]; AExistingSubscriptionPartners = new PPartnerTable(); ASubscriptionsAdded = 0; TDBTransaction Transaction = DBAccess.GDBAccessObj.BeginTransaction(IsolationLevel.Serializable); try { ExtractTable = MExtractAccess.LoadViaMExtractMaster(AExtractId, Transaction); // query all rows of given extract foreach (MExtractRow ExtractRow in ExtractTable.Rows) { // for each extract row either add subscription or add to list of partners already having one if (PSubscriptionAccess.Exists(SubscriptionRowTemplate.PublicationCode, ExtractRow.PartnerKey, Transaction)) { PartnerRow = AExistingSubscriptionPartners.NewRowTyped(); PartnerTable = PPartnerAccess.LoadByPrimaryKey(ExtractRow.PartnerKey, Transaction); DataUtilities.CopyAllColumnValues(PartnerTable.Rows[0], PartnerRow); AExistingSubscriptionPartners.Rows.Add(PartnerRow); } else { SubscriptionRow = SubscriptionTable.NewRowTyped(); DataUtilities.CopyAllColumnValues(SubscriptionRowTemplate, SubscriptionRow); SubscriptionRow.PartnerKey = ExtractRow.PartnerKey; SubscriptionTable.Rows.Add(SubscriptionRow); ASubscriptionsAdded++; } } // now submit changes to the database PSubscriptionAccess.SubmitChanges(SubscriptionTable, Transaction); DBAccess.GDBAccessObj.CommitTransaction(); } catch (Exception Exc) { TLogging.Log( "An Exception occured during the adding of subscriptions for all Partners in an Extract:" + Environment.NewLine + Exc.ToString()); DBAccess.GDBAccessObj.RollbackTransaction(); throw; } }