<?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="UserService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <EntityContainer Name="EntityContainer">
        <EntitySet Name="Users" EntityType="UserService.Users">
          <NavigationPropertyBinding Path="group" Target="Groups"/>
        </EntitySet>
        <EntitySet Name="UserFields" EntityType="UserService.UserFields"/>
        <EntitySet Name="UserFieldsEntries" EntityType="UserService.UserFieldsEntries"/>
        <EntitySet Name="Roles" EntityType="UserService.Roles"/>
        <EntitySet Name="UserRoleMappings" EntityType="UserService.UserRoleMappings"/>
        <EntitySet Name="Grades" EntityType="UserService.Grades"/>
        <EntitySet Name="Designations" EntityType="UserService.Designations"/>
        <EntitySet Name="Departments" EntityType="UserService.Departments"/>
        <EntitySet Name="SBUs" EntityType="UserService.SBUs"/>
        <EntitySet Name="CostCenters" EntityType="UserService.CostCenters"/>
        <EntitySet Name="Currencies" EntityType="UserService.Currencies"/>
        <EntitySet Name="ExtendedWorkflowApprovers" EntityType="UserService.ExtendedWorkflowApprovers">
          <NavigationPropertyBinding Path="user" Target="Users"/>
        </EntitySet>
        <EntitySet Name="Groups" EntityType="UserService.Groups">
          <NavigationPropertyBinding Path="created_by" Target="Users"/>
          <NavigationPropertyBinding Path="updated_by" Target="Users"/>
        </EntitySet>
        <ActionImport Name="login" Action="UserService.login"/>
        <ActionImport Name="changePassword" Action="UserService.changePassword"/>
        <ActionImport Name="getMyRoles" Action="UserService.getMyRoles"/>
        <ActionImport Name="getUserCurrency" Action="UserService.getUserCurrency"/>
        <ActionImport Name="createUser" Action="UserService.createUser"/>
        <ActionImport Name="updateUser" Action="UserService.updateUser"/>
        <ActionImport Name="deleteUser" Action="UserService.deleteUser"/>
        <ActionImport Name="updateRequiredFields" Action="UserService.updateRequiredFields"/>
        <ActionImport Name="manageUserFieldsEntries" Action="UserService.manageUserFieldsEntries"/>
        <ActionImport Name="getUserDetails" Action="UserService.getUserDetails"/>
      </EntityContainer>
      <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"/>
        <NavigationProperty Name="group" Type="UserService.Groups">
          <ReferentialConstraint Property="group_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <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="UserFields">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100"/>
        <Property Name="required_fields" Type="Edm.String"/>
        <Property Name="required_field_options" Type="Edm.String"/>
        <Property Name="core_fields" Type="Edm.String"/>
        <Property Name="core_field_options" Type="Edm.String"/>
      </EntityType>
      <EntityType Name="UserFieldsEntries">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="details" Type="Edm.String"/>
        <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="Grades">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100"/>
        <Property Name="description" Type="Edm.String" MaxLength="255"/>
        <Property Name="code" Type="Edm.String" MaxLength="100"/>
        <Property Name="startDate" Type="Edm.Date"/>
        <Property Name="endDate" Type="Edm.Date"/>
        <Property Name="manager" Type="Edm.String" MaxLength="100"/>
        <Property Name="is_active" Type="Edm.Boolean"/>
      </EntityType>
      <EntityType Name="Designations">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100"/>
        <Property Name="description" Type="Edm.String" MaxLength="255"/>
        <Property Name="code" Type="Edm.String" MaxLength="100"/>
      </EntityType>
      <EntityType Name="Departments">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100"/>
        <Property Name="description" Type="Edm.String" MaxLength="255"/>
        <Property Name="code" Type="Edm.String" MaxLength="100"/>
        <Property Name="startDate" Type="Edm.Date"/>
        <Property Name="endDate" Type="Edm.Date"/>
        <Property Name="manager" Type="Edm.String" MaxLength="100"/>
        <Property Name="is_active" Type="Edm.Boolean"/>
      </EntityType>
      <EntityType Name="SBUs">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100"/>
        <Property Name="description" Type="Edm.String" MaxLength="255"/>
        <Property Name="code" Type="Edm.String" MaxLength="100"/>
        <Property Name="startDate" Type="Edm.Date"/>
        <Property Name="endDate" Type="Edm.Date"/>
        <Property Name="manager" Type="Edm.String" MaxLength="100"/>
        <Property Name="is_active" Type="Edm.Boolean"/>
      </EntityType>
      <EntityType Name="CostCenters">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100"/>
        <Property Name="description" Type="Edm.String" MaxLength="255"/>
        <Property Name="code" Type="Edm.String" MaxLength="100"/>
        <Property Name="startDate" Type="Edm.Date"/>
        <Property Name="endDate" Type="Edm.Date"/>
        <Property Name="costcenterManager" Type="Edm.String" MaxLength="100"/>
        <Property Name="is_active" Type="Edm.Boolean"/>
      </EntityType>
      <EntityType Name="Currencies">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="currency_code" Type="Edm.String" MaxLength="100"/>
        <Property Name="currency_name" Type="Edm.String" MaxLength="255"/>
        <Property Name="country_name_ID" Type="Edm.Int32"/>
      </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="UserService.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>
      <EntityType Name="Groups">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="100"/>
        <Property Name="employeeForm_ID" Type="Edm.Guid"/>
        <Property Name="is_active" Type="Edm.Boolean"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <NavigationProperty Name="created_by" Type="UserService.Users">
          <ReferentialConstraint Property="created_by_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="created_by_ID" Type="Edm.Guid"/>
        <NavigationProperty Name="updated_by" Type="UserService.Users">
          <ReferentialConstraint Property="updated_by_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="updated_by_ID" Type="Edm.Guid"/>
        <Property Name="requestPolicies" Type="Collection(Edm.Guid)" Nullable="false"/>
        <Property Name="expensePolicies" Type="Collection(Edm.Guid)" Nullable="false"/>
        <Property Name="cashAdvanceForm_ID" Type="Edm.Guid"/>
      </EntityType>
      <ComplexType Name="DependentInput">
        <Property Name="name" Type="Edm.String" MaxLength="255"/>
        <Property Name="relation" Type="Edm.String" MaxLength="50"/>
        <Property Name="passportNumber" Type="Edm.String" MaxLength="100"/>
        <Property Name="passportExpiryDate" Type="Edm.Date"/>
        <Property Name="aadharNumber" Type="Edm.String" MaxLength="100"/>
      </ComplexType>
      <ComplexType Name="return_UserService_getUserCurrency">
        <Property Name="currency_id" Type="Edm.Guid"/>
        <Property Name="currency_code" Type="Edm.String"/>
        <Property Name="currency_name" Type="Edm.String"/>
      </ComplexType>
      <ComplexType Name="return_UserService_getUserDetails">
        <Property Name="ID" Type="Edm.Guid"/>
        <Property Name="username" Type="Edm.String"/>
        <Property Name="firstName" Type="Edm.String" MaxLength="32"/>
        <Property Name="created_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="updated_at" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="group" Type="Edm.String"/>
        <Property Name="role" Type="Edm.String"/>
        <Property Name="customFields" Type="Edm.String"/>
      </ComplexType>
      <Action Name="login" IsBound="false">
        <Parameter Name="username" Type="Edm.String"/>
        <Parameter Name="password" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="changePassword" IsBound="false">
        <Parameter Name="currentPassword" Type="Edm.String"/>
        <Parameter Name="newPassword" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="getMyRoles" IsBound="false">
        <ReturnType Type="Collection(Edm.String)" Nullable="false"/>
      </Action>
      <Action Name="getUserCurrency" IsBound="false">
        <Parameter Name="userId" Type="Edm.Guid"/>
        <ReturnType Type="UserService.return_UserService_getUserCurrency"/>
      </Action>
      <Action Name="createUser" IsBound="false">
        <Parameter Name="username" Type="Edm.String"/>
        <Parameter Name="password" Type="Edm.String"/>
        <Parameter Name="role" Type="Edm.String"/>
        <Parameter Name="firstName" Type="Edm.String" MaxLength="32"/>
        <Parameter Name="groupId" Type="Edm.Guid"/>
        <Parameter Name="customFields" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="updateUser" IsBound="false">
        <Parameter Name="ID" Type="Edm.Guid"/>
        <Parameter Name="username" Type="Edm.String"/>
        <Parameter Name="password" Type="Edm.String"/>
        <Parameter Name="role" Type="Edm.String"/>
        <Parameter Name="firstName" Type="Edm.String" MaxLength="32"/>
        <Parameter Name="groupId" Type="Edm.Guid"/>
        <Parameter Name="customFields" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="deleteUser" IsBound="false">
        <Parameter Name="id" Type="Edm.Guid"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="updateRequiredFields" IsBound="false">
        <Parameter Name="id" Type="Edm.String"/>
        <Parameter Name="required_fields" Type="Edm.String"/>
        <Parameter Name="required_field_options" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="manageUserFieldsEntries" IsBound="false">
        <Parameter Name="ID" Type="Edm.Guid"/>
        <Parameter Name="details" Type="Edm.String"/>
        <ReturnType Type="Edm.String"/>
      </Action>
      <Action Name="getUserDetails" IsBound="false">
        <Parameter Name="userId" Type="Edm.Guid"/>
        <ReturnType Type="UserService.return_UserService_getUserDetails"/>
      </Action>
      <Annotations Target="UserService.Users/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.Users/created_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.Users/updated_at">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.UserFields/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.UserFieldsEntries/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.Roles/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.UserRoleMappings/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.Grades/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.Designations/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.Departments/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.SBUs/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.CostCenters/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.Currencies/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.ExtendedWorkflowApprovers/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="UserService.Groups/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>