Пример #1
0
        public static void AddContactAttributeToContacts(int contactId,
            List <Int64>APartnerKeys,
            List <int>attributeCode,
            List <int>attributeDetailCode)
        {
            TDBTransaction Transaction = null;
            bool SubmissionOK = false;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable,
                ref Transaction,
                ref SubmissionOK,
                delegate
                {
                    PPartnerContactAttributeTable attributes = new PPartnerContactAttributeTable();

                    for (int i = 0; i < APartnerKeys.Count; i++)
                    {
                        PPartnerContactAttributeRow row = attributes.NewRowTyped();
                        row.ContactId = contactId;
                    }

                    PPartnerContactAttributeAccess.SubmitChanges(attributes, Transaction);

                    SubmissionOK = true;
                });
        }
Пример #2
0
        /// <summary>
        /// Add Contact Log record for Partners in selected Extract
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void AddContactLog(object sender, EventArgs e)
        {
            PContactLogTable ContactLogTable = new PContactLogTable();
            PContactLogRow   ContactLogRow   = ContactLogTable.NewRowTyped();
            PPartnerContactAttributeTable PartnerContactAttributeTable = new PPartnerContactAttributeTable();

            string MessageText;

            if (!WarnIfNotSingleSelection(Catalog.GetString("Add Contact Log")) &&
                (GetSelectedDetailRow() != null))
            {
                TFrmUpdateExtractAddContactLogDialog dialog = new TFrmUpdateExtractAddContactLogDialog(this.FindForm());
                dialog.SetExtractName(GetSelectedDetailRow().ExtractName);

                if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    dialog.GetReturnedParameters(ref ContactLogRow, ref PartnerContactAttributeTable);
                    ContactLogTable.Rows.Add(ContactLogRow);
                    // perform update of extract data on server side
                    TRemote.MPartner.Partner.WebConnectors.AddContactLog(
                        GetSelectedDetailRow().ExtractId, ContactLogTable, PartnerContactAttributeTable);

                    MessageText =
                        string.Format(Catalog.GetString(
                                          "Contact Log {0} - {1} successfully added for {2} Partner(s) in Extract {3}."),
                                      ContactLogRow.ContactCode, ContactLogRow.ContactDate, GetSelectedDetailRow().KeyCount, GetSelectedDetailRow().ExtractName);

                    MessageBox.Show(MessageText,
                                    Catalog.GetString("Add Contact Log"),
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                }
            }
        }
Пример #3
0
        public static void AddContactAttributeToContacts(int contactId,
                                                         List <Int64> APartnerKeys,
                                                         List <int> attributeCode,
                                                         List <int> attributeDetailCode)
        {
            TDBTransaction Transaction  = new TDBTransaction();
            bool           SubmissionOK = false;

            DBAccess.WriteTransaction(
                ref Transaction,
                ref SubmissionOK,
                delegate
            {
                PPartnerContactAttributeTable attributes = new PPartnerContactAttributeTable();

                for (int i = 0; i < APartnerKeys.Count; i++)
                {
                    PPartnerContactAttributeRow row = attributes.NewRowTyped();
                    row.ContactId = contactId;
                }

                PPartnerContactAttributeAccess.SubmitChanges(attributes, Transaction);

                SubmissionOK = true;
            });
        }
