private static CommunityOptionsDbModel GetNewGroupsAndPages(CommunityOptionsDbModel newCommunityOptions, GroupSettingsViewModel oldSettings) { var oldCommunityOptions = new CommunityOptionsDbModel { Pages = oldSettings == null ? new List <string>() : ConvertStringToList(oldSettings.FacebookPages), // если опции не были созданы Groups = oldSettings == null ? new List <string>() : ConvertStringToList(oldSettings.FacebookGroups) }; var newGroups = new List <string>(); var newPages = new List <string>(); foreach (var group in newCommunityOptions.Groups) { if (group.Equals(string.Empty)) { continue; } if (oldCommunityOptions.Groups.Contains(group)) { continue; } newGroups.Add(group); } foreach (var page in newCommunityOptions.Pages) { if (page.Equals(string.Empty)) { continue; } if (oldCommunityOptions.Pages.Contains(page)) { continue; } newPages.Add(page); } return(new CommunityOptionsDbModel { Groups = newGroups, Pages = newPages }); }
public void UpdateSettings(GroupSettingsViewModel newSettings, IBackgroundJobService backgroundJobService) { var oldSettings = _accountSettingsManager.GetSettings(newSettings.GroupId); var winkOptions = new WinkFriendsOptionsDbModel { RetryTimeForWinkFriends = new TimeModel { Hours = newSettings.RetryTimeForWinkFriendsHour, Minutes = newSettings.RetryTimeForWinkFriendsMin, Seconds = newSettings.RetryTimeForWinkFriendsSec }, ConsiderGeoForWinkFriends = newSettings.ConsiderGeoForWinkFriends, RetryTimeForWinkFriendsFriends = new TimeModel { Hours = newSettings.RetryTimeForWinkFriendsFriendsHour, Minutes = newSettings.RetryTimeForWinkFriendsFriendsMin, Seconds = newSettings.RetryTimeForWinkFriendsFriendsSec }, ConsiderGeoForWinkFriendsFriends = newSettings.ConsiderGeoForWinkFriendsFriends, RetryTimeForWinkBack = new TimeModel { Hours = newSettings.RetryTimeForWinkBackHour, Minutes = newSettings.RetryTimeForWinkBackMin, Seconds = newSettings.RetryTimeForWinkBackSec }, }; var communityOptions = new CommunityOptionsDbModel { Groups = ConvertStringToList(newSettings.FacebookGroups), Pages = ConvertStringToList(newSettings.FacebookPages), IsJoinToAllGroups = newSettings.IsJoinToAllGroups, RetryTimeInviteTheGroups = new TimeModel { Hours = newSettings.RetryTimeInviteTheGroupsHour, Minutes = newSettings.RetryTimeInviteTheGroupsMin, Seconds = newSettings.RetryTimeInviteTheGroupsSec }, RetryTimeInviteThePages = new TimeModel { Hours = newSettings.RetryTimeInviteThePagesHour, Minutes = newSettings.RetryTimeInviteThePagesMin, Seconds = newSettings.RetryTimeInviteThePagesSec }, MaxFriendsJoinGroupInDay = newSettings.MaxFriendsJoinGroupInDay, MinFriendsJoinGroupInDay = newSettings.MinFriendsJoinGroupInDay, MaxFriendsJoinGroupInHour = newSettings.MaxFriendsJoinGroupInHour, MinFriendsJoinGroupInHour = newSettings.MinFriendsJoinGroupInHour, MaxFriendsJoinPageInDay = newSettings.MaxFriendsJoinPageInDay, MinFriendsJoinPageInDay = newSettings.MinFriendsJoinPageInDay, MaxFriendsJoinPageInHour = newSettings.MaxFriendsJoinPageInHour, MinFriendsJoinPageInHour = newSettings.MinFriendsJoinPageInHour, }; var geoOptions = new GeoOptionsDbModel { Cities = string.IsNullOrEmpty(newSettings.Cities) ? string.Empty : newSettings.Cities, Countries = string.IsNullOrEmpty(newSettings.Countries) ? string.Empty : newSettings.Countries, Gender = newSettings.Gender }; var friendsOptions = new FriendOptionsDbModel { RetryTimeConfirmFriendships = new TimeModel { Hours = newSettings.RetryTimeConfirmFriendshipsHour, Minutes = newSettings.RetryTimeConfirmFriendshipsMin, Seconds = newSettings.RetryTimeConfirmFriendshipsSec }, RetryTimeGetNewAndRecommendedFriends = new TimeModel { Hours = newSettings.RetryTimeGetNewAndRecommendedFriendsHour, Minutes = newSettings.RetryTimeGetNewAndRecommendedFriendsMin, Seconds = newSettings.RetryTimeGetNewAndRecommendedFriendsSec }, RetryTimeRefreshFriends = new TimeModel { Hours = newSettings.RetryTimeRefreshFriendsHour, Minutes = newSettings.RetryTimeRefreshFriendsMin, Seconds = newSettings.RetryTimeRefreshFriendsSec }, RetryTimeSendRequestFriendships = new TimeModel { Hours = newSettings.RetryTimeSendRequestFriendshipsHour, Minutes = newSettings.RetryTimeSendRequestFriendshipsMin, Seconds = newSettings.RetryTimeSendRequestFriendshipsSec }, AllowedRemovalPercentage = newSettings.AllowedRemovalPercentage }; var messageOptions = new MessageOptionsDbModel { GetMessagesFromThoseConnectedToMessenger = newSettings.GetMessagesFromThoseConnectedToMessenger, RetryTimeSendNewFriend = new TimeModel { Hours = newSettings.RetryTimeSendNewFriendHour, Minutes = newSettings.RetryTimeSendNewFriendMin, Seconds = newSettings.RetryTimeSendNewFriendSec }, RetryTimeSendUnanswered = new TimeModel { Hours = newSettings.RetryTimeSendUnansweredHour, Minutes = newSettings.RetryTimeSendUnansweredMin, Seconds = newSettings.RetryTimeSendUnansweredSec }, RetryTimeSendUnread = new TimeModel { Hours = newSettings.RetryTimeSendUnreadHour, Minutes = newSettings.RetryTimeSendUnreadMin, Seconds = newSettings.RetryTimeSendUnreadSec }, UnansweredDelay = newSettings.UnansweredDelay }; var limitsOptions = new LimitsOptionsDbModel { CountMaxFriends = newSettings.CountMaxFriends, CountMinFriends = newSettings.CountMinFriends }; var deleteFriendsOptions = new DeleteFriendsOptionsDbModel { DialogIsOver = new DialogIsOverModel { IsEnabled = newSettings.EnableDialogIsOver, Timer = newSettings.DialogIsOverTimer }, IsAddedToGroupsAndPages = new IsAddedToGroupsAndPagesModel { IsEnabled = newSettings.EnableIsAddedToGroupsAndPages, Timer = newSettings.IsAddedToGroupsAndPagesTimer }, IsWink = new IsWinkModel { IsEnabled = newSettings.EnableIsWink, Timer = newSettings.IsWinkTimer }, IsWinkFriendsOfFriends = new IsWinkFriendsOfFriendsModel { IsEnabled = newSettings.EnableIsWinkFriendsOfFriends, Timer = newSettings.IsWinkFriendsOfFriendsTimer }, DeletionFriendTimer = newSettings.DeletionFriendTimer }; var command = new AddOrUpdateSettingsCommand { GroupId = newSettings.GroupId, GeoOptions = geoOptions, FriendsOptions = friendsOptions, MessageOptions = messageOptions, LimitsOptions = limitsOptions, CommunityOptions = communityOptions, DeleteFriendsOptions = deleteFriendsOptions, WinkFriendsOptions = winkOptions }; new AddOrUpdateSettingsCommandHandler(new DataBaseContext()).Handle(command); var accountsThisGroup = new GetAccountsByGroupSettingsIdQueryHandler(new DataBaseContext()).Handle( new GetAccountsByGroupSettingsIdQuery { GroupSettingsId = newSettings.GroupId }); var accountsViewModel = accountsThisGroup.Select(model => new AccountViewModel { Id = model.Id, PageUrl = model.PageUrl, Login = model.Login, Password = model.Password, FacebookId = model.FacebookId, Proxy = model.Proxy, ProxyLogin = model.ProxyLogin, ProxyPassword = model.ProxyPassword, Cookie = model.Cookie.CookieString, Name = model.Name, GroupSettingsId = model.GroupSettingsId, AuthorizationDataIsFailed = model.AuthorizationDataIsFailed, ProxyDataIsFailed = model.ProxyDataIsFailed, IsDeleted = model.IsDeleted, UserAgentId = model.UserAgentId }).ToList(); var modelNewData = GetNewGroupsAndPages(communityOptions, oldSettings); foreach (var accountModel in accountsViewModel) { if (modelNewData != null) { if (modelNewData.Groups.Count != 0 || modelNewData.Pages.Count != 0) { new SaveNewSettingsCommandHandler(new DataBaseContext()).Handle(new SaveNewSettingsCommand { AccountId = accountModel.Id, CommunityOptions = modelNewData, GroupId = newSettings.GroupId }); } } var model = accountModel; var updater = new Task(() => UpdateJobsTask(backgroundJobService, model, newSettings, oldSettings)); updater.Start(); } }