using System; using System.Data; using System.Collections; using System.Diagnostics; using System.Data.SqlClient; using System.Xml.Serialization; using UDDI; namespace UDDI.API.Business { public class Email { [XmlAttribute("useType")] public string UseType; [XmlText()] public string Value; public Email() { } public Email( string email, string useType ) { Value = email; UseType = useType; } internal void Validate() { Utility.ValidateLength( ref UseType, "useType", UDDI.Constants.Lengths.UseType ); Utility.ValidateLength( ref Value, "email", UDDI.Constants.Lengths.Email ); } public void Save( long contactID ) { // // Create a command object to invoke the stored procedure // SqlCommand cmd = new SqlCommand( "net_contact_email_save", ConnectionManager.GetConnection() ); cmd.Transaction = ConnectionManager.GetTransaction(); cmd.CommandType = CommandType.StoredProcedure; // // Input parameters // cmd.Parameters.Add( new SqlParameter( "@contactID", SqlDbType.BigInt ) ).Direction = ParameterDirection.Input; cmd.Parameters.Add( new SqlParameter( "@email", SqlDbType.NVarChar, UDDI.Constants.Lengths.Email ) ).Direction = ParameterDirection.Input; cmd.Parameters.Add( new SqlParameter( "@useType", SqlDbType.NVarChar, UDDI.Constants.Lengths.UseType ) ).Direction = ParameterDirection.Input; // // Set parameter values // SqlParameterAccessor parmacc = new SqlParameterAccessor( cmd.Parameters ); parmacc.SetLong( "@contactID", contactID ); parmacc.SetString( "@email", Value ); parmacc.SetString( "@useType", UseType ); cmd.ExecuteNonQuery(); } } public class EmailCollection : CollectionBase { internal void Validate() { foreach( Email email in this) { email.Validate(); } } public void Save( long contactID ) { // // Walk collection and call save on individual contact instances // foreach( Email email in this) email.Save( contactID ); } public void Get( long contactID ) { // // Create a command object to invoke the stored procedure net_get_contacts // SqlStoredProcedureAccessor cmd = new SqlStoredProcedureAccessor( "net_contact_emails_get" ); // // Add parameters and set values // cmd.Parameters.Add( "@contactID", SqlDbType.BigInt, ParameterDirection.Input ); cmd.Parameters.SetLong( "@contactID", contactID ); // // Run the stored procedure // SqlDataReaderAccessor reader = cmd.ExecuteReader(); try { #if never while( reader.Read() ) { // // Construct a new Email from the data in this row // this.Add( dracc.GetString( EmailIndex ), dracc.GetString( UseTypeIndex ) ); } #endif } finally { reader.Close(); } } public void Read( SqlDataReaderAccessor reader ) { const int UseTypeIndex = 0; const int EmailIndex = 1; while( reader.Read() ) { // // Construct a new Email from the data in this row // this.Add( reader.GetString( EmailIndex ), reader.GetString( UseTypeIndex ) ); } } public Email this[ int index ] { get { return (Email)List[index]; } set { List[ index ] = value; } } public int Add() { return List.Add( new Email() ); } public int Add( Email emailObject ) { return List.Add( emailObject ); } public int Add( string email ) { return ( Add( email, null ) ); } public int Add( string email, string useType ) { return List.Add( new Email( email, useType ) ); } public void Insert( int index, Email value ) { List.Insert( index, value ); } public int IndexOf( Email value ) { return List.IndexOf( value ); } public bool Contains( Email value ) { return List.Contains( value ); } public void Remove( Email value ) { List.Remove( value ); } public void CopyTo( Email[] array, int index ) { List.CopyTo( array, index ); } } }