Пример #4
0
        /// <summary>
        /// Open a dialog to select Contact Attributes
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void SelectAttributes(object sender, EventArgs e)
        {
            TFrmContactAttributesDialog ContactAttributesDialog = new TFrmContactAttributesDialog(FPetraUtilsObject.GetForm());

            ContactAttributesDialog.ContactID = FContactDR.ContactLogId;
            ContactAttributesDialog.SelectedContactAttributeTable = FMainDS.PPartnerContactAttribute;

            if (ContactAttributesDialog.ShowDialog() == DialogResult.OK)
            {
                PPartnerContactAttributeTable Changes = ContactAttributesDialog.SelectedContactAttributeTable.GetChangesTyped();

                // if changes were made or a previously added row (unsaved) was deleted
                if ((Changes != null) || ContactAttributesDialog.AddedAttributeDeleted)
                {
                    FMainDS.PPartnerContactAttribute.Clear();
                    FMainDS.PPartnerContactAttribute.Merge(ContactAttributesDialog.SelectedContactAttributeTable);

                    FGridTableDV = ContactAttributesLogic.SetupContactAttributesGrid(ref grdSelectedAttributes,
                                                                                     FMainDS.PPartnerContactAttribute,
                                                                                     true,
                                                                                     FContactDR.ContactLogId);

                    // only enable save if there are actual changes from the original datatable
                    if (Changes != null)
                    {
                        FPetraUtilsObject.SetChangedFlag();
                    }
                }
            }
        }
        /// <summary>
        /// Called by the instantiator of this Dialog to retrieve the values of Fields
        /// on the screen.
        /// </summary>
        /// <param name="ARow"></param>
        /// <param name="ATable"></param>
        /// <returns>Boolean</returns>
        public bool GetReturnedParameters(ref PContactLogRow ARow, ref PPartnerContactAttributeTable ATable)
        {
            bool ReturnValue = true;

            DataUtilities.CopyAllColumnValues(FMainDS.PContactLog.Rows[0], ARow);
            ATable.Merge(FMainDS.PPartnerContactAttribute);

            return(ReturnValue);
        }
        private void FillTempTable()
        {
            DataView UnselectedContactAttributeTableDV;
            DataRow  TheNewRow;
            Int16    RowCounter;

            FGridTable.Rows.Clear();
            FGridTable.AcceptChanges();

            UnselectedContactAttributeTableDV = FContactAttributeDetailTableDV;

            // first add Contact Attributes which are already selected for partner
            for (RowCounter = 0; RowCounter < FSelectedContactAttributeTableDV.Count; RowCounter++)
            {
                TheNewRow                  = FGridTable.NewRow();
                TheNewRow["Checked"]       = (System.Object)true;
                TheNewRow["AttributeCode"] =
                    FSelectedContactAttributeTableDV[RowCounter][PPartnerContactAttributeTable.GetContactAttributeCodeDBName()];
                TheNewRow["AttributeDescription"] = ContactAttributesLogic.GetContactAttributeDesciption(
                    FSelectedContactAttributeTableDV[RowCounter][PPartnerContactAttributeTable.GetContactAttributeCodeDBName()].ToString(),
                    FContactAttributeTableDV);
                TheNewRow["AttributeDetailCode"] =
                    FSelectedContactAttributeTableDV[RowCounter][PPartnerContactAttributeTable.GetContactAttrDetailCodeDBName()];
                TheNewRow["AttributeDetailDescription"] = ContactAttributesLogic.GetContactAttributeDetailDesciption(
                    FSelectedContactAttributeTableDV[RowCounter][PPartnerContactAttributeTable.GetContactAttributeCodeDBName()].ToString(),
                    FSelectedContactAttributeTableDV[RowCounter][PPartnerContactAttributeTable.GetContactAttrDetailCodeDBName()].ToString(),
                    FContactAttributeDetailTableDV);
                FGridTable.Rows.Add(TheNewRow);
            }

            // second add the rest of the Special Types in db
            for (RowCounter = 0; RowCounter < UnselectedContactAttributeTableDV.Count; RowCounter++)
            {
                // only add row if it has not already been added as a checked row
                if (FSelectedContactAttributeTableDV.Find(new object[]
                                                          { UnselectedContactAttributeTableDV[RowCounter][PContactAttributeDetailTable.GetContactAttributeCodeDBName()],
                                                            UnselectedContactAttributeTableDV[RowCounter][PContactAttributeDetailTable.GetContactAttrDetailCodeDBName()] }) == -1)
                {
                    TheNewRow                  = FGridTable.NewRow();
                    TheNewRow["Checked"]       = (System.Object)false;
                    TheNewRow["AttributeCode"] =
                        UnselectedContactAttributeTableDV[RowCounter][PContactAttributeDetailTable.GetContactAttributeCodeDBName()];
                    TheNewRow["AttributeDescription"] = ContactAttributesLogic.GetContactAttributeDesciption(
                        UnselectedContactAttributeTableDV[RowCounter][PContactAttributeDetailTable.GetContactAttributeCodeDBName()].ToString(),
                        FContactAttributeTableDV);
                    TheNewRow["AttributeDetailCode"] =
                        UnselectedContactAttributeTableDV[RowCounter][PContactAttributeDetailTable.GetContactAttrDetailCodeDBName()];
                    TheNewRow["AttributeDetailDescription"] = ContactAttributesLogic.GetContactAttributeDetailDesciption(
                        UnselectedContactAttributeTableDV[RowCounter][PContactAttributeDetailTable.GetContactAttributeCodeDBName()].ToString(),
                        UnselectedContactAttributeTableDV[RowCounter][PContactAttributeDetailTable.GetContactAttrDetailCodeDBName()].ToString(),
                        FContactAttributeDetailTableDV);
                    FGridTable.Rows.Add(TheNewRow);
                }
            }
        }
Пример #7
0
        public static void DeleteContacts(
            DataTable AContactLogs)
        {
            TDBTransaction Transaction  = new TDBTransaction();
            bool           SubmissionOK = false;

            DBAccess.WriteTransaction(
                ref Transaction,
                ref SubmissionOK,
                delegate
            {
                Boolean LastPartnerForThisContactLog = true;

                foreach (DataRow contactLogRow in AContactLogs.Rows)
                {
                    Int64 ContactLogId = Convert.ToInt64(contactLogRow["p_contact_log_id_i"]);
                    Int64 PartnerKey   = Convert.ToInt64(contactLogRow["p_partner_key_n"]);

                    LastPartnerForThisContactLog = true;

                    if (IsContactLogAssociatedWithMoreThanOnePartner(ContactLogId, Transaction))
                    {
                        LastPartnerForThisContactLog = false;
                    }

                    PPartnerContactTable contactLogs = PPartnerContactAccess.LoadByPrimaryKey(
                        PartnerKey, ContactLogId, Transaction);

                    contactLogs[0].Delete();

                    PPartnerContactAccess.SubmitChanges(contactLogs, Transaction);

                    if (LastPartnerForThisContactLog)
                    {
                        // now we also need to delete the contact attributes (linked with this contact log)
                        PPartnerContactAttributeRow template = new PPartnerContactAttributeTable().NewRowTyped(false);
                        template.ContactId = ContactLogId;

                        if (PPartnerContactAttributeAccess.CountUsingTemplate(template, null, Transaction) > 0)
                        {
                            PPartnerContactAttributeAccess.DeleteUsingTemplate(template, null, Transaction);
                        }

                        // and the contact log itself needs to be deleted (if no other partner refers to it)
                        PContactLogAccess.DeleteByPrimaryKey(ContactLogId, Transaction);
                    }

                    SubmissionOK = true;
                }
            });
        }
