private static void SetGenericAttribute <TProp>(string key, ImportRow <Customer> row) { if (row.IsTransient) { return; } SetGenericAttribute(key, row.GetDataValue <TProp>(key), row); }
private static void SetGenericAttribute <TProp>(string key, TProp value, ImportRow <Customer> row) { if (row.IsTransient) { return; } if (row.IsNew || value != null) { row.Entity.GenericAttributes.Set(key, value); } }
private static void ImportAddress( string fieldPrefix, ImportRow <Customer> row, ImportExecuteContext context, ImporterCargoData cargo) { // Last name is mandatory for an address to be imported or updated. if (!row.HasDataValue(fieldPrefix + "LastName")) { return; } Address address = null; if (fieldPrefix == "BillingAddress.") { address = row.Entity.BillingAddress ?? new Address { CreatedOnUtc = context.UtcNow }; } else if (fieldPrefix == "ShippingAddress.") { address = row.Entity.ShippingAddress ?? new Address { CreatedOnUtc = context.UtcNow }; } var childRow = new ImportRow <Address>(row.Segmenter, row.DataRow, row.Position); childRow.Initialize(address, row.EntityDisplayName); childRow.SetProperty(context.Result, fieldPrefix + "Salutation", x => x.Salutation); childRow.SetProperty(context.Result, fieldPrefix + "Title", x => x.Title); childRow.SetProperty(context.Result, fieldPrefix + "FirstName", x => x.FirstName); childRow.SetProperty(context.Result, fieldPrefix + "LastName", x => x.LastName); childRow.SetProperty(context.Result, fieldPrefix + "Email", x => x.Email); childRow.SetProperty(context.Result, fieldPrefix + "Company", x => x.Company); childRow.SetProperty(context.Result, fieldPrefix + "City", x => x.City); childRow.SetProperty(context.Result, fieldPrefix + "Address1", x => x.Address1); childRow.SetProperty(context.Result, fieldPrefix + "Address2", x => x.Address2); childRow.SetProperty(context.Result, fieldPrefix + "ZipPostalCode", x => x.ZipPostalCode); childRow.SetProperty(context.Result, fieldPrefix + "PhoneNumber", x => x.PhoneNumber); childRow.SetProperty(context.Result, fieldPrefix + "FaxNumber", x => x.FaxNumber); childRow.SetProperty(context.Result, fieldPrefix + "CountryId", x => x.CountryId); if (childRow.Entity.CountryId == null) { // Try with country code. childRow.SetProperty(context.Result, fieldPrefix + "CountryCode", x => x.CountryId, converter: (val, ci) => CountryCodeToId(val.ToString(), cargo)); } var countryId = childRow.Entity.CountryId; if (countryId.HasValue) { if (row.HasDataValue(fieldPrefix + "StateProvinceId")) { childRow.SetProperty(context.Result, fieldPrefix + "StateProvinceId", x => x.StateProvinceId); } else { // Try with state abbreviation. childRow.SetProperty(context.Result, fieldPrefix + "StateAbbreviation", x => x.StateProvinceId, converter: (val, ci) => StateAbbreviationToId(countryId, val.ToString(), cargo)); } } if (!childRow.IsDirty) { // Not one single property could be set. Get out! return; } if (address.Id == 0) { // Avoid importing two addresses if billing and shipping address are equal. var appliedAddress = row.Entity.Addresses.FindAddress(address); if (appliedAddress == null) { appliedAddress = address; row.Entity.Addresses.Add(appliedAddress); } // Map address to customer. if (fieldPrefix == "BillingAddress.") { row.Entity.BillingAddress = appliedAddress; } else if (fieldPrefix == "ShippingAddress.") { row.Entity.ShippingAddress = appliedAddress; } } }