/// <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();
                        }
                    }
                }
            }
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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;
            }
        }