Пример #8
0
        private bool DeleteRowManual(PContactLogRow ARowToDelete, ref String ACompletionMessage)
        {
            foreach (DataRowView ContactLogRow in grdDetails.SelectedDataRows)
            {
                DataView PartnerContactLogs = new DataView(FMainDS.PPartnerContact);
                PartnerContactLogs.RowFilter = String.Format("{0} = {1} AND {2} = {3}",
                                                             PPartnerContactTable.GetPartnerKeyDBName(),
                                                             FMainDS.PPartner[0].PartnerKey,
                                                             PPartnerContactTable.GetContactLogIdDBName(),
                                                             ContactLogRow.Row[PContactLogTable.ColumnContactLogIdId]);

                // Delete the PartnerContact records
                foreach (DataRowView row in PartnerContactLogs)
                {
                    row.Delete();
                }

                // Actually delete the ContactLog if it's the last
                if (!TRemote.MPartner.Partner.WebConnectors.IsContactLogAssociatedWithMoreThanOnePartner((long)ContactLogRow.Row[PContactLogTable.
                                                                                                                                 ColumnContactLogIdId
                                                                                                         ]))
                {
                    // make sure to delete any contact attributes existing for this contact
                    DataView PartnerContactAttribute = new DataView(FMainDS.PPartnerContactAttribute);
                    PartnerContactAttribute.RowFilter = String.Format("{0} = {1}",
                                                                      PPartnerContactAttributeTable.GetContactIdDBName(),
                                                                      ContactLogRow.Row[PContactLogTable.ColumnContactLogIdId]);

                    // Delete the Contact Attribute records
                    foreach (DataRowView attributeRow in PartnerContactAttribute)
                    {
                        attributeRow.Delete();
                    }

                    ContactLogRow.Row.Delete();
                }
            }

            grdDetails.Refresh();

            return(true);
        }
Пример #9
0
        public static void AddContactLog(int AExtractId,
                                         PContactLogTable AContactLogTable,
                                         PPartnerContactAttributeTable APartnerContactAttributeTable)
        {
            TDBTransaction WriteTransaction = null;
            bool           SubmissionOK     = false;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable,
                                                                  TEnforceIsolationLevel.eilMinimum, ref WriteTransaction, ref SubmissionOK,
                                                                  delegate
            {
                var extractTable = MExtractAccess.LoadViaMExtractMaster(AExtractId, WriteTransaction).AsEnumerable();
                var partnerKeys  = extractTable.Select(e => e.ItemArray[MExtractTable.ColumnPartnerKeyId]);

                long ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction);

                AContactLogTable.Rows[0][PContactLogTable.ColumnContactLogIdId] = ContactLogId;

                PPartnerContactTable partnerContacts = new PPartnerContactTable();
                partnerKeys.ToList().ForEach(partnerKey =>
                {
                    PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                    partnerContact.ContactLogId       = ContactLogId;
                    partnerContact.PartnerKey         = (long)partnerKey;
                    partnerContacts.Rows.Add(partnerContact);
                });

                foreach (PPartnerContactAttributeRow Row in APartnerContactAttributeTable.Rows)
                {
                    Row.ContactId = ContactLogId;
                }

                PContactLogAccess.SubmitChanges(AContactLogTable, WriteTransaction);
                PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction);
                PPartnerContactAttributeAccess.SubmitChanges(APartnerContactAttributeTable, WriteTransaction);

                SubmissionOK = true;
            });
        }
Пример #10
0
        public static void AddContactAttributeToContacts(int contactId,
                                                         List <Int64> APartnerKeys,
                                                         List <int> attributeCode,
                                                         List <int> attributeDetailCode)
        {
            Boolean NewTransaction;

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable,
                                                                                                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                PPartnerContactAttributeTable attributes = new PPartnerContactAttributeTable();

                for (int i = 0; i < APartnerKeys.Count; i++)
                {
                    PPartnerContactAttributeRow row = attributes.NewRowTyped();
                    row.ContactId = contactId;
                }

                PPartnerContactAttributeAccess.SubmitChanges(attributes, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception Exc)
            {
                TLogging.Log("An Exception occured while associating a Contact with a ContactAttribute:" + Environment.NewLine + Exc.ToString());

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.RollbackTransaction();
                }

                throw;
            }
        }
