public bool CreateBackgroundJob(ICreateBackgroundJob model) { var currentModel = model as CreateBackgroundJobModel; if (currentModel == null) { return(false); } var account = currentModel.Account; var isForSpy = currentModel.IsForSpy; var friend = currentModel.Friend; var checkPermissions = currentModel.CheckPermissions; var functionName = currentModel.FunctionName; var launchTime = currentModel.LaunchTime; var jobStateModel = new JobStateViewModel { AccountId = account.Id, FriendId = null, FunctionName = functionName, IsForSpy = isForSpy }; if (_requaredFunctions.All(groupFunction => groupFunction != functionName) && checkPermissions) { if (!FunctionHasPermisions(functionName, account)) { return(false); } } if (!TimeIsSet(launchTime)) { return(false); } if (JobIsRun(jobStateModel)) { return(false); } var runModel = new RunJobModel { Account = account, ForSpy = isForSpy, Friend = friend }; var runJobFunctionService = new RunJobFunctionService(); var jobId = BackgroundJob.Schedule(() => runJobFunctionService.RunService(functionName, runModel), launchTime); jobStateModel.JobId = jobId; AddJobState(jobStateModel); return(true); }
public bool CreateBackgroundJob(ICreateBackgroundJob model) { var currentModel = model as CreateBackgroundJobModel; if (currentModel == null) { return(false); } var account = currentModel.Account; var isForSpy = currentModel.IsForSpy; var friend = currentModel.Friend; var checkPermissions = currentModel.CheckPermissions; var functionName = currentModel.FunctionName; var launchTime = currentModel.LaunchTime; var jobStateModel = new JobStateViewModel { AccountId = account.Id, FriendId = null, FunctionName = functionName, IsForSpy = isForSpy }; if (checkPermissions) { if (!FunctionHasPermisions(functionName, account)) { return(false); } } if (!TimeIsSet(launchTime)) { return(false); } if (JobIsRun(jobStateModel)) { return(false); } var runModel = new RunJobModel { Account = account, ForSpy = isForSpy, Friend = friend }; string jobId = null; switch (functionName) { case FunctionName.SendMessageToNewFriends: { jobId = BackgroundJob.Schedule(() => SendMessageToNewFriendsJob.Run(runModel), launchTime); break; } case FunctionName.SendMessageToUnanswered: { jobId = BackgroundJob.Schedule(() => SendMessageToUnansweredJob.Run(runModel), launchTime); break; } case FunctionName.SendMessageToUnread: { jobId = BackgroundJob.Schedule(() => SendMessageToUnreadJob.Run(runModel), launchTime); break; } case FunctionName.RefreshFriends: { jobId = BackgroundJob.Schedule(() => RefreshFriendsJob.Run(runModel), launchTime); break; } case FunctionName.GetNewFriendsAndRecommended: { jobId = BackgroundJob.Schedule(() => GetNewFriendsAndRecommendedJob.Run(runModel), launchTime); break; } case FunctionName.ConfirmFriendship: { jobId = BackgroundJob.Schedule(() => ConfirmFriendshipJob.Run(runModel), launchTime); break; } case FunctionName.SendRequestFriendship: { jobId = BackgroundJob.Schedule(() => SendRequestFriendshipJob.Run(runModel), launchTime); break; } case FunctionName.AnalyzeFriends: { jobId = BackgroundJob.Schedule(() => SendRequestFriendshipJob.Run(runModel), launchTime); break; } case FunctionName.RefreshCookies: { jobId = BackgroundJob.Schedule(() => RefreshCookiesJob.Run(runModel), launchTime); break; } case FunctionName.JoinTheNewGroupsAndPages: { if (account.GroupSettingsId == null) { break; } var newGroups = new GroupService(new NoticeService()).GetNewSettings(account.Id, (long)account.GroupSettingsId); if (newGroups == null || newGroups.Count == 0) { break; } jobId = BackgroundJob.Schedule(() => JoinTheNewGroupsAndPagesJob.Run(runModel), launchTime); break; } case FunctionName.InviteToGroups: { jobId = BackgroundJob.Schedule(() => InviteTheNewGroupJob.Run(runModel), launchTime); break; } case FunctionName.InviteToPages: { jobId = BackgroundJob.Schedule(() => InviteTheNewPageJob.Run(runModel), launchTime); break; } case FunctionName.RemoveFromFriends: { jobId = BackgroundJob.Schedule(() => RemoveFromFriendsJob.Run(runModel), launchTime); break; } case FunctionName.Wink: { jobId = BackgroundJob.Schedule(() => WinkFriendsJob.Run(runModel), launchTime); break; } case FunctionName.WinkFriendFriends: { jobId = BackgroundJob.Schedule(() => WinkFriendsFriendsJob.Run(runModel), launchTime); break; } case FunctionName.WinkBack: { jobId = BackgroundJob.Schedule(() => WinkBackJob.Run(runModel), launchTime); break; } default: throw new ArgumentOutOfRangeException("functionName"); } jobStateModel.JobId = jobId; AddJobState(jobStateModel); return(true); }