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; }); }
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; } }); }
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 PartnerEditTDS GetPartnerContactLogData(long APartnerKey, TDataBase ADataBase = null) { PartnerEditTDS ReturnDS = new PartnerEditTDS(); TDBTransaction Transaction = new TDBTransaction(); TDataBase db = DBAccess.Connect("GetPartnerContactLogData", ADataBase); db.ReadTransaction(ref Transaction, delegate { ReturnDS.Merge(PContactLogAccess.LoadViaPPartnerPPartnerContact(APartnerKey, Transaction)); ReturnDS.Merge(PPartnerContactAccess.LoadViaPPartner(APartnerKey, Transaction)); if ((ReturnDS.PContactLog != null) && (ReturnDS.PContactLog.Count > 0)) { foreach (PContactLogRow Row in ReturnDS.PContactLog.Rows) { ReturnDS.Merge(PPartnerContactAttributeAccess.LoadViaPContactLog(Row.ContactLogId, Transaction)); } } }); return(ReturnDS); }
public static PartnerEditTDS GetPartnerContactLogData(long APartnerKey) { PartnerEditTDS ReturnDS = new PartnerEditTDS(); TDBTransaction Transaction = null; DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, ref Transaction, delegate { ReturnDS.Merge(PContactLogAccess.LoadViaPPartnerPPartnerContact(APartnerKey, Transaction)); ReturnDS.Merge(PPartnerContactAccess.LoadViaPPartner(APartnerKey, Transaction)); if ((ReturnDS.PContactLog != null) && (ReturnDS.PContactLog.Count > 0)) { foreach (PContactLogRow Row in ReturnDS.PContactLog.Rows) { ReturnDS.Merge(PPartnerContactAttributeAccess.LoadViaPContactLog(Row.ContactLogId, Transaction)); } } }); return(ReturnDS); }