protected override void SetEditProperties(FieldResource field, PropertyInfo property, DisplayNameAttribute displayNameAttr) { field.Placeholder = property.Name; field.Required = property.GetCustomAttribute <RequiredAttribute>() != null; field.Name = property.Name; if (property.GetCustomAttribute <DisabledFieldAttribute>() is { })
/** * This function creates a FieldResource given a magento product and an attribute code for a MULTI SELECT field * That means a field where you can pick multiple options from a dropdown * NOTE: * If this function runs into a property where the matching Ea field ALSO has an option list, they must have identical values * Or the function will skip the option and continue on * * @param magentoProduct Magento product to parse * @param attributeCode Attribute code, hard coded value in Magento * * @return FieldResource Resource to add to EA product */ private FieldResource CreateFieldFromMultiSelect(ProductResource magentoProduct, string attrCode) { //Get option value from magento product var optionId = GetAttributeByCode(magentoProduct.custom_attributes, attrCode); FieldResource resource = null; //Get matching EA field identifier for this attribute var eaFieldId = ConfigReader.GetValueForField(attrCode); if (optionId != null && eaFieldId != -1) { //Get the specified option value, if there iso ne var attribute = _magentoCustomAttributesController.GetCustomAttributeIfExists(attrCode); var selectedValues = optionId.ToString().Split(','); var valueNames = new List <string>(); //Get the Ea field definition var fieldDef = _eaFieldDefinitionController.GetAFieldDefinition(eaFieldId); foreach (var selectedValue in selectedValues) { //Determine if field definition has options, if so we want to cross reference them if (fieldDef.Options.Any()) { //Get the Label for the selected option in magento from the custom attribute itself, where they are stored var valueName = GetLabelFromAttributeValue(attribute.options, selectedValue.ToString()).ToString(); var value = fieldDef.Options.Find(x => x.Value == valueName); if (value != null) { valueNames.Add(value.Value); } else { Console.WriteLine( "Unable to add field from magento product {0} (name) {1} (sku) property {2} option {3} as there was no matching value in EA, continuing on", magentoProduct.name, magentoProduct.sku, attrCode, valueName); } } else { valueNames.Add(GetLabelFromAttributeValue(attribute.options, selectedValue).ToString()); } } resource = new FieldResource { FieldDefinitionId = eaFieldId, LanguageInvariantValue = string.Join(", ", valueNames) }; } return(resource); }
/** * This function creates a Field * * @param fieldDefinitionId Identifier of a FieldDefinition in EA * * @returns FieldResource Object with reference to EA FieldDefinition for Name and magento product name */ private static FieldResource CreateField(int fieldDefinitionId, string name) { var nameField = new FieldResource { FieldDefinitionId = fieldDefinitionId, LanguageInvariantValue = name }; return(nameField); }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); FieldResource.Delete( pathAssistantSid: "UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", pathTaskSid: "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", pathSid: "UEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ); }
public void TestFetchResponse() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); twilioRestClient.Request(Arg.Any <Request>()) .Returns(new Response( System.Net.HttpStatusCode.OK, "{\"url\": \"https://autopilot.twilio.com/v1/Assistants/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Tasks/UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Fields/UEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"unique_name\": \"unique_name\",\"date_updated\": \"2015-07-30T20:00:00Z\",\"assistant_sid\": \"UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"task_sid\": \"UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"date_created\": \"2015-07-30T20:00:00Z\",\"sid\": \"UEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"field_type\": \"field_type\"}" )); var response = FieldResource.Fetch("UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "UEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient); Assert.NotNull(response); }
public void TestReadFullResponse() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); twilioRestClient.AccountSid.Returns("ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); twilioRestClient.Request(Arg.Any <Request>()) .Returns(new Response( System.Net.HttpStatusCode.OK, "{\"fields\": [{\"url\": \"https://preview.twilio.com/understand/Services/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Intents/UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Fields/UEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"unique_name\": \"unique_name\",\"date_updated\": \"2015-07-30T20:00:00Z\",\"service_sid\": \"UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"intent_sid\": \"UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"date_created\": \"2015-07-30T20:00:00Z\",\"sid\": \"UEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"field_type\": \"field_type\"}],\"meta\": {\"page\": 0,\"first_page_url\": \"https://preview.twilio.com/understand/Services/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Intents/UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Fields?PageSize=50&Page=0\",\"url\": \"https://preview.twilio.com/understand/Services/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Intents/UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Fields?PageSize=50&Page=0\",\"key\": \"fields\",\"next_page_url\": null,\"previous_page_url\": null,\"page_size\": 50}}" )); var response = FieldResource.Read("UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", client: twilioRestClient); Assert.NotNull(response); }
public void TestDeleteResponse() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); twilioRestClient.AccountSid.Returns("ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); twilioRestClient.Request(Arg.Any <Request>()) .Returns(new Response( System.Net.HttpStatusCode.NoContent, "null" )); var response = FieldResource.Delete("UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "UEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", client: twilioRestClient); Assert.NotNull(response); }
public void TestFetchResponse() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); twilioRestClient.AccountSid.Returns("ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); twilioRestClient.Request(Arg.Any <Request>()) .Returns(new Response( System.Net.HttpStatusCode.OK, "{\"url\": \"https://preview.twilio.com/understand/Services/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Intents/UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Fields/UEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"unique_name\": \"unique_name\",\"date_updated\": \"2015-07-30T20:00:00Z\",\"service_sid\": \"UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"intent_sid\": \"UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"date_created\": \"2015-07-30T20:00:00Z\",\"sid\": \"UEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"field_type\": \"field_type\"}" )); var response = FieldResource.Fetch("UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "UEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", client: twilioRestClient); Assert.NotNull(response); }
public void TestReadEmptyResponse() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); twilioRestClient.AccountSid.Returns("ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); twilioRestClient.Request(Arg.Any <Request>()) .Returns(new Response( System.Net.HttpStatusCode.OK, "{\"fields\": [],\"meta\": {\"page\": 0,\"first_page_url\": \"https://preview.twilio.com/understand/Services/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Intents/UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Fields?PageSize=50&Page=0\",\"url\": \"https://preview.twilio.com/understand/Services/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Intents/UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Fields?PageSize=50&Page=0\",\"key\": \"fields\",\"next_page_url\": null,\"previous_page_url\": null,\"page_size\": 50}}" )); var response = FieldResource.Read("UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", client: twilioRestClient); Assert.NotNull(response); }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var field = FieldResource.Fetch( pathAssistantSid: "UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", pathTaskSid: "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", pathSid: "UEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ); Console.WriteLine(field.UniqueName); }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var field = FieldResource.Create( fieldType: "FieldType", uniqueName: "UniqueName", pathAssistantSid: "UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", pathIntentSid: "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ); Console.WriteLine(field.Sid); }
/** * This function creates a FieldResource given a magento product and an attribute code for a TEXT field * That means a field where you can only enter text * * @param magentoProduct Magento product to parse * @param attributeCode Attribute code, hard coded value in Magento * * @return FieldResource Resource to add to EA product */ private static FieldResource CreateFieldFromText(ProductResource magentoProduct, string attrCode) { var value = GetAttributeByCode(magentoProduct.custom_attributes, attrCode); FieldResource field = null; if (value != null) { var fieldId = ConfigReader.GetValueForField(attrCode); if (fieldId != -1) { field = CreateField(ConfigReader.GetValueForField(attrCode), value.ToString()); } } return(field); }
/** * This function creates a FieldResource given a magento product and an attribute code for a SINGLE SELECT field * That is a field where you can pick a SINGLE item from a drop down list * * @param magentoProduct Magento product to parse * @param attributeCode Attribute code, hard coded value in Magento * * @return FieldResource Resource to add to EA product */ private FieldResource CreateFieldFromSingleSelect(ProductResource magentoProduct, string attrCode) { var optionId = GetAttributeByCode(magentoProduct.custom_attributes, attrCode); FieldResource resource = null; var eaFieldId = ConfigReader.GetValueForField(attrCode); if (optionId != null && eaFieldId != -1) { var attribute = _magentoCustomAttributesController.GetCustomAttributeIfExists(attrCode); var value = GetLabelFromAttributeValue(attribute.options, optionId.ToString()).ToString(); resource = new FieldResource { FieldDefinitionId = eaFieldId, LanguageInvariantValue = value }; } return(resource); }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var fields = FieldResource.Read( pathAssistantSid: "UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", pathTaskSid: "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ); foreach (var record in fields) { Console.WriteLine(record.Sid); } }
static void Main(string[] args) { // Find your Account Sid and Token at twilio.com/console // DANGER! This is insecure. See http://twil.io/secure const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string authToken = "your_auth_token"; TwilioClient.Init(accountSid, authToken); var field = FieldResource.Create( fieldType: "field_type", uniqueName: "unique_name", pathAssistantSid: "UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", pathTaskSid: "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ); Console.WriteLine(field.Sid); }
public void TestReadRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Get, Twilio.Rest.Domain.Preview, "/understand/Services/UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Intents/UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Fields", "" ); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { FieldResource.Read("UAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "UDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
public void TestDeleteRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Delete, Twilio.Rest.Domain.Preview, "/understand/Assistants/UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Tasks/UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Fields/UEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "" ); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { FieldResource.Delete("UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "UEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
public void TestReadRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Get, Twilio.Rest.Domain.Autopilot, "/v1/Assistants/UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Tasks/UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Fields", "" ); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { FieldResource.Read("UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
public void TestCreateRequest() { var twilioRestClient = Substitute.For <ITwilioRestClient>(); var request = new Request( HttpMethod.Post, Twilio.Rest.Domain.Autopilot, "/v1/Assistants/UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Tasks/UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Fields", "" ); request.AddPostParam("FieldType", Serialize("field_type")); request.AddPostParam("UniqueName", Serialize("unique_name")); twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content")); try { FieldResource.Create("UAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "UDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "field_type", "unique_name", client: twilioRestClient); Assert.Fail("Expected TwilioException to be thrown for 500"); } catch (ApiException) {} twilioRestClient.Received().Request(request); }
/** * This function parses the custom properties in a magento product and creates a matching * list of FieldResources for an EA product. * If the product has a mapped value, it will check if any of the fields were DELETED and if so * set the fields appropriately to have them deleted * * @param magentoProduct Magento product to parse * * @return List<FieldResource> Matching field resources */ public List <FieldResource> ParseFieldsFromProduct(ProductResource magentoProduct) { var fields = new List <FieldResource> { CreateField(ConfigReader.GetValueForField(ConfigReader.MagentoNameCode), magentoProduct.name) }; //Add fields from custom attributes foreach (var attribute in magentoProduct.custom_attributes) { FieldResource field = null; //Skip colors for now, as that requires a seperate API request after the MP is created if (attribute.attribute_code != ConfigReader.MagentoColorCode) { switch ( _magentoCustomAttributesController.GetCustomAttributeIfExists(attribute.attribute_code) .frontend_input) { case "multiselect": field = CreateFieldFromMultiSelect(magentoProduct, attribute.attribute_code); break; case "text": field = CreateFieldFromText(magentoProduct, attribute.attribute_code); break; case "textarea": field = CreateFieldFromText(magentoProduct, attribute.attribute_code); break; case "select": field = CreateFieldFromSingleSelect(magentoProduct, attribute.attribute_code); break; default: Console.WriteLine( "Custom attribute {0} on product {1} (name) {2} (sku) was not synced as it is of a unsupported type. " + "Only multiselect, textarea and select are supported.", attribute.attribute_code, magentoProduct.name, magentoProduct.sku); break; } } if (field != null) { fields.Add(field); } } //If this is an "Upsert" if (ProductHasMapping(magentoProduct)) { var catalogItemId = GetAttributeByCode(magentoProduct.custom_attributes, ConfigReader.MappingCode).ToString(); var slug = _eaCatalogsController.GetCatalogItem(catalogItemId).Slug; var productDocumentId = GetProductDocumentIdFromSlug(slug); //Go through and ensure all product fields no longer on the product are "empty", this will ensure they are deleted var eaFields = _eaProductController.GetProductHierarchy(productDocumentId).RootRevision.FieldValues; foreach (var eaField in eaFields) { var deleted = true; //If matching field is missing from fields, add it but set it to null foreach (var field in fields) { if (eaField.FieldDefinitionId == field.FieldDefinitionId) { deleted = false; } } if (deleted) { fields.Add(new FieldResource { FieldDefinitionId = eaField.FieldDefinitionId, LanguageInvariantValue = "" }); } } } return(fields); }
protected virtual void SetEditProperties(FieldResource field, PropertyInfo property, DisplayNameAttribute displayNameAttr) { }
protected virtual void SetPlaceholder(DisplayNameAttribute displayNameAttr, FieldResource field) { }