/// <summary> /// todoComment /// </summary> /// <param name="APartnerKey"></param> /// <param name="ALastContactDate"></param> /// <param name="ADataBase">An instantiated <see cref="TDataBase" /> object, or null (default = null). If null /// gets passed then the Method executes DB commands with a new Database connection</param> public static void GetLastContactDate(Int64 APartnerKey, out DateTime ALastContactDate, TDataBase ADataBase = null) { TDBTransaction ReadTransaction = new TDBTransaction(); DataSet LastContactDS; PContactLogRow ContactDR; DateTime LastContactDate = new DateTime(); LastContactDS = new DataSet("LastContactDate"); LastContactDS.Tables.Add(new PContactLogTable()); TDataBase db = DBAccess.Connect("GetLastContactDate", ADataBase); db.ReadTransaction( ref ReadTransaction, delegate { PContactLogAccess.LoadViaPPartner(LastContactDS, APartnerKey, StringHelper.InitStrArr(new String[] { PContactLogTable.GetContactDateDBName() }), ReadTransaction, StringHelper.InitStrArr(new String[] { "ORDER BY " + PContactLogTable.GetContactDateDBName() + " DESC" }), 0, 1); if (LastContactDS.Tables[PContactLogTable.GetTableName()].Rows.Count > 0) { ContactDR = ((PContactLogTable)LastContactDS.Tables[PContactLogTable.GetTableName()])[0]; LastContactDate = ContactDR.ContactDate; } else { LastContactDate = DateTime.MinValue; } }); ALastContactDate = LastContactDate; }
/// <summary> /// todoComment /// </summary> /// <param name="APartnerKey"></param> /// <param name="ALastContactDate"></param> /// <param name="ADataBase">An instantiated <see cref="TDataBase" /> object, or null (default = null). If null /// gets passed then the Method executes DB commands with the 'globally available' /// <see cref="DBAccess.GDBAccessObj" /> instance, otherwise with the instance that gets passed in with this /// Argument!</param> public static void GetLastContactDate(Int64 APartnerKey, out DateTime ALastContactDate, TDataBase ADataBase = null) { TDBTransaction ReadTransaction = null; DataSet LastContactDS; PContactLogRow ContactDR; DateTime LastContactDate = new DateTime(); LastContactDS = new DataSet("LastContactDate"); LastContactDS.Tables.Add(new PContactLogTable()); DBAccess.GetDBAccessObj(ADataBase).GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, ref ReadTransaction, delegate { PContactLogAccess.LoadViaPPartnerPPartnerContact(LastContactDS, APartnerKey, StringHelper.InitStrArr(new String[] { PContactLogTable.GetContactDateDBName() }), ReadTransaction, StringHelper.InitStrArr(new String[] { "ORDER BY " + PContactLogTable.GetContactDateDBName() + " DESC" }), 0, 1); if (LastContactDS.Tables[PContactLogTable.GetTableName()].Rows.Count > 0) { ContactDR = ((PContactLogTable)LastContactDS.Tables[PContactLogTable.GetTableName()])[0]; LastContactDate = ContactDR.ContactDate; } else { LastContactDate = DateTime.MinValue; } }); ALastContactDate = LastContactDate; }
/// <summary> /// todoComment /// </summary> /// <param name="APartnerKey"></param> /// <param name="ALastContactDate"></param> public static void GetLastContactDate(Int64 APartnerKey, out DateTime ALastContactDate) { TDBTransaction ReadTransaction; Boolean NewTransaction; DataSet LastContactDS; PContactLogRow ContactDR; LastContactDS = new DataSet("LastContactDate"); LastContactDS.Tables.Add(new PContactLogTable()); ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); PContactLogAccess.LoadViaPPartnerPPartnerContact(LastContactDS, APartnerKey, StringHelper.InitStrArr(new String[] { PContactLogTable.GetContactDateDBName() }), ReadTransaction, StringHelper.InitStrArr(new String[] { "ORDER BY " + PContactLogTable.GetContactDateDBName() + " DESC" }), 0, 1); if (LastContactDS.Tables[PContactLogTable.GetTableName()].Rows.Count > 0) { ContactDR = ((PContactLogTable)LastContactDS.Tables[PContactLogTable.GetTableName()])[0]; ALastContactDate = ContactDR.ContactDate; } else { ALastContactDate = DateTime.MinValue; } if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "TMailroom.GetLastContactDate: committed own transaction."); } }
public static PContactLogTable FindContactLogsForPartner(long partnerKey) { Boolean NewTransaction; PContactLogTable contacts = new PContactLogTable(); TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { contacts = PContactLogAccess.LoadViaPPartnerPPartnerContact(partnerKey, WriteTransaction); } catch (Exception e) { TLogging.Log(e.Message); TLogging.Log(e.StackTrace); } if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } return(contacts); }
/// <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(); 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); ContactLogTable.Rows.Add(ContactLogRow); // perform update of extract data on server side TRemote.MPartner.Partner.WebConnectors.AddContactLog( GetSelectedDetailRow().ExtractId, ref ContactLogTable); 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> /// Selects the given contact log. /// </summary> /// <param name="AContactLogID">Contact Log identifier.</param> public void SelectContactLogID(string AContactLogID) { foreach (DataRowView RowView in FMainDS.PContactLog.DefaultView) { if (RowView[PContactLogTable.GetContactLogIdDBName()].ToString() == AContactLogID) { grdDetails.SelectRowInGrid(grdDetails.Rows.DataSourceRowToIndex(RowView) + 1); return; } } }
public static void AddContactLog(List <Int64> APartnerKeys, DateTime AContactDate, string AContactor, string AMethodOfContact, string AComment, string AModuleID, string AMailingCode) { TDBTransaction Transaction = new TDBTransaction(); bool SubmissionOK = false; DBAccess.WriteTransaction( ref Transaction, ref SubmissionOK, delegate { PContactLogTable contacts = new PContactLogTable(); PContactLogRow contact = contacts.NewRowTyped(); contact.ContactLogId = Transaction.DataBaseObj.GetNextSequenceValue("seq_contact", Transaction); contact.ContactDate = new DateTime(AContactDate.Year, AContactDate.Month, AContactDate.Day); //contact.ContactTime = AContactDate.Hour * 60 + AContactDate.Minute; contact.ContactCode = AMethodOfContact; contact.ContactComment = AComment; contact.ModuleId = AModuleID; contact.Contactor = AContactor; contact.UserId = UserInfo.GetUserInfo().UserID; contacts.Rows.Add(contact); if (AMailingCode.Length > 0) { contact.MailingCode = AMailingCode; } // TODO: restrictions implemented via p_restricted_l or s_user_id_c PPartnerContactTable partnerContacts = new PPartnerContactTable(); APartnerKeys.ForEach(partnerKey => { PPartnerContactRow partnerContact = partnerContacts.NewRowTyped(); partnerContact.ContactLogId = contact.ContactLogId; partnerContact.PartnerKey = partnerKey; partnerContacts.Rows.Add(partnerContact); }); PContactLogAccess.SubmitChanges(contacts, Transaction); PPartnerContactAccess.SubmitChanges(partnerContacts, Transaction); SubmissionOK = true; }); }
private void InitializeManualCode() { if (!FMainDS.Tables.Contains(PContactLogTable.GetTableName())) { FMainDS.Merge(TRemote.MPartner.Partner.WebConnectors.GetPartnerContactLogData(FMainDS.PPartner[0].PartnerKey)); FMainDS.PContactLog.DefaultView.AllowNew = false; } FMainDS.InitVars(); OnHookupDataChange(new THookupPartnerEditDataChangeEventArgs(TPartnerEditTabPageEnum.petpContacts)); //Hook up DataSavingStarted Event to be able to run code before SaveChanges is doing anything FPetraUtilsObject.DataSavingStarted += new TDataSavingStartHandler(this.DataSavingStarted); ucoDetails.SpecialInitUserControl(); }
public static void AddContactLog(int ExtractId, ref PContactLogTable ContactLogTable) { Boolean NewTransaction; TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { var extractTable = MExtractAccess.LoadViaMExtractMaster(ExtractId, WriteTransaction).AsEnumerable(); var partnerKeys = extractTable.Select(e => e.ItemArray[MExtractTable.ColumnPartnerKeyId]); long ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction); ContactLogTable.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); }); PContactLogAccess.SubmitChanges(ContactLogTable, WriteTransaction); PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction); if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); } } catch (Exception e) { TLogging.Log( "An Exception occured during the adding of a Contact to Partners in an Extract:" + Environment.NewLine + e.ToString()); if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } throw; } }
private void InitializeManualCode() { // show this dialog in center of screen this.StartPosition = FormStartPosition.CenterScreen; FMainDS = new PartnerEditTDS(); // now add the one subscription row to the DS that we are working with PContactLogTable ContactLogTable = new PContactLogTable(); FMainDS.Merge(ContactLogTable); PContactLogRow ContactLogRow = FMainDS.PContactLog.NewRowTyped(true); ContactLogRow.ContactCode = ""; FMainDS.PContactLog.Rows.Add(ContactLogRow); ucoContactLog.MainDS = FMainDS; ucoContactLog.SpecialInitUserControl(); FPetraUtilsObject.HasChanges = false; }
public static void DeleteContacts( PContactLogTable AContactLogs) { Boolean NewTransaction; TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { foreach (PContactLogRow contactLogRow in AContactLogs.Rows) { var contactLogs = PPartnerContactAccess.LoadViaPContactLog((long)contactLogRow[PContactLogTable.ColumnContactLogIdId], WriteTransaction); foreach (PPartnerContactRow partnerContactRow in contactLogs.Rows) { partnerContactRow.Delete(); } PPartnerContactAccess.SubmitChanges(contactLogs, WriteTransaction); contactLogRow.Delete(); } PContactLogAccess.SubmitChanges(AContactLogs, WriteTransaction); if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); } } catch (Exception Exc) { TLogging.Log("An Exception occured during the deletion of Contact Logs:" + Environment.NewLine + Exc.ToString()); if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } throw; } }
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 PContactLogTable FindContactLogsForPartner(long partnerKey) { Boolean NewTransaction; PContactLogTable contacts = new PContactLogTable(); TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { contacts = PContactLogAccess.LoadViaPPartnerPPartnerContact(partnerKey, WriteTransaction); } catch (Exception e) { TLogging.Log(e.Message); TLogging.Log(e.StackTrace); } if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } return contacts; }
public static PContactLogTable FindContacts(string AContactor, DateTime? AContactDate, string ACommentContains, string AMethodOfContact, string AModuleID, string AMailingCode) { Boolean NewTransaction; PContactLogTable contacts = new PContactLogTable(); TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { PContactLogTable TempTable = new PContactLogTable(); PContactLogRow TemplateRow = TempTable.NewRowTyped(false); if (AContactor.Length > 0) { TemplateRow.Contactor = AContactor; } if (AContactDate.HasValue) { TemplateRow.ContactDate = new DateTime(AContactDate.Value.Year, AContactDate.Value.Month, AContactDate.Value.Day); } if (AMethodOfContact.Length > 0) { TemplateRow.ContactCode = AMethodOfContact; } if (AModuleID.Length > 0) { TemplateRow.ModuleId = AModuleID; } if (AMailingCode.Length > 0) { TemplateRow.MailingCode = AMailingCode; } contacts = PContactLogAccess.LoadUsingTemplate(TemplateRow, WriteTransaction); Int32 Counter = 0; while (Counter < contacts.Rows.Count) { if ((ACommentContains.Length > 0) && !StringHelper.ContainsI(contacts[Counter].ContactComment, ACommentContains)) { contacts.Rows.RemoveAt(Counter); } else { Counter++; } } } catch (Exception e) { TLogging.Log(e.Message); TLogging.Log(e.StackTrace); } if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } return contacts; }
public static void AddContactLog(List <Int64>APartnerKeys, DateTime AContactDate, string AContactor, string AMethodOfContact, string AComment, string AModuleID, string AMailingCode) { Boolean NewTransaction; TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { PContactLogTable contacts = new PContactLogTable(); PContactLogRow contact = contacts.NewRowTyped(); contact.ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction); contact.ContactDate = new DateTime(AContactDate.Year, AContactDate.Month, AContactDate.Day); //contact.ContactTime = AContactDate.Hour * 60 + AContactDate.Minute; contact.ContactCode = AMethodOfContact; contact.ContactComment = AComment; contact.ModuleId = AModuleID; contact.Contactor = AContactor; contact.UserId = UserInfo.GUserInfo.UserID; contacts.Rows.Add(contact); if (AMailingCode.Length > 0) { contact.MailingCode = AMailingCode; } // TODO: restrictions implemented via p_restricted_l or s_user_id_c PPartnerContactTable partnerContacts = new PPartnerContactTable(); APartnerKeys.ForEach(partnerKey => { PPartnerContactRow partnerContact = partnerContacts.NewRowTyped(); partnerContact.ContactLogId = contact.ContactLogId; partnerContact.PartnerKey = partnerKey; partnerContacts.Rows.Add(partnerContact); }); PContactLogAccess.SubmitChanges(contacts, WriteTransaction); PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction); if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); } } catch (Exception Exc) { TLogging.Log("An Exception occured during the adding of a Contact:" + Environment.NewLine + Exc.ToString()); if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } throw; } }
private PContactLogTable GetContactsInternal(out int ACount, out DateTime ALastContact) { TDBTransaction ReadTransaction; Boolean NewTransaction = false; PContactLogTable ContactDT; ALastContact = DateTime.MinValue; ContactDT = new PContactLogTable(); try { ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.RepeatableRead, TEnforceIsolationLevel.eilMinimum, out NewTransaction); var PartnerContacts = PPartnerContactAccess.LoadViaPPartner(FPartnerKey, ReadTransaction); ACount = PartnerContacts.Rows.Count; ContactDT = PContactLogAccess.LoadViaPPartnerPPartnerContact(FPartnerKey, ReadTransaction); foreach (PContactLogRow row in ContactDT.Rows) { ALastContact = row.ContactDate > ALastContact ? row.ContactDate : ALastContact; } } finally { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "TPartnerEditUIConnector.GetSubscriptionsInternal: committed own transaction."); } } return ContactDT; }
/// <summary> /// Count the subscriptions /// </summary> /// <param name="ATable">table with contacts</param> /// <param name="ATotalContacts">returns the total number of contacts</param> public static void CalculateTabCountsContacts(PContactLogTable ATable, out Int32 ATotalContacts) { // Inspect only CurrentRows (this excludes Deleted DataRows) ATotalContacts = new DataView(ATable, "", "", DataViewRowState.CurrentRows).Count; }
public static void AddContactLog(List <Int64> APartnerKeys, DateTime AContactDate, string AContactor, string AMethodOfContact, string AComment, string AModuleID, string AMailingCode) { Boolean NewTransaction; TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { PContactLogTable contacts = new PContactLogTable(); PContactLogRow contact = contacts.NewRowTyped(); contact.ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction); contact.ContactDate = new DateTime(AContactDate.Year, AContactDate.Month, AContactDate.Day); //contact.ContactTime = AContactDate.Hour * 60 + AContactDate.Minute; contact.ContactCode = AMethodOfContact; contact.ContactComment = AComment; contact.ModuleId = AModuleID; contact.Contactor = AContactor; contact.UserId = UserInfo.GUserInfo.UserID; contacts.Rows.Add(contact); if (AMailingCode.Length > 0) { contact.MailingCode = AMailingCode; } // TODO: restrictions implemented via p_restricted_l or s_user_id_c PPartnerContactTable partnerContacts = new PPartnerContactTable(); APartnerKeys.ForEach(partnerKey => { PPartnerContactRow partnerContact = partnerContacts.NewRowTyped(); partnerContact.ContactLogId = contact.ContactLogId; partnerContact.PartnerKey = partnerKey; partnerContacts.Rows.Add(partnerContact); }); PContactLogAccess.SubmitChanges(contacts, WriteTransaction); PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction); if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); } } catch (Exception Exc) { TLogging.Log("An Exception occured during the adding of a Contact:" + Environment.NewLine + Exc.ToString()); if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } throw; } }
public static PContactLogTable FindContacts(string AContactor, DateTime?AContactDate, string ACommentContains, string AMethodOfContact, string AModuleID, string AMailingCode) { Boolean NewTransaction; PContactLogTable contacts = new PContactLogTable(); TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { PContactLogTable TempTable = new PContactLogTable(); PContactLogRow TemplateRow = TempTable.NewRowTyped(false); if (AContactor.Length > 0) { TemplateRow.Contactor = AContactor; } if (AContactDate.HasValue) { TemplateRow.ContactDate = new DateTime(AContactDate.Value.Year, AContactDate.Value.Month, AContactDate.Value.Day); } if (AMethodOfContact.Length > 0) { TemplateRow.ContactCode = AMethodOfContact; } if (AModuleID.Length > 0) { TemplateRow.ModuleId = AModuleID; } if (AMailingCode.Length > 0) { TemplateRow.MailingCode = AMailingCode; } contacts = PContactLogAccess.LoadUsingTemplate(TemplateRow, WriteTransaction); Int32 Counter = 0; while (Counter < contacts.Rows.Count) { if ((ACommentContains.Length > 0) && !StringHelper.ContainsI(contacts[Counter].ContactComment, ACommentContains)) { contacts.Rows.RemoveAt(Counter); } else { Counter++; } } } catch (Exception e) { TLogging.Log(e.Message); TLogging.Log(e.StackTrace); } if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } return(contacts); }
public static void AddContactLog(List <Int64>APartnerKeys, DateTime AContactDate, string AContactor, string AMethodOfContact, string AComment, string AModuleID, string AMailingCode) { TDBTransaction Transaction = null; bool SubmissionOK = false; DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable, ref Transaction, ref SubmissionOK, delegate { PContactLogTable contacts = new PContactLogTable(); PContactLogRow contact = contacts.NewRowTyped(); contact.ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", Transaction); contact.ContactDate = new DateTime(AContactDate.Year, AContactDate.Month, AContactDate.Day); //contact.ContactTime = AContactDate.Hour * 60 + AContactDate.Minute; contact.ContactCode = AMethodOfContact; contact.ContactComment = AComment; contact.ModuleId = AModuleID; contact.Contactor = AContactor; contact.UserId = UserInfo.GUserInfo.UserID; contacts.Rows.Add(contact); if (AMailingCode.Length > 0) { contact.MailingCode = AMailingCode; } // TODO: restrictions implemented via p_restricted_l or s_user_id_c PPartnerContactTable partnerContacts = new PPartnerContactTable(); APartnerKeys.ForEach(partnerKey => { PPartnerContactRow partnerContact = partnerContacts.NewRowTyped(); partnerContact.ContactLogId = contact.ContactLogId; partnerContact.PartnerKey = partnerKey; partnerContacts.Rows.Add(partnerContact); }); PContactLogAccess.SubmitChanges(contacts, Transaction); PPartnerContactAccess.SubmitChanges(partnerContacts, Transaction); SubmissionOK = true; }); }