Esempio n. 1
0
        /// <summary>
        /// Обновляет свойства ключевых фраз.
        /// </summary>
        /// <param name="projects"></param>
        /// <returns></returns>

        public int UpdateKeywordsProperties(IEnumerable <XmlProject> projects)
        {
            var syncGroupPair = GetSyncGroupsPair(projects);

            int counter = 0;

            foreach (var groupPair in syncGroupPair)
            {
                var pairs = SyncHelper.GetItemsForUpdate(
                    groupPair.Item1.Keywords,
                    groupPair.Item2.Keywords,
                    w => GetPhraseKey(w.Phrase),
                    w => GetPhraseKey(w.Phrase));

                foreach (var wordPair in pairs)
                {
                    var apiKeyword = wordPair.Item2;

                    if (GetSiteKey(wordPair.Item1.TargetUrl) != GetSiteKey(apiKeyword.Target))
                    {
                        var request = _requestBuilder.GetUpdateKeywordTargetRequest(
                            apiKeyword.Id, wordPair.Item1.TargetUrl);

                        var res = _client.GetBoolResult(request);

                        // BUG: При установке таргета результат возвращает всегда false
                        apiKeyword.Target = wordPair.Item1.TargetUrl;
                        ++counter;
                    }
                }
            }

            return(counter);
        }
Esempio n. 2
0
        /// <summary>
        /// Обновляет свойства проектов.
        /// </summary>
        /// <param name="projects"></param>
        /// <returns></returns>
        public int UpdateProjectsProperties(IEnumerable <XmlProject> projects)
        {
            var updateProjects = SyncHelper.GetItemsForUpdate(
                projects, _apiProjects, p => GetSiteKey(p.Site), p => GetSiteKey(p.Site));

            int counter = 0;

            foreach (var pair in updateProjects)
            {
                // включить или выключить (перенести в архив) проект
                var stateOn = (pair.Item1.Enabled) ? 0 : -1;

                var apiProject = pair.Item2;

                if (stateOn != apiProject.On)
                {
                    var request = _requestBuilder.GetUpdateProjectRequest(
                        apiProject.Id, stateOn);

                    var res = _client.GetBoolResult(request);

                    if (res)
                    {
                        apiProject.On = stateOn;
                        ++counter;
                    }
                }
            }

            return(counter);
        }
Esempio n. 3
0
        private IEnumerable <SyncObject <XmlKeywordGroup, SyncKeywordGroup> > GetSyncProjectGroups(
            IEnumerable <XmlProject> projects)
        {
            var updateProjects = SyncHelper.GetItemsForUpdate(
                projects, _apiProjects, p => GetSiteKey(p.Site), p => GetSiteKey(p.Site));

            foreach (var pair in updateProjects)
            {
                var xmlProject = pair.Item1;
                var apiProject = pair.Item2;

                var projectGroups = _apiGroups
                                    .Where(g => g.ProjectId == apiProject.Id)
                                    .ToList();

                yield return(new SyncObject <XmlKeywordGroup, SyncKeywordGroup>(
                                 pair.Item2.Id, pair.Item1.KeywordGroups, projectGroups));
            }
        }
Esempio n. 4
0
        private IEnumerable <Tuple <XmlKeywordGroup, SyncKeywordGroup> > GetSyncGroupsPair(
            IEnumerable <XmlProject> projects)
        {
            var syncGroups = GetSyncProjectGroups(projects);

            foreach (var sync in syncGroups)
            {
                var updateGroups = SyncHelper.GetItemsForUpdate(
                    sync.XmlObjects,
                    sync.ApiObjects,
                    g => GetGroupNameKey(g.Name),
                    g => GetGroupNameKey(g.GroupName));

                foreach (var pair in updateGroups)
                {
                    yield return(pair);
                }
            }
        }