/// <summary> /// Удаляет лишние проекты. /// </summary> /// <param name="projects"></param> /// <returns></returns> public int DeleteGroups(IEnumerable <XmlProject> projects) { var syncProjects = GetSyncProjectGroups(projects); int counter = 0; foreach (var sync in syncProjects) { var dropGroups = SyncHelper.GetItemsForDelete( sync.XmlObjects, sync.ApiObjects, g => GetGroupNameKey(g.Name), g => GetGroupNameKey(g.GroupName)); foreach (var group in dropGroups) { var request = _requestBuilder.GetDeleteKeywordGroupRequest( sync.ParentId, group.Id); var res = _client.GetBoolResult(request); if (res) { _apiGroups.Remove(group); ++counter; } } } return(counter); }
/// <summary> /// Удаляет лишние ключевые фразы. /// </summary> /// <param name="projects"></param> /// <returns></returns> public int DeleteKeywords(IEnumerable <XmlProject> projects) { var syncGroupPair = GetSyncGroupsPair(projects); int counter = 0; foreach (var groupPair in syncGroupPair) { var dropWords = SyncHelper.GetItemsForDelete( groupPair.Item1.Keywords, groupPair.Item2.Keywords, w => GetPhraseKey(w.Phrase), w => GetPhraseKey(w.Phrase)) .ToList(); foreach (var word in dropWords) { var request = _requestBuilder.GetDeleteKeywordRequest(word.Id); var res = _client.GetBoolResult(request); if (res) { groupPair.Item2.RemoveKeyword(word); ++counter; } } } return(counter); }
/// <summary> /// Удаляет лишние проекты. /// </summary> /// <param name="projects"></param> /// <returns></returns> public int DeleteProjects(IEnumerable <XmlProject> projects) { var dropProjects = SyncHelper.GetItemsForDelete( projects, _apiProjects, p => GetSiteKey(p.Site), p => GetSiteKey(p.Site)) .ToList(); int counter = 0; foreach (var proj in dropProjects) { var request = _requestBuilder.GetDeleteProjectRequest(proj.Id); var res = _client.GetBoolResult(request); if (res) { _apiGroups.RemoveAll(g => g.ProjectId == proj.Id); _apiProjects.Remove(proj); ++counter; } } return(counter); }