private void AddConnectionFieldsAutocomplete() { //standard online regional endpoints var onlineDiscoveryServices = new[] { new DiscoveryAutocomplete("North America", "https://disco.crm.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("North America 2", "https://disco.crm9.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("EMEA", "https://disco.crm4.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Asia Pacific Area", "https://disco.crm5.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Oceania", "https://disco.crm6.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Japan", "https://disco.crm7.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("South America", "https://disco.crm2.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("India", "https://disco.crm8.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Canada", "https://disco.crm3.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("United Kingdom", "https://disco.crm11.dynamics.com/XRMServices/2011/Discovery.svc"), }; this.AddAutocompleteFunction(new AutocompleteFunction((recordForm) => { return(onlineDiscoveryServices); }, typeof(DiscoveryAutocomplete), nameof(DiscoveryAutocomplete.Value), new[] { new GridFieldMetadata(nameof(DiscoveryAutocomplete.Name), 120), new GridFieldMetadata(nameof(DiscoveryAutocomplete.Value), 450) }, sortField: nameof(DiscoveryAutocomplete.Name), displayInGrid: false), typeof(XrmRecordConfiguration), nameof(XrmRecordConfiguration.DiscoveryServiceAddress)); //get the organisations based on details entered this.AddAutocompleteFunction(new AutocompleteFunction((recordForm) => { var objectRecord = recordForm.GetRecord() as ObjectRecord; if (objectRecord == null) { return(null); } var thisConnectionEntered = objectRecord.Instance as XrmRecordConfiguration; if (thisConnectionEntered == null) { return(null); } var xrmRecordConfiguration = new XrmRecordConfigurationInterfaceMapper().Map(thisConnectionEntered); var xrmConfiguration = new XrmConfigurationMapper().Map(xrmRecordConfiguration); var xrmConnection = new Xrm.XrmConnection(xrmConfiguration); return(xrmConnection .GetActiveOrganisations());; }, typeof(Xrm.Organisation), nameof(Xrm.Organisation.UniqueName), new[] { new GridFieldMetadata(nameof(Xrm.Organisation.UniqueName), 100), new GridFieldMetadata(nameof(Xrm.Organisation.FriendlyName), 400) }, sortField: nameof(Xrm.Organisation.FriendlyName), displayInGrid: false, autosearch: false), typeof(XrmRecordConfiguration), nameof(XrmRecordConfiguration.OrganizationUniqueName)); }
private void AddConnectionFieldsAutocomplete() { //existing values for these var propertiesForAutocompleteExistingValues = new[] { new KeyValuePair <string, double>(nameof(SavedXrmRecordConfiguration.Domain), 150), new KeyValuePair <string, double>(nameof(SavedXrmRecordConfiguration.Username), 400), }; foreach (var prop in propertiesForAutocompleteExistingValues) { Func <RecordEntryViewModelBase, IEnumerable <AutocompleteOption> > getExistingValues = (recordForm) => { var parentForm = recordForm.ParentForm; if (parentForm == null) { return(new AutocompleteOption[0]); } var objectRecord = parentForm.GetRecord() as ObjectRecord; if (objectRecord == null) { return(new AutocompleteOption[0]); } var instance = objectRecord.Instance as ISavedXrmConnections; if (instance == null || instance.Connections == null) { return(new AutocompleteOption[0]); } return(instance .Connections .Select(pt => (string)pt.GetPropertyValue(prop.Key)) .Where(g => !string.IsNullOrWhiteSpace(g)) .Distinct() .Select(s => new AutocompleteOption(s)) .ToArray()); }; this.AddAutocompleteFunction(new AutocompleteFunction(getExistingValues, gridWidth: prop.Value , isValidForFormFunction: (f) => getExistingValues(f).Any(), displayInGrid: false), typeof(SavedXrmRecordConfiguration), prop.Key); } //existing values + the standard online regional endpoints var onlineDiscoveryServices = new[] { new DiscoveryAutocomplete("North America", "https://disco.crm.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("North America 2", "https://disco.crm9.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("EMEA", "https://disco.crm4.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Asia Pacific Area", "https://disco.crm5.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Oceania", "https://disco.crm6.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Japan", "https://disco.crm7.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("South America", "https://disco.crm2.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("India", "https://disco.crm8.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Canada", "https://disco.crm3.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("United Kingdom", "https://disco.crm11.dynamics.com/XRMServices/2011/Discovery.svc"), }; this.AddAutocompleteFunction(new AutocompleteFunction((recordForm) => { var parentForm = recordForm.ParentForm; if (parentForm == null) { return(onlineDiscoveryServices); } var objectRecord = parentForm.GetRecord() as ObjectRecord; if (objectRecord == null) { return(onlineDiscoveryServices); } var instance = objectRecord.Instance as ISavedXrmConnections; var otherSavedConnections = instance == null || instance.Connections == null ? new string[0] : instance .Connections .Select(pt => (string)pt.GetPropertyValue(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress))) .Where(g => !string.IsNullOrWhiteSpace(g) && !onlineDiscoveryServices.Any(sv => sv.Value.ToLower() == g.ToLower())); return(onlineDiscoveryServices .Union(otherSavedConnections.Select(s => new DiscoveryAutocomplete(" ", s)))); }, typeof(DiscoveryAutocomplete), nameof(DiscoveryAutocomplete.Value), new[] { new GridFieldMetadata(nameof(DiscoveryAutocomplete.Name), 120), new GridFieldMetadata(nameof(DiscoveryAutocomplete.Value), 450) }, sortField: nameof(DiscoveryAutocomplete.Name), displayInGrid: false), typeof(SavedXrmRecordConfiguration), nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)); //get the organisations based on details entered this.AddAutocompleteFunction(new AutocompleteFunction((recordForm) => { var objectRecord = recordForm.GetRecord() as ObjectRecord; if (objectRecord == null) { return(null); } var thisConnectionEntered = objectRecord.Instance as XrmRecordConfiguration; if (thisConnectionEntered == null) { return(null); } var xrmRecordConfiguration = new XrmRecordConfigurationInterfaceMapper().Map(thisConnectionEntered); var xrmConfiguration = new XrmConfigurationMapper().Map(xrmRecordConfiguration); var xrmConnection = new Xrm.XrmConnection(xrmConfiguration); return(xrmConnection .GetActiveOrganisations());; }, typeof(Xrm.Organisation), nameof(Xrm.Organisation.UniqueName), new[] { new GridFieldMetadata(nameof(Xrm.Organisation.UniqueName), 100), new GridFieldMetadata(nameof(Xrm.Organisation.FriendlyName), 400) }, sortField: nameof(Xrm.Organisation.FriendlyName), displayInGrid: false, autosearch: false), typeof(SavedXrmRecordConfiguration), nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)); }