<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
    <edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
  </edmx:Reference>
  <edmx:DataServices>
    <Schema Namespace="ApproverService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <EntityContainer Name="EntityContainer">
        <EntitySet Name="EmployeeApproverMappings" EntityType="ApproverService.EmployeeApproverMappings">
          <NavigationPropertyBinding Path="employeeId" Target="Users"/>
          <NavigationPropertyBinding Path="approverId" Target="Users"/>
        </EntitySet>
        <EntitySet Name="Roles" EntityType="ApproverService.Roles"/>
        <EntitySet Name="UserRoleMappings" EntityType="ApproverService.UserRoleMappings"/>
        <EntitySet Name="Users" EntityType="ApproverService.Users"/>
        <EntitySet Name="RequestEmployeeApproverMappings" EntityType="ApproverService.RequestEmployeeApproverMappings">
          <NavigationPropertyBinding Path="user" Target="Users"/>
          <NavigationPropertyBinding Path="approver" Target="Users"/>
        </EntitySet>
        <EntitySet Name="ExpenseEmployeeApproverMappings" EntityType="ApproverService.ExpenseEmployeeApproverMappings">
          <NavigationPropertyBinding Path="user" Target="Users"/>
          <NavigationPropertyBinding Path="approver" Target="Users"/>
        </EntitySet>
        <EntitySet Name="ExtendedWorkflowApprovers" EntityType="ApproverService.ExtendedWorkflowApprovers">
          <NavigationPropertyBinding Path="user" Target="Users"/>
        </EntitySet>
        <ActionImport Name="getApproversCount" Action="ApproverService.getApproversCount"/>
        <ActionImport Name="getApprovers" Action="ApproverService.getApprovers"/>
        <FunctionImport Name="getMyApprovers" Function="ApproverService.getMyApprovers"/>
        <FunctionImport Name="getMyExpenseApprovers" Function="ApproverService.getMyExpenseApprovers"/>
      </EntityContainer>
      <EntityType Name="EmployeeApproverMappings">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="employeeId" Type="ApproverService.Users">
          <ReferentialConstraint Property="employeeId_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="employeeId_ID" Type="Edm.Guid"/>
        <NavigationProperty Name="approverId" Type="ApproverService.Users">
          <ReferentialConstraint Property="approverId_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="approverId_ID" Type="Edm.Guid"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <EntityType Name="Roles">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100" Nullable="false"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <EntityType Name="UserRoleMappings">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="userId" Type="Edm.Guid"/>
        <Property Name="roleId" Type="Edm.Guid"/>
      </EntityType>
      <EntityType Name="Users">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="username" Type="Edm.String" MaxLength="100" Nullable="false"/>
        <Property Name="password" Type="Edm.String" MaxLength="100" Nullable="false"/>
        <Property Name="role" Type="Edm.String" MaxLength="50" Nullable="false"/>
        <Property Name="firstName" Type="Edm.String" MaxLength="32" Nullable="false"/>
        <Property Name="group_ID" Type="Edm.Guid"/>
        <Property Name="customFields" Type="Edm.String"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <EntityType Name="RequestEmployeeApproverMappings">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="user" Type="ApproverService.Users">
          <ReferentialConstraint Property="user_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="user_ID" Type="Edm.Guid"/>
        <Property Name="group_ID" Type="Edm.Guid"/>
        <Property Name="policy_ID" Type="Edm.Guid"/>
        <Property Name="approverLevel_ID" Type="Edm.Guid"/>
        <NavigationProperty Name="approver" Type="ApproverService.Users">
          <ReferentialConstraint Property="approver_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="approver_ID" Type="Edm.Guid"/>
        <Property Name="order" Type="Edm.Int32"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <EntityType Name="ExpenseEmployeeApproverMappings">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="user" Type="ApproverService.Users">
          <ReferentialConstraint Property="user_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="user_ID" Type="Edm.Guid"/>
        <Property Name="group_ID" Type="Edm.Guid"/>
        <Property Name="policy_ID" Type="Edm.Guid"/>
        <Property Name="approverLevel_ID" Type="Edm.Guid"/>
        <NavigationProperty Name="approver" Type="ApproverService.Users">
          <ReferentialConstraint Property="approver_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="approver_ID" Type="Edm.Guid"/>
        <Property Name="order" Type="Edm.Int32"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <EntityType Name="ExtendedWorkflowApprovers">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="module" Type="Edm.String" MaxLength="50" Nullable="false"/>
        <NavigationProperty Name="user" Type="ApproverService.Users" Nullable="false">
          <ReferentialConstraint Property="user_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="user_ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="displayName" Type="Edm.String" MaxLength="100"/>
        <Property Name="order" Type="Edm.Int32" Nullable="false"/>
        <Property Name="isActive" Type="Edm.Boolean" DefaultValue="true"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
      </EntityType>
      <ComplexType Name="return_ApproverService_getApprovers">
        <Property Name="ID" Type="Edm.Guid"/>
        <Property Name="username" Type="Edm.String"/>
      </ComplexType>
      <ComplexType Name="return_ApproverService_getMyApprovers">
        <Property Name="ID" Type="Edm.Guid"/>
        <Property Name="username" Type="Edm.String"/>
        <Property Name="firstName" Type="Edm.String"/>
        <Property Name="lastName" Type="Edm.String"/>
        <Property Name="employeeId" Type="Edm.String"/>
        <Property Name="order" Type="Edm.Int32"/>
        <Property Name="level" Type="Edm.String"/>
        <Property Name="managerId" Type="Edm.String"/>
        <Property Name="role" Type="Edm.String"/>
      </ComplexType>
      <ComplexType Name="return_ApproverService_getMyExpenseApprovers">
        <Property Name="ID" Type="Edm.Guid"/>
        <Property Name="username" Type="Edm.String"/>
        <Property Name="firstName" Type="Edm.String"/>
        <Property Name="lastName" Type="Edm.String"/>
        <Property Name="employeeId" Type="Edm.String"/>
        <Property Name="order" Type="Edm.Int32"/>
        <Property Name="level" Type="Edm.String"/>
        <Property Name="managerId" Type="Edm.String"/>
        <Property Name="role" Type="Edm.String"/>
        <Property Name="displayName" Type="Edm.String"/>
      </ComplexType>
      <Action Name="getApproversCount" IsBound="false">
        <ReturnType Type="Edm.Int32"/>
      </Action>
      <Action Name="getApprovers" IsBound="false">
        <ReturnType Type="Collection(ApproverService.return_ApproverService_getApprovers)" Nullable="false"/>
      </Action>
      <Function Name="getMyApprovers" IsBound="false" IsComposable="false">
        <Parameter Name="policy_id" Type="Edm.String"/>
        <ReturnType Type="Collection(ApproverService.return_ApproverService_getMyApprovers)" Nullable="false"/>
      </Function>
      <Function Name="getMyExpenseApprovers" IsBound="false" IsComposable="false">
        <Parameter Name="policy_id" Type="Edm.String"/>
        <ReturnType Type="Collection(ApproverService.return_ApproverService_getMyExpenseApprovers)" Nullable="false"/>
      </Function>
      <Annotations Target="ApproverService.EmployeeApproverMappings/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="ApproverService.Roles/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="ApproverService.UserRoleMappings/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="ApproverService.Users/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="ApproverService.Users/created_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="ApproverService.Users/updated_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="ApproverService.RequestEmployeeApproverMappings/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="ApproverService.ExpenseEmployeeApproverMappings/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="ApproverService.ExtendedWorkflowApprovers/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>