internal override bool Check(Dynamics.ICrmServiceProvider crmServiceProvider, out string failureMessage) { // Check to make sure the solution exists. using (var service = crmServiceProvider.GetOrganisationService() as OrganizationServiceContext) { if (service == null) { Fail("Org service cannot be null"); } var solution = (from a in service.CreateQuery("solution") where (string)a["uniquename"] == Name select a) .FirstOrDefault(); if (solution == null) { Fail("Solution named: " + Name + " was not found."); } else { Success("Solution named: " + Name + " was found."); } } return(base.Check(crmServiceProvider, out failureMessage)); }
internal override bool Check(Dynamics.ICrmServiceProvider crmServiceProvider, out string failureMessage) { // create connection var crmServiceProvder = new CrmServiceProvider(new ExplicitConnectionStringProviderWithFallbackToConfig() { OrganisationServiceConnectionString = ConnectionString }, new CrmClientCredentialsProvider()); // Check sub requirements. return(base.Check(crmServiceProvder, out failureMessage)); }
internal override bool Check(Dynamics.ICrmServiceProvider crmServiceProvider, out string failureMessage) { // Check to make sure the solution exists. using (var service = crmServiceProvider.GetOrganisationService() as OrganizationServiceContext) { if (service == null) { Fail("Org service cannot be null"); } var solutions = (from a in service.CreateQuery("solution") where ((string)a["uniquename"] == SolutionExistsRequirement.Name && a["version"] != null) select new { Name = (string)a["uniquename"], VersionNumber = (string)a["version"] }).ToList(); var versions = solutions.Select( a => new CrmSolution() { Name = a.Name, VersionNumber = a.VersionNumber, Version = Version.Parse(a.VersionNumber) }).ToList(); // need to get the latest solution by comapring the version numbers (can't use standard alphabetical - need to parse each segment as an int and compare. // var versions = new List<KeyValuePair<int, Entity>>(); // var semversions = solutions.Select(a => new { Entity = a, Version = SemVersion.Parse((string)a["versionnumber"]) }); var latestVersion = versions.OrderByDescending(a => a.Version.Major) .ThenByDescending(a => a.Version.Minor) .ThenByDescending(a => a.Version.Build) .ThenByDescending(a => a.Version.Revision).First(); // var maxVersionConstraint = SemVersion.Parse(VersionNumber); if (latestVersion.Version > new Version(VersionNumber)) { failureMessage = "The max supported solution version number has been exceeded."; Fail(failureMessage); return(false); } else { Success("Latest solution does not exceed max version."); failureMessage = string.Empty; return(true); } } }