Пример #11
0
        public static void AddContactAttributeToContacts(int contactId,
            List <Int64>APartnerKeys,
            List <int>attributeCode,
            List <int>attributeDetailCode)
        {
            Boolean NewTransaction;

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable,
                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                PPartnerContactAttributeTable attributes = new PPartnerContactAttributeTable();

                for (int i = 0; i < APartnerKeys.Count; i++)
                {
                    PPartnerContactAttributeRow row = attributes.NewRowTyped();
                    row.ContactId = contactId;
                }

                PPartnerContactAttributeAccess.SubmitChanges(attributes, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception Exc)
            {
                TLogging.Log("An Exception occured while associating a Contact with a ContactAttribute:" + Environment.NewLine + Exc.ToString());

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.RollbackTransaction();
                }

                throw;
            }
        }
Пример #12
0
        /// <summary>
        /// Open a dialog to select Contact Attributes
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void SelectAttributes(object sender, EventArgs e)
        {
            // open the contact attributes dialog
            TFrmContactAttributesDialog ContactAttributesDialog = new TFrmContactAttributesDialog(FPetraUtilsObject.GetForm());

            ContactAttributesDialog.ContactID = -1;
            ContactAttributesDialog.SelectedContactAttributeTable = FAttributeTable;

            if (ContactAttributesDialog.ShowDialog() == DialogResult.OK)
            {
                PPartnerContactAttributeTable Changes = ContactAttributesDialog.SelectedContactAttributeTable.GetChangesTyped();

                // if changes were made
                if (Changes != null)
                {
                    FAttributeTable = ContactAttributesDialog.SelectedContactAttributeTable;

                    // we do not need the deleted rows
                    FAttributeTable.AcceptChanges();

                    ContactAttributesLogic.SetupContactAttributesGrid(ref grdSelectedAttributes, FAttributeTable, false);
                }
            }
        }
Пример #13
0
        /// <summary>
        /// Display data in control based on data from ARow
        /// </summary>
        /// <param name="ARow"></param>
        public void ShowDetails(PContactLogRow ARow)
        {
            FInitializationRunning = true;

            FContactDR = ARow;

            ShowData(ARow);

            // if this is the first row to be showing then we need to set up the grid
            if ((FGridTableDV == null) && (FMainDS.PPartnerContactAttribute != null) && (FMainDS.PPartnerContactAttribute.Count > 0))
            {
                ContactAttributesLogic.SetupContactAttributesGrid(ref grdSelectedAttributes,
                                                                  FMainDS.PPartnerContactAttribute,
                                                                  true,
                                                                  FContactDR.ContactLogId);
            }

            if (FGridTableDV != null)
            {
                FGridTableDV.RowFilter = PPartnerContactAttributeTable.GetContactIdDBName() + " = " + ARow.ContactLogId;
            }

            FInitializationRunning = false;
        }
        /// <summary>
        /// Open a dialog to select Contact Attributes
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void SelectAttributes(object sender, EventArgs e)
        {
            // open the contact attributes dialog
            TFrmContactAttributesDialog ContactAttributesDialog = new TFrmContactAttributesDialog(FPetraUtilsObject.GetForm());

            ContactAttributesDialog.ContactID = -1;
            ContactAttributesDialog.SelectedContactAttributeTable = FAttributeTable;

            if (ContactAttributesDialog.ShowDialog() == DialogResult.OK)
            {
                PPartnerContactAttributeTable Changes = ContactAttributesDialog.SelectedContactAttributeTable.GetChangesTyped();

                // if changes were made
                if (Changes != null)
                {
                    FAttributeTable = ContactAttributesDialog.SelectedContactAttributeTable;

                    // we do not need the deleted rows
                    FAttributeTable.AcceptChanges();

                    ContactAttributesLogic.SetupContactAttributesGrid(ref grdSelectedAttributes, FAttributeTable, false);
                }
            }
        }
