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); } } }