Exemplo n.º 1
0
        /// <summary>
        /// Skips the received release.
        /// </summary>
        /// <param name="releaseID">Release ID to skip.</param>
        public static void SkipRelease(int releaseID)
        {
            // Get AddIn configuration
            AddInConfig addInConfig = ConfigurationHelper.GetAddInConfig();

            // Check if the release was not already skipped
            if (addInConfig.SkippedReleases.Contains(releaseID) == false)
            {
                // Add the release to the skipped releases collection
                addInConfig.SkippedReleases.Add(releaseID);

                // Save AddIn configuration
                ConfigurationHelper.SaveAddInConfig(addInConfig);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Marks this release as rated.
        /// </summary>
        public static void MarkReleaseAsRated()
        {
            try
            {
                AddInConfig addInConfig = ConfigurationHelper.GetAddInConfig();

                addInConfig.IsReleaseRated = true;

                ConfigurationHelper.SaveAddInConfig(addInConfig);
            }
            catch (Exception ex)
            {
                LogManager.LogError(ex);
                throw;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Saves the received EntitiesToDTOs AddIn general configuration.
        /// </summary>
        /// <param name="addInConfig">Configuration to save.</param>
        public static void SaveAddInConfig(AddInConfig addInConfig)
        {
            // Update config
            ConfigurationHelper.AddInConfig = addInConfig;

            // Generate general configuration file
            var configDoc = new XDocument();

            configDoc.Add(
                new XElement(AddInConfigNodes.Root,
                             new XElement(AddInConfigNodes.Updates,
                                          new XAttribute(AddInConfigNodes.UpdatesAttrStable, addInConfig.ReleaseStatusFilter.Contains(ReleaseStatus.Stable)),
                                          new XAttribute(AddInConfigNodes.UpdatesAttrBeta, addInConfig.ReleaseStatusFilter.Contains(ReleaseStatus.Beta)),
                                          new XElement(AddInConfigNodes.Skipped)
                                          ),
                             new XElement(AddInConfigNodes.RateInfo,
                                          new XAttribute(AddInConfigNodes.RateInfoAttrReleaseID, addInConfig.RateReleaseID),
                                          new XAttribute(AddInConfigNodes.RateInfoAttrIsRated, addInConfig.IsReleaseRated),
                                          new XAttribute(AddInConfigNodes.RateInfoAttrLastAskedDate, addInConfig.LastRateAskedDate.ToString("yyyyMMdd"))
                                          )
                             )
                );

            if (addInConfig.SkippedReleases.Count > 0)
            {
                // Get skipped releases node
                XElement skippedReleasesNode = configDoc.Descendants(AddInConfigNodes.Skipped).First();

                // Add skipped releases
                foreach (int releaseID in addInConfig.SkippedReleases)
                {
                    skippedReleasesNode.Add(new XElement(AddInConfigNodes.Release,
                                                         new XAttribute(AddInConfigNodes.ReleaseAttrID, releaseID)));
                }
            }

            // Save general configuration file
            configDoc.Save(ConfigurationHelper.AddInConfigFilePath);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Checks if a release rate is pending. If a rate is pending, it updates the LastRateAskedDate of the
        /// AddIn config assuming the user will be asked to rate the release.
        /// </summary>
        /// <returns></returns>
        public static bool IsReleaseRatePending()
        {
            try
            {
                bool isRatePending = false;

                AddInConfig addInConfig = ConfigurationHelper.GetAddInConfig();

                if (addInConfig.RateReleaseID != AssemblyHelper.VersionInfo.ReleaseID)
                {
                    // User has changed the AddIn version
                    addInConfig.RateReleaseID     = AssemblyHelper.VersionInfo.ReleaseID;
                    addInConfig.IsReleaseRated    = false;
                    addInConfig.LastRateAskedDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

                    ConfigurationHelper.SaveAddInConfig(addInConfig);
                }

                if (addInConfig.IsReleaseRated == false)
                {
                    // Have we waited to ask again?
                    if ((DateTime.Now - addInConfig.LastRateAskedDate).TotalDays >= 1)
                    {
                        isRatePending = true;

                        addInConfig.LastRateAskedDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);

                        ConfigurationHelper.SaveAddInConfig(addInConfig);
                    }
                }

                return(isRatePending);
            }
            catch (Exception ex)
            {
                LogManager.LogError(ex);
                throw;
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Gets the EntitiesToDTOs AddIn general configuration.
        /// </summary>
        /// <returns></returns>
        public static AddInConfig GetAddInConfig(bool forceLoad = false)
        {
            if (forceLoad == true)
            {
                ConfigurationHelper.AddInConfig = new AddInConfig();

                if (File.Exists(ConfigurationHelper.AddInConfigFilePath) == false)
                {
                    // Set default configuration
                    ConfigurationHelper.AddInConfig.ReleaseStatusFilter.Add(ReleaseStatus.Stable);
                    ConfigurationHelper.AddInConfig.ReleaseStatusFilter.Add(ReleaseStatus.Beta);
                    ConfigurationHelper.AddInConfig.RateReleaseID = AssemblyHelper.VersionInfo.ReleaseID;

                    ConfigurationHelper.SaveAddInConfig(ConfigurationHelper.AddInConfig);
                }
                else
                {
                    XDocument configDoc = XDocument.Load(ConfigurationHelper.AddInConfigFilePath);

                    XElement updatesNode = configDoc.Descendants(AddInConfigNodes.Updates).First();

                    // Set Stable release status filter if checked
                    if (Convert.ToBoolean(updatesNode.Attribute(AddInConfigNodes.UpdatesAttrStable).Value) == true)
                    {
                        ConfigurationHelper.AddInConfig.ReleaseStatusFilter.Add(ReleaseStatus.Stable);
                    }

                    // Set Beta release status filter if checked
                    if (Convert.ToBoolean(updatesNode.Attribute(AddInConfigNodes.UpdatesAttrBeta).Value) == true)
                    {
                        ConfigurationHelper.AddInConfig.ReleaseStatusFilter.Add(ReleaseStatus.Beta);
                    }

                    // Get skipped releases
                    IEnumerable <XElement> skippedReleases = updatesNode.Descendants(AddInConfigNodes.Release);
                    foreach (XElement release in skippedReleases)
                    {
                        ConfigurationHelper.AddInConfig.SkippedReleases.Add(
                            Convert.ToInt32(release.Attribute(AddInConfigNodes.ReleaseAttrID).Value));
                    }

                    XElement rateInfoNode = configDoc.Descendants(AddInConfigNodes.RateInfo).FirstOrDefault();
                    if (rateInfoNode == null)
                    {
                        // Old AddIn config where rate info node is missing
                        ConfigurationHelper.AddInConfig.RateReleaseID = AssemblyHelper.VersionInfo.ReleaseID;

                        ConfigurationHelper.SaveAddInConfig(ConfigurationHelper.AddInConfig);
                    }
                    else
                    {
                        ConfigurationHelper.AddInConfig.RateReleaseID = Convert.ToInt32(
                            rateInfoNode.Attribute(AddInConfigNodes.RateInfoAttrReleaseID).Value);

                        ConfigurationHelper.AddInConfig.IsReleaseRated =
                            (rateInfoNode.Attribute(AddInConfigNodes.RateInfoAttrIsRated).Value == Resources.XmlBoolTrue);

                        string lastRateAskedDateValue = rateInfoNode.Attribute(AddInConfigNodes.RateInfoAttrLastAskedDate).Value;

                        if (lastRateAskedDateValue.Length > 8)
                        {
                            // Correct previous versions invalid last rate asked date.
                            lastRateAskedDateValue = DateTime.Now.ToString("yyyyMMdd");

                            ConfigurationHelper.SaveAddInConfig(ConfigurationHelper.AddInConfig);
                        }

                        int lastRateAskedYear  = Convert.ToInt32(lastRateAskedDateValue.Substring(0, 4));
                        int lastRateAskedMonth = Convert.ToInt32(lastRateAskedDateValue.Substring(4, 2));
                        int lastRateAskedDay   = Convert.ToInt32(lastRateAskedDateValue.Substring(6, 2));

                        ConfigurationHelper.AddInConfig.LastRateAskedDate =
                            new DateTime(lastRateAskedYear, lastRateAskedMonth, lastRateAskedDay);
                    }
                }
            }

            // Return general configuration
            return(ConfigurationHelper.AddInConfig);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Checks if a new release exists based on current version.
        /// </summary>
        /// <param name="statusFilter">Release status filter.</param>
        /// <returns></returns>
        public static Release CheckNewRelease(List <ReleaseStatus> statusFilter)
        {
            try
            {
                // Get current version
                string currentVersion = AssemblyHelper.Version;

                // Get available releases document
                XDocument xdoc = XDocument.Load(Resources.ReleasesURL);

                // Transform release status filter to string
                IEnumerable <string> statusFilterValues = statusFilter.Select(s => s.ToString().ToLower());

                // Get releases filtered by release status
                IEnumerable <XElement> releases = xdoc.Descendants(ReleasesNodes.Release)
                                                  .Where(n => statusFilterValues.Contains(
                                                             n.Attribute(ReleasesNodes.ReleaseAttrStatus).Value.ToLower())
                                                         );

                // Get latest release node
                XElement latestReleaseNode = releases.LastOrDefault();

                if (latestReleaseNode == null)
                {
                    // No releases using the specified status filter
                    return(null);
                }

                // Get latest release ID
                int latestReleaseID = Convert.ToInt32(latestReleaseNode
                                                      .Attribute(ReleasesNodes.ReleaseAttrID).Value);

                // Check if it is a newer release
                if (latestReleaseID <= AssemblyHelper.VersionInfo.ReleaseID)
                {
                    // Same or old release
                    return(null);
                }
                else
                {
                    // Get AddIn configuration
                    AddInConfig addInConfig = ConfigurationHelper.GetAddInConfig();

                    // Check if the new release has not been previously skipped by the user
                    if (addInConfig.SkippedReleases.Contains(latestReleaseID) == true)
                    {
                        // The release is newer but was previously skipped by the user
                        return(null);
                    }
                    else
                    {
                        // New release
                        return(new Release()
                        {
                            ReleaseID = Convert.ToInt32(latestReleaseNode.Attribute(ReleasesNodes.ReleaseAttrID).Value),

                            Version = latestReleaseNode.Attribute(ReleasesNodes.ReleaseAttrVersion).Value,

                            Status = UpdateHelper.GetReleaseStatusFromText(
                                latestReleaseNode.Attribute(ReleasesNodes.ReleaseAttrID).Value),

                            Link = latestReleaseNode.Descendants(ReleasesNodes.Link).First()
                                   .Attribute(ReleasesNodes.LinkAttrHref).Value,

                            Changes = UpdateHelper.GetChanges(latestReleaseNode)
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                LogManager.LogError(ex);

                return(null);
            }
        }