Пример #15
0
        public static DataTable FindContacts(string AContactor,
            DateTime? AContactDate,
            string ACommentContains,
            string AMethodOfContact,
            string AModuleID,
            string AMailingCode,
            PPartnerContactAttributeTable AContactAttributes)
        {
            Boolean NewTransaction;
            DataTable Contacts = new DataTable();

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                string Query = "SELECT p_contact_log.*, p_partner_contact.p_partner_key_n, p_partner.p_partner_short_name_c" +

                               " FROM p_contact_log, p_partner_contact, p_partner" +

                               " WHERE" +
                               " p_partner_contact.p_contact_log_id_i = p_contact_log.p_contact_log_id_i" +
                               " AND p_partner.p_partner_key_n = p_partner_contact.p_partner_key_n";

                if (AContactor.Length > 0)
                {
                    Query += " AND p_contact_log.p_contactor_c = '" + AContactor + "'";
                }

                if (AContactDate.HasValue)
                {
                    Query += " AND p_contact_log.s_contact_date_d = '" + AContactDate + "'";
                }

                if (AMethodOfContact.Length > 0)
                {
                    Query += " AND p_contact_log.p_contact_code_c = '" + AMethodOfContact + "'";
                }

                if (AModuleID.Length > 0)
                {
                    Query += " AND p_contact_log.s_module_id_c = '" + AModuleID + "'";
                }

                if (AMailingCode.Length > 0)
                {
                    Query += " AND p_contact_log.p_mailing_code_c = '" + AMailingCode + "'";
                }

                if (ACommentContains.Length > 0)
                {
                    Query += " AND p_contact_log.p_contact_comment_c LIKE '%" + ACommentContains + "%'";
                }

                if ((AContactAttributes != null) && (AContactAttributes.Rows.Count > 0))
                {
                    Query += " AND EXISTS (SELECT * " +
                             " FROM p_partner_contact_attribute" +
                             " WHERE" +
                             " p_partner_contact_attribute.p_contact_id_i = p_contact_log.p_contact_log_id_i" +
                             " AND (";

                    foreach (PPartnerContactAttributeRow Row in AContactAttributes.Rows)
                    {
                        Query += " (p_partner_contact_attribute.p_contact_attribute_code_c = '" + Row.ContactAttributeCode + "'" +
                                 " AND p_partner_contact_attribute.p_contact_attr_detail_code_c = '" + Row.ContactAttrDetailCode + "') OR";
                    }

                    // remove the final " OR"
                    Query = Query.Substring(0, Query.Length - 3) + "))";
                }

                DBAccess.GDBAccessObj.SelectDT(Contacts, Query, WriteTransaction);

                Contacts.PrimaryKey = new DataColumn[] {
                    Contacts.Columns["p_partner_key_n"], Contacts.Columns["p_contact_log_id_i"]
                };
            }
            catch (Exception e)
            {
                TLogging.Log(e.Message);
                TLogging.Log(e.StackTrace);
            }

            if (NewTransaction)
            {
                DBAccess.GDBAccessObj.RollbackTransaction();
            }

            return Contacts;
        }
Пример #16
0
        public static void AddContactLog(int AExtractId,
            PContactLogTable AContactLogTable,
            PPartnerContactAttributeTable APartnerContactAttributeTable)
        {
            TDBTransaction WriteTransaction = null;
            bool SubmissionOK = false;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable,
                TEnforceIsolationLevel.eilMinimum, ref WriteTransaction, ref SubmissionOK,
                delegate
                {
                    var extractTable = MExtractAccess.LoadViaMExtractMaster(AExtractId, WriteTransaction).AsEnumerable();
                    var partnerKeys = extractTable.Select(e => e.ItemArray[MExtractTable.ColumnPartnerKeyId]);

                    long ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction);

                    AContactLogTable.Rows[0][PContactLogTable.ColumnContactLogIdId] = ContactLogId;

                    PPartnerContactTable partnerContacts = new PPartnerContactTable();
                    partnerKeys.ToList().ForEach(partnerKey =>
                        {
                            PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                            partnerContact.ContactLogId = ContactLogId;
                            partnerContact.PartnerKey = (long)partnerKey;
                            partnerContacts.Rows.Add(partnerContact);
                        });

                    foreach (PPartnerContactAttributeRow Row in APartnerContactAttributeTable.Rows)
                    {
                        Row.ContactId = ContactLogId;
                    }

                    PContactLogAccess.SubmitChanges(AContactLogTable, WriteTransaction);
                    PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction);
                    PPartnerContactAttributeAccess.SubmitChanges(APartnerContactAttributeTable, WriteTransaction);

                    SubmissionOK = true;
                });
        }
Пример #17
0
        /// <summary>
        /// Setups the contact attributes grid (used on the following screens: Contact Log tab, Contacts with Partners and Extract by Contact Log.
        /// </summary>
        /// <param name="AGrid">Grid to be set up</param>
        /// <param name="AAttributes">Attributes to be included in the grid</param>
        /// <param name="AIncludeDescription">Include columns that display the attribute descriptions</param>
        /// <param name="AContactLogIDFilter">Filter grid to only show rows for given contact log if</param>
        public static DataView SetupContactAttributesGrid(ref TSgrdDataGridPaged AGrid,
                                                          DataTable AAttributes,
                                                          bool AIncludeDescription,
                                                          Int64 AContactLogIDFilter = -1)
        {
            DataView ContactAttributeTableDV =
                TDataCache.TMPartner.GetCacheableMailingTable(TCacheableMailingTablesEnum.ContactAttributeList).DefaultView;

            ContactAttributeTableDV.Sort = PContactAttributeTable.GetContactAttributeCodeDBName() + " ASC";

            DataView ContactAttributeDetailTableDV =
                TDataCache.TMPartner.GetCacheableMailingTable(TCacheableMailingTablesEnum.ContactAttributeDetailList).DefaultView;

            ContactAttributeDetailTableDV.Sort = PContactAttributeDetailTable.GetContactAttributeCodeDBName() + " ASC, " +
                                                 PContactAttributeDetailTable.GetContactAttrDetailCodeDBName() + " ASC";

            DataTable DT = new PPartnerContactAttributeTable();

            if ((AAttributes != null) && (AAttributes.Rows.Count > 0))
            {
                DT = AAttributes.Copy();
            }

            if (AIncludeDescription)
            {
                DT.Columns.Add("AttributeDescription", System.Type.GetType("System.String"));
                DT.Columns.Add("AttributeDetailDescription", System.Type.GetType("System.String"));

                // add descriptions to new table
                foreach (DataRow Row in DT.Rows)
                {
                    if (Row.RowState != DataRowState.Deleted)
                    {
                        Row["AttributeDescription"] = GetContactAttributeDesciption(
                            Row[PPartnerContactAttributeTable.GetContactAttributeCodeDBName()].ToString(), ContactAttributeTableDV);
                        Row["AttributeDetailDescription"] = GetContactAttributeDetailDesciption(
                            Row[PPartnerContactAttributeTable.GetContactAttributeCodeDBName()].ToString(),
                            Row[PPartnerContactAttributeTable.GetContactAttrDetailCodeDBName()].ToString(), ContactAttributeDetailTableDV);
                    }
                }
            }

            AGrid.Columns.Clear();
            AGrid.AddTextColumn("Attribute Code", DT.Columns[PPartnerContactAttributeTable.GetContactAttributeCodeDBName()]);

            if (AIncludeDescription)
            {
                AGrid.AddTextColumn("Description", DT.Columns["AttributeDescription"]);
            }

            AGrid.AddTextColumn("Detail Code", DT.Columns[PPartnerContactAttributeTable.GetContactAttrDetailCodeDBName()]);

            if (AIncludeDescription)
            {
                AGrid.AddTextColumn("Description", DT.Columns["AttributeDetailDescription"]);
            }

            DataView GridTableDV = DT.DefaultView;

            GridTableDV.AllowNew    = false;
            GridTableDV.AllowEdit   = false;
            GridTableDV.AllowDelete = false;

            if (AContactLogIDFilter != -1)
            {
                GridTableDV.RowFilter = PPartnerContactAttributeTable.GetContactIdDBName() + " = " + AContactLogIDFilter;
            }

            // DataBind the DataGrid
            AGrid.DataSource = new DevAge.ComponentModel.BoundDataView(GridTableDV);

            AGrid.AutoResizeGrid();

            return(GridTableDV);
        }
        /// <summary>
        /// Called by the instantiator of this Dialog to retrieve the values of Fields
        /// on the screen.
        /// </summary>
        /// <param name="ARow"></param>
        /// <param name="ATable"></param>
        /// <returns>Boolean</returns>
        public bool GetReturnedParameters(ref PContactLogRow ARow, ref PPartnerContactAttributeTable ATable)
        {
            bool ReturnValue = true;

            DataUtilities.CopyAllColumnValues(FMainDS.PContactLog.Rows[0], ARow);
            ATable.Merge(FMainDS.PPartnerContactAttribute);

            return ReturnValue;
        }
        /// <summary>
        /// Add Contact Log record for Partners in selected Extract
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void AddContactLog(object sender, EventArgs e)
        {
            PContactLogTable ContactLogTable = new PContactLogTable();
            PContactLogRow ContactLogRow = ContactLogTable.NewRowTyped();
            PPartnerContactAttributeTable PartnerContactAttributeTable = new PPartnerContactAttributeTable();

            string MessageText;

            if (!WarnIfNotSingleSelection(Catalog.GetString("Add Contact Log"))
                && (GetSelectedDetailRow() != null))
            {
                TFrmUpdateExtractAddContactLogDialog dialog = new TFrmUpdateExtractAddContactLogDialog(this.FindForm());
                dialog.SetExtractName(GetSelectedDetailRow().ExtractName);

                if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    dialog.GetReturnedParameters(ref ContactLogRow, ref PartnerContactAttributeTable);
                    ContactLogTable.Rows.Add(ContactLogRow);
                    // perform update of extract data on server side
                    TRemote.MPartner.Partner.WebConnectors.AddContactLog(
                        GetSelectedDetailRow().ExtractId, ContactLogTable, PartnerContactAttributeTable);

                    MessageText =
                        string.Format(Catalog.GetString(
                                "Contact Log {0} - {1} successfully added for {2} Partner(s) in Extract {3}."),
                            ContactLogRow.ContactCode, ContactLogRow.ContactDate, GetSelectedDetailRow().KeyCount, GetSelectedDetailRow().ExtractName);

                    MessageBox.Show(MessageText,
                        Catalog.GetString("Add Contact Log"),
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                }
            }
        }
Пример #20
0
        /// <summary>
        /// Setups the contact attributes grid (used on the following screens: Contact Log tab, Contacts with Partners and Extract by Contact Log.
        /// </summary>
        /// <param name="AGrid">Grid to be set up</param>
        /// <param name="AAttributes">Attributes to be included in the grid</param>
        /// <param name="AIncludeDescription">Include columns that display the attribute descriptions</param>
        /// <param name="AContactLogIDFilter">Filter grid to only show rows for given contact log if</param>
        public static DataView SetupContactAttributesGrid(ref TSgrdDataGridPaged AGrid,
            DataTable AAttributes,
            bool AIncludeDescription,
            Int64 AContactLogIDFilter = -1)
        {
            DataView ContactAttributeTableDV =
                TDataCache.TMPartner.GetCacheableMailingTable(TCacheableMailingTablesEnum.ContactAttributeList).DefaultView;

            ContactAttributeTableDV.Sort = PContactAttributeTable.GetContactAttributeCodeDBName() + " ASC";

            DataView ContactAttributeDetailTableDV =
                TDataCache.TMPartner.GetCacheableMailingTable(TCacheableMailingTablesEnum.ContactAttributeDetailList).DefaultView;
            ContactAttributeDetailTableDV.Sort = PContactAttributeDetailTable.GetContactAttributeCodeDBName() + " ASC, " +
                                                 PContactAttributeDetailTable.GetContactAttrDetailCodeDBName() + " ASC";

            DataTable DT = new PPartnerContactAttributeTable();

            if ((AAttributes != null) && (AAttributes.Rows.Count > 0))
            {
                DT = AAttributes.Copy();
            }

            if (AIncludeDescription)
            {
                DT.Columns.Add("AttributeDescription", System.Type.GetType("System.String"));
                DT.Columns.Add("AttributeDetailDescription", System.Type.GetType("System.String"));

                // add descriptions to new table
                foreach (DataRow Row in DT.Rows)
                {
                    if (Row.RowState != DataRowState.Deleted)
                    {
                        Row["AttributeDescription"] = GetContactAttributeDesciption(
                            Row[PPartnerContactAttributeTable.GetContactAttributeCodeDBName()].ToString(), ContactAttributeTableDV);
                        Row["AttributeDetailDescription"] = GetContactAttributeDetailDesciption(
                            Row[PPartnerContactAttributeTable.GetContactAttributeCodeDBName()].ToString(),
                            Row[PPartnerContactAttributeTable.GetContactAttrDetailCodeDBName()].ToString(), ContactAttributeDetailTableDV);
                    }
                }
            }

            AGrid.Columns.Clear();
            AGrid.AddTextColumn("Attribute Code", DT.Columns[PPartnerContactAttributeTable.GetContactAttributeCodeDBName()]);

            if (AIncludeDescription)
            {
                AGrid.AddTextColumn("Description", DT.Columns["AttributeDescription"]);
            }

            AGrid.AddTextColumn("Detail Code", DT.Columns[PPartnerContactAttributeTable.GetContactAttrDetailCodeDBName()]);

            if (AIncludeDescription)
            {
                AGrid.AddTextColumn("Description", DT.Columns["AttributeDetailDescription"]);
            }

            DataView GridTableDV = DT.DefaultView;
            GridTableDV.AllowNew = false;
            GridTableDV.AllowEdit = false;
            GridTableDV.AllowDelete = false;

            if (AContactLogIDFilter != -1)
            {
                GridTableDV.RowFilter = PPartnerContactAttributeTable.GetContactIdDBName() + " = " + AContactLogIDFilter;
            }

            // DataBind the DataGrid
            AGrid.DataSource = new DevAge.ComponentModel.BoundDataView(GridTableDV);

            AGrid.AutoResizeGrid();

            return GridTableDV;
        }
Пример #21
0
        public static DataTable FindContacts(string AContactor,
                                             DateTime?AContactDate,
                                             string ACommentContains,
                                             string AMethodOfContact,
                                             string AModuleID,
                                             string AMailingCode,
                                             PPartnerContactAttributeTable AContactAttributes)
        {
            Boolean   NewTransaction;
            DataTable Contacts = new DataTable();

            TDataBase      db = DBAccess.Connect("FindContacts");
            TDBTransaction WriteTransaction = db.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                                                                             out NewTransaction);

            try
            {
                string Query = "SELECT p_contact_log.*, p_partner_contact.p_partner_key_n, p_partner.p_partner_short_name_c" +

                               " FROM p_contact_log, p_partner_contact, p_partner" +

                               " WHERE" +
                               " p_partner_contact.p_contact_log_id_i = p_contact_log.p_contact_log_id_i" +
                               " AND p_partner.p_partner_key_n = p_partner_contact.p_partner_key_n";

                if (AContactor.Length > 0)
                {
                    Query += " AND p_contact_log.p_contactor_c = '" + AContactor + "'";
                }

                if (AContactDate.HasValue)
                {
                    Query += " AND p_contact_log.s_contact_date_d = '" + AContactDate + "'";
                }

                if (AMethodOfContact.Length > 0)
                {
                    Query += " AND p_contact_log.p_contact_code_c = '" + AMethodOfContact + "'";
                }

                if (AModuleID.Length > 0)
                {
                    Query += " AND p_contact_log.s_module_id_c = '" + AModuleID + "'";
                }

                if (AMailingCode.Length > 0)
                {
                    Query += " AND p_contact_log.p_mailing_code_c = '" + AMailingCode + "'";
                }

                if (ACommentContains.Length > 0)
                {
                    Query += " AND p_contact_log.p_contact_comment_c LIKE '%" + ACommentContains + "%'";
                }

                if ((AContactAttributes != null) && (AContactAttributes.Rows.Count > 0))
                {
                    Query += " AND EXISTS (SELECT * " +
                             " FROM p_partner_contact_attribute" +
                             " WHERE" +
                             " p_partner_contact_attribute.p_contact_id_i = p_contact_log.p_contact_log_id_i" +
                             " AND (";

                    foreach (PPartnerContactAttributeRow Row in AContactAttributes.Rows)
                    {
                        Query += " (p_partner_contact_attribute.p_contact_attribute_code_c = '" + Row.ContactAttributeCode + "'" +
                                 " AND p_partner_contact_attribute.p_contact_attr_detail_code_c = '" + Row.ContactAttrDetailCode + "') OR";
                    }

                    // remove the final " OR"
                    Query = Query.Substring(0, Query.Length - 3) + "))";
                }

                WriteTransaction.DataBaseObj.SelectDT(Contacts, Query, WriteTransaction);

                Contacts.PrimaryKey = new DataColumn[] {
                    Contacts.Columns["p_partner_key_n"], Contacts.Columns["p_contact_log_id_i"]
                };
            }
            catch (Exception e)
            {
                TLogging.Log(e.Message);
                TLogging.Log(e.StackTrace);
            }

            if (NewTransaction)
            {
                WriteTransaction.Rollback();
            }

            return(Contacts);
        }
        private Boolean PerformContactAttributeAddOrRemoval(DataRow AChangingRow, out Boolean AIsRemoval)
        {
            Boolean ReturnValue = false;

            AIsRemoval = false;

            try
            {
                String AttributeCode       = AChangingRow["AttributeCode"].ToString();
                String AttributeDetailCode = AChangingRow["AttributeDetailCode"].ToString();

                DataRow ExistingDataRow = FSelectedContactAttributeTable.Rows.Find(new object[] { FContactID, AttributeCode, AttributeDetailCode });

                if (ExistingDataRow == null)
                {
                    /*
                     * Add Contact Attribute
                     */

                    DataRow DeletedRow = null;

                    // check that this contact attribute hasn't previously been deleted
                    foreach (DataRow Row in FSelectedContactAttributeTable.Rows)
                    {
                        if ((Row.RowState == DataRowState.Deleted) &&
                            (Convert.ToInt64(Row[PPartnerContactAttributeTable.GetContactIdDBName(), DataRowVersion.Original]) == FContactID) &&
                            (Row[PPartnerContactAttributeTable.GetContactAttributeCodeDBName(),
                                 DataRowVersion.Original].ToString() == AttributeCode) &&
                            (Row[PPartnerContactAttributeTable.GetContactAttrDetailCodeDBName(),
                                 DataRowVersion.Original].ToString() == AttributeDetailCode))
                        {
                            DeletedRow = Row;
                        }
                    }

                    if (DeletedRow != null)
                    {
                        // undelete the previously deleted row
                        DeletedRow.RejectChanges();
                    }
                    else
                    {
                        // Check: is this Contact Attribute assignable
                        PContactAttributeRow ContactAttribute =
                            (PContactAttributeRow)FContactAttributeTableDV.Table.Rows.Find(new Object[] { AttributeCode });
                        PContactAttributeDetailRow ContactAttributeDetail =
                            (PContactAttributeDetailRow)FContactAttributeDetailTableDV.Table.Rows.Find(new Object[] { AttributeCode,
                                                                                                                      AttributeDetailCode });

                        // -1 means this is being used in a find screen and we can select inactive attributes
                        if ((FContactID != -1) && (!ContactAttribute.Active || !ContactAttributeDetail.Active))
                        {
                            MessageBox.Show(
                                string.Format(Catalog.GetString("This Contact Attribute is inactive and cannot be added to this Contact Log."),
                                              AttributeCode),
                                Catalog.GetString("Inactive Contact Attribute"),
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);

                            return(false);
                        }

                        // add new row to PartnerType table
                        PPartnerContactAttributeRow TheNewRow = FSelectedContactAttributeTable.NewRowTyped();
                        TheNewRow.ContactId             = FContactID;
                        TheNewRow.ContactAttributeCode  = AttributeCode;
                        TheNewRow.ContactAttrDetailCode = AttributeDetailCode;
                        FSelectedContactAttributeTable.Rows.Add(TheNewRow);
                    }

                    ReturnValue = true;
                    AIsRemoval  = false;
                }
                else
                {
                    /*
                     * Remove Special Type
                     */

                    // Delete row

                    if (ExistingDataRow.RowState == DataRowState.Added)
                    {
                        FAddedAttributeDeleted = true;
                    }

                    ExistingDataRow.Delete();

                    ReturnValue = true;
                    AIsRemoval  = true;
                }
            }
            catch (Exception E)
            {
                MessageBox.Show(E.ToString());
                ReturnValue = false;
            }

            return(ReturnValue);
        }