/// <summary> /// /// </summary> /// <param name="accDoc"></param> /// <param name="accountRow"></param> /// <param name="config"></param> private void StoreCustomer(AccountDocument accDoc, AccountDataset.AccountsRow accountRow, NorthwindConfig config, ref List<TransactionResult> result) { #region declaration AccountDataset.CustomersRow customerRow; AccountDataset account; CustomersTableAdapter tableAdapter; string columnName; int recordCount; bool newCustomer; string customerId; #endregion newCustomer = ((accDoc.Id == null) || (accDoc.Id == "")); try { if (newCustomer) customerId = GetNewCustomerID((string)accDoc.name.Value, config); else if (accDoc.Id.StartsWith(Constants.CustomerIdPrefix, StringComparison.InvariantCultureIgnoreCase)) customerId = accDoc.Id.Substring(Constants.CustomerIdPrefix.Length); else { result.Add(accDoc.SetTransactionStatus(TransactionStatus.UnRecoverableError, Resources.ErrorMessages_AccountNotFound)); return; } } catch (Exception) { result.Add(accDoc.SetTransactionStatus(TransactionStatus.UnRecoverableError, Resources.ErrorMessages_AccountNotFound)); return; } try { using (OleDbConnection connection = new OleDbConnection(config.ConnectionString)) { account = new AccountDataset(); tableAdapter = new CustomersTableAdapter(); tableAdapter.Connection = connection; if (newCustomer) { customerRow = account.Customers.NewCustomersRow(); customerRow.CustomerID = customerId; } else { recordCount = tableAdapter.FillBy(account.Customers, customerId); if (recordCount == 0) { accDoc.SetTransactionStatus(TransactionStatus.UnRecoverableError, Resources.ErrorMessages_AccountNotFound); return; } customerRow = (AccountDataset.CustomersRow)account.Customers.Rows[0]; } for (int index = 0; index < accountRow.Table.Columns.Count; index++) { columnName = accountRow.Table.Columns[index].ColumnName; if (!customerRow.Table.Columns.Contains(columnName)) continue; if (columnName.StartsWith("Create", StringComparison.InvariantCultureIgnoreCase)) if ((accountRow[columnName].GetType().Equals(typeof(DBNull)))) continue; customerRow[columnName] = accountRow[columnName]; } if (newCustomer) account.Customers.AddCustomersRow(customerRow); tableAdapter.Update(account.Customers); accDoc.SetTransactionStatus(TransactionStatus.Success); SetIdentitiesForAccounts(Constants.CustomerIdPrefix + customerId, accDoc); accDoc.GetTransactionResult(ref result); } } catch (Exception addCustomerException) { result.Add(accDoc.SetTransactionStatus(TransactionStatus.FatalError, addCustomerException.ToString())); throw; } UpdateEmailsCollectionFromCustomer(customerId, accDoc.emails, config, ref result); }
private void StoreSupplier(AccountDocument accDoc, AccountDataset.AccountsRow accountRow, NorthwindConfig config, ref List<TransactionResult> result) { AccountDataset.SuppliersRow suppliersRow; AccountDataset account; SuppliersTableAdapter tableAdapter; string columnName; int recordCount; bool newSupplier = ((accDoc.Id == null) || (accDoc.Id == "")); int supplierId; if (newSupplier) supplierId = 0; else if (accDoc.Id.StartsWith(Constants.SupplierIdPrefix, StringComparison.InvariantCultureIgnoreCase)) try { supplierId = Convert.ToInt32(accDoc.Id.Substring(Constants.SupplierIdPrefix.Length)); } catch (Exception) { supplierId = 0; } else { accDoc.SetTransactionStatus(TransactionStatus.UnRecoverableError, Resources.ErrorMessages_AccountNotFound); return; } try { using (OleDbConnection connection = new OleDbConnection(config.ConnectionString)) { connection.Open(); account = new AccountDataset(); tableAdapter = new SuppliersTableAdapter(); tableAdapter.Connection = connection; if (newSupplier) suppliersRow = account.Suppliers.NewSuppliersRow(); else { recordCount = tableAdapter.FillBy(account.Suppliers, supplierId); if (recordCount == 0) { accDoc.SetTransactionStatus(TransactionStatus.UnRecoverableError, Resources.ErrorMessages_AccountNotFound); return; } suppliersRow = (AccountDataset.SuppliersRow)account.Suppliers.Rows[0]; } for (int index = 0; index < accountRow.Table.Columns.Count; index++) { columnName = accountRow.Table.Columns[index].ColumnName; if (!suppliersRow.Table.Columns.Contains(columnName)) continue; suppliersRow[columnName] = accountRow[columnName]; } if (newSupplier) account.Suppliers.AddSuppliersRow(suppliersRow); tableAdapter.Update(account.Suppliers); if (newSupplier) { OleDbCommand Cmd = new OleDbCommand("SELECT @@IDENTITY", connection); object lastid = Cmd.ExecuteScalar(); supplierId = (int)lastid; } accDoc.SetTransactionStatus(TransactionStatus.Success); SetIdentitiesForAccounts(Constants.SupplierIdPrefix + supplierId.ToString(), accDoc); accDoc.GetTransactionResult(ref result); } } catch (Exception addCustomerException) { accDoc.SetTransactionStatus(TransactionStatus.FatalError, addCustomerException.ToString()); throw; } }