diff --git a/src/VirtoCommerce.ExperienceApiModule.Core/Schemas/AddressType.cs b/src/VirtoCommerce.ExperienceApiModule.Core/Schemas/AddressType.cs
new file mode 100644
index 000000000..71d60b19a
--- /dev/null
+++ b/src/VirtoCommerce.ExperienceApiModule.Core/Schemas/AddressType.cs
@@ -0,0 +1,34 @@
+using GraphQL.Types;
+using VirtoCommerce.CoreModule.Core.Common;
+
+namespace VirtoCommerce.ExperienceApiModule.Core.Schemas
+{
+ public class AddressType : ObjectGraphType
+ {
+ public AddressType()
+ {
+ Field>("id", resolve: context => context.Source.Key, description: "Id");
+ Field(x => x.Key, nullable: false).Description("Id");
+ Field(x => x.City, nullable: false).Description("City");
+ Field(x => x.CountryCode, nullable: false).Description("Country code");
+ Field(x => x.CountryName, nullable: true).Description("Country name");
+ Field(x => x.Email, nullable: true).Description("Email");
+ Field(x => x.FirstName, nullable: true).Description("First name");
+ Field(x => x.MiddleName, nullable: true).Description("Middle name");
+ Field(x => x.LastName, nullable: true).Description("Last name");
+ Field(x => x.Line1, nullable: false).Description("Line1");
+ Field(x => x.Line2, nullable: true).Description("Line2");
+ Field(x => x.Name, nullable: true).Description("Name");
+ Field(x => x.Organization, nullable: true).Description("Company name");
+ Field(x => x.Phone, nullable: true).Description("Phone");
+ Field(x => x.PostalCode, nullable: false).Description("Postal code");
+ Field(x => x.RegionId, nullable: true).Description("Region id");
+ Field(x => x.RegionName, nullable: true).Description("Region name");
+ Field(x => x.Zip, nullable: false).Description("Zip");
+ Field(x => x.OuterId, nullable: true).Description("Outer id");
+ Field>(nameof(Address.AddressType),
+ "Address type",
+ resolve: context => context.Source.AddressType);
+ }
+ }
+}
diff --git a/src/VirtoCommerce.ExperienceApiModule.Core/Schemas/AddressTypeType.cs b/src/VirtoCommerce.ExperienceApiModule.Core/Schemas/AddressTypeType.cs
new file mode 100644
index 000000000..24a567a9f
--- /dev/null
+++ b/src/VirtoCommerce.ExperienceApiModule.Core/Schemas/AddressTypeType.cs
@@ -0,0 +1,8 @@
+using GraphQL.Types;
+
+namespace VirtoCommerce.ExperienceApiModule.Core.Schemas
+{
+ public class AddressTypeType: EnumerationGraphType
+ {
+ }
+}
diff --git a/src/XPurchase/VirtoCommerce.ExperienceApiModule.XOrder/Schemas/OrderAddressType.cs b/src/XPurchase/VirtoCommerce.ExperienceApiModule.XOrder/Schemas/OrderAddressType.cs
index bd0d4a067..a4ee63051 100644
--- a/src/XPurchase/VirtoCommerce.ExperienceApiModule.XOrder/Schemas/OrderAddressType.cs
+++ b/src/XPurchase/VirtoCommerce.ExperienceApiModule.XOrder/Schemas/OrderAddressType.cs
@@ -1,34 +1,15 @@
using GraphQL.Types;
+using VirtoCommerce.ExperienceApiModule.Core.Schemas;
using VirtoCommerce.OrdersModule.Core.Model;
namespace VirtoCommerce.ExperienceApiModule.XOrder.Schemas
{
- public class OrderAddressType : ObjectGraphType
+ public class OrderAddressType : AddressType
{
public OrderAddressType()
{
- Field("id", resolve: context => context.Source.Key, description: "Id");
- Field(x => x.Key, true).Description("Id");
- Field(x => x.City, nullable: true).Description("City");
- Field(x => x.CountryCode, nullable: true).Description("Country code");
- Field(x => x.CountryName, nullable: true).Description("Country name");
- Field(x => x.Email, nullable: true).Description("Email");
- Field(x => x.FirstName, nullable: true).Description("First name");
- Field(x => x.MiddleName, nullable: true).Description("Middle name");
- Field(x => x.LastName, nullable: true).Description("Last name");
- Field(x => x.Line1, nullable: true).Description("Line1");
- Field(x => x.Line2, nullable: true).Description("Line2");
- Field(x => x.Name, nullable: true).Description("Name");
- Field(x => x.Organization, nullable: true).Description("Company name");
- Field(x => x.Phone, nullable: true).Description("Phone");
- Field(x => x.PostalCode, nullable: false).Description("Postal code");
- Field(x => x.RegionId, nullable: true).Description("Region id");
- Field(x => x.RegionName, nullable: true).Description("Region name");
- Field(x => x.Zip, nullable: true).Description("Zip");
- Field(x => x.OuterId, nullable: true).Description("Outer id");
- Field(nameof(Address.AddressType),
- "Address type",
- resolve: context => (int)context.Source.AddressType);
+ GetField(nameof(Address.FirstName)).Type = typeof(NonNullGraphType);
+ GetField(nameof(Address.LastName)).Type = typeof(NonNullGraphType);
}
}
}
diff --git a/src/XPurchase/VirtoCommerce.XPurchase/Schemas/CartAddressType.cs b/src/XPurchase/VirtoCommerce.XPurchase/Schemas/CartAddressType.cs
index 67e8169c8..8465939a9 100644
--- a/src/XPurchase/VirtoCommerce.XPurchase/Schemas/CartAddressType.cs
+++ b/src/XPurchase/VirtoCommerce.XPurchase/Schemas/CartAddressType.cs
@@ -1,34 +1,15 @@
using GraphQL.Types;
using VirtoCommerce.CartModule.Core.Model;
+using VirtoCommerce.ExperienceApiModule.Core.Schemas;
namespace VirtoCommerce.XPurchase.Schemas
{
- public class CartAddressType : ObjectGraphType
+ public class CartAddressType : AddressType
{
public CartAddressType()
{
- Field("id", resolve: context => context.Source.Key, description: "Id");
- Field(x => x.Key, true).Description("Id");
- Field(x => x.City, nullable: true).Description("City");
- Field(x => x.CountryCode, nullable: true).Description("Country code");
- Field(x => x.CountryName, nullable: true).Description("Country name");
- Field(x => x.Email, nullable: true).Description("Email");
- Field(x => x.FirstName, nullable: true).Description("First name");
- Field(x => x.MiddleName, nullable: true).Description("Middle name");
- Field(x => x.LastName, nullable: true).Description("Last name");
- Field(x => x.Line1, nullable: true).Description("Line1");
- Field(x => x.Line2, nullable: true).Description("Line2");
- Field(x => x.Name, nullable: true).Description("Name");
- Field(x => x.Organization, nullable: true).Description("Company name");
- Field(x => x.Phone, nullable: true).Description("Phone");
- Field(x => x.PostalCode, nullable: false).Description("Postal code");
- Field(x => x.RegionId, nullable: true).Description("Region id");
- Field(x => x.RegionName, nullable: true).Description("Region name");
- Field(x => x.Zip, nullable: true).Description("Zip");
- Field(x => x.OuterId, nullable: true).Description("Outer id");
- Field(nameof(Address.AddressType),
- "Address type",
- resolve: context => (int)context.Source.AddressType);
+ GetField(nameof(Address.FirstName)).Type = typeof(NonNullGraphType);
+ GetField(nameof(Address.LastName)).Type = typeof(NonNullGraphType);
}
}
}