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