﻿<cf:project xmlns:cf="http://www.softfluent.com/codefluent/2005/1"
			      defaultNamespace="SoftFluent.Contacts"
			      persistencePropertyNameFormat="{1}"
			      defaultKeyPropertyTypeName="int"
            >
  <User>
    <Id />
    <Account collectionKey="true" />
    <Email unique="true">
      <cf:rule typeName="RegularExpressionValidate"
               expression="^[\w\.\-_]+@([\w\.\-_]+\.)+[A-Za-z;]{2,5}(\s*;\s*[\w\.\-_]+@([\w\.\-_]+\.)+[A-Za-z;]{2,5})*$" />
    </Email>
    <FirstName sortable="true"  />
    <LastName />
    <Password />
    <BirthdayDate />
    <Photo typeName="photo" />
    <Contacts typeName="ContactCollection"/>
    <cf:method name="Search" body="search(*)" autoStartsWith="true" />
    <cf:form name="Default" />
    <cf:form name="MyForm">
      <cf:tab name="Default"/>
      <cf:tab name="Tab1">
        <cf:column name="Column1">
          <Account />
          <Email />
        </cf:column>
        <cf:column name="Column2">
          <FirstName />
          <LastName />
        </cf:column>
      </cf:tab>
      <cf:tab name="Tab2">
        <cf:column name="Column1">
          <BirthdayDate />
          <Photo />
        </cf:column>
      </cf:tab>
    </cf:form>
    <cf:instance>
      <Id >1</Id>
      <Account>oba</Account>
      <Email>oba@softfluent.com</Email>
      <Password >0000</Password>
      <Firstname>Omid</Firstname>
      <Lastname>Bayani</Lastname>
    </cf:instance>
  </User>

  <Contact>
    <Id />
    <Email collectionKey="true" sortable="true" />
    <OtherEmail  />
    <FirstName sortable="true"/>
    <LastName sortable="true"/>
    <FullName computed="true" />
    <BirthDate />
    <Title sortable="true"/>
    <OfficePhone sortable="true"/>
    <MobilePhone sortable="true"/>
    <OtherPhone />
    <HomePhone />
    <Fax />
    <InvalidEmail typeName="bool "/>
    <Description maxLength="1000" />
    <!-- Source property is an enumeration -->
    <Source typeName="ContactSource" />
    <User typeName="User" />
    <cf:method name="NumberOfContacts" body="count(User) Where  User=@User" />
    <cf:method name="Search" body="search(*)" autoStartsWith="true" />
    <cf:snippet>
      private void OnGetFullName()
      {
      if (_fullName != null)
      return;

      _fullName = FirstName + " " + LastName;
      _fullName = _fullName.Trim();
      if (string.IsNullOrEmpty(_fullName))
      {
      _fullName = Email;
      return;
      }

      }
    </cf:snippet>
    <cf:instance>
      <Id>1</Id>
      <Email>john.lennado@company.com</Email>
      <OtherEmail></OtherEmail>
      <FirstName>John</FirstName>
      <LastName>Lennado</LastName>
      <Title>Business Director</Title>
      <OfficePhone>0102030405</OfficePhone>
      <MobilePhone>0102030406</MobilePhone>
      <OtherPhone>0102030407</OtherPhone>
      <HomePhone>0102030408</HomePhone>
      <Fax>0102030499</Fax>
      <InvalidEmail>false</InvalidEmail>
      <Description>None</Description>
      <User>1</User>
    </cf:instance>
    <cf:instance>
      <Id>2</Id>
      <Email>sarah.benneth@anywhere.com</Email>
      <OtherEmail></OtherEmail>
      <FirstName>Sarah</FirstName>
      <LastName>Benneth</LastName>
      <Title>Business Analyst</Title>
      <OfficePhone>3333030405</OfficePhone>
      <MobilePhone>4542030406</MobilePhone>
      <OtherPhone>0277030407</OtherPhone>
      <HomePhone>0992030408</HomePhone>
      <Fax>0102033679</Fax>
      <InvalidEmail>false</InvalidEmail>
      <Description>None</Description>
      <User>1</User>
    </cf:instance>

  </Contact>

  <ContactSourceEnum>
    <Undefined />
    <Email />
    <Phone />
    <BusinessEvent />
  </ContactSourceEnum>

</cf:project>
