{"id":13594876,"url":"https://github.com/bamotav/Hangfire.RecurringJobAdmin","last_synced_at":"2025-04-09T10:32:15.047Z","repository":{"id":38051340,"uuid":"208043006","full_name":"bamotav/Hangfire.RecurringJobAdmin","owner":"bamotav","description":"A dashboard to manage Hangfire's recurring jobs.","archived":false,"fork":false,"pushed_at":"2024-03-27T13:00:26.000Z","size":3751,"stargazers_count":208,"open_issues_count":29,"forks_count":56,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-04T12:16:13.672Z","etag":null,"topics":["aspnetcore","cronjob","csharp","dashboard","hacktoberfest","hangfire","job-scheduler","nuget","plugin","reflection","vue-component","vue-component-cron","vuejs"],"latest_commit_sha":null,"homepage":"https://www.nuget.org/packages/Hangfire.RecurringJobAdmin/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bamotav.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-12T12:12:09.000Z","updated_at":"2025-03-23T12:52:18.000Z","dependencies_parsed_at":"2024-05-29T12:12:48.094Z","dependency_job_id":"32242c2a-7ce7-4e5c-8330-a286395fc2a7","html_url":"https://github.com/bamotav/Hangfire.RecurringJobAdmin","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamotav%2FHangfire.RecurringJobAdmin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamotav%2FHangfire.RecurringJobAdmin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamotav%2FHangfire.RecurringJobAdmin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bamotav%2FHangfire.RecurringJobAdmin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bamotav","download_url":"https://codeload.github.com/bamotav/Hangfire.RecurringJobAdmin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248020592,"owners_count":21034459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aspnetcore","cronjob","csharp","dashboard","hacktoberfest","hangfire","job-scheduler","nuget","plugin","reflection","vue-component","vue-component-cron","vuejs"],"created_at":"2024-08-01T16:01:40.313Z","updated_at":"2025-04-09T10:32:10.499Z","avatar_url":"https://github.com/bamotav.png","language":"C#","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=KTW8JH379NXQL\u0026item_name=+\u0026currency_code=USD\u0026source=url"],"categories":["C#","C\\#"],"sub_categories":[],"readme":"# Hangfire.RecurringJobAdmin\n[![NuGet](https://buildstats.info/nuget/Hangfire.RecurringJobAdmin)](https://www.nuget.org/packages/Hangfire.RecurringJobAdmin/)\n[![Build status](https://ci.appveyor.com/api/projects/status/u2xrias2vk727beg/branch/master?svg=true)](https://ci.appveyor.com/project/bamotav/hangfire-recurringjobadmin/branch/master)\n[![Build Status](https://github.com/bamotav/Hangfire.RecurringJobAdmin/workflows/CI-HRJ/badge.svg)](https://github.com/bamotav/Hangfire.RecurringJobAdmin/actions)\n[![Official Site](https://img.shields.io/badge/site-hangfire.io-blue.svg)](http://hangfire.io)\n[![License MIT](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)\n\n\n\n\n![dashboard](Content/dashboard.png)\n\nA simple dashboard to manage Hangfire's recurring jobs.\n\nThis repo is an extension for [Hangfire](https://github.com/HangfireIO/Hangfire) based on [\"Hangfire.Recurring Job Extensions\"](https://github.com/icsharp/Hangfire.RecurringJobExtensions/) package made by vigoss, thanks for your contribution to the community. It contains the following functionalities: \n\n* We can use RecurringJobAttribute stored in database and presented in the administrator.\n\n```csharp\npublic class RecurringJobTesting\n{\n    [RecurringJob(\"*/2 * * * *\", \"China Standard Time\", \"default\", RecurringJobId = \"Check-File-Exists\")]\n    public void CheckFileExists()\n    {\n       Console.WriteLine(\"Check File Exists\");\n    }\n}\n```\n* We can use DisableConcurrentlyJobExecution, this attribute allows you to not execute a task if it is already running.\n\n```csharp\npublic class RecurringJobTesting\n{\n    [DisableConcurrentlyJobExecution(\"CheckFileExists\")]\n    public void CheckFileExists()\n    {\n       Console.WriteLine(\"Check File Exists\");\n    }\n    \n    [DisableConcurrentlyJobExecution(\"ValidateProcess\", 0, 10, \"It is not allowed to perform multiple same tasks.\")]\n    [RecurringJob(\"*/2 * * * *\", \"China Standard Time\", \"default\", RecurringJobId = \"Validate-Process\")]\n    public void ValidateProcess()\n    {\n        Console.WriteLine(\"Validate Process\");\n    }\n}\n```\n\n* We can create, edit jobs.\n\n![create](Content/create.png)\n\n* We can start, stop jobs at runtime.\n\n![jobAgent](Content/jobAgent.png)\n\n* So we can also start or stop the job using JobAgent static class.\n\n```csharp\n\n   JobAgent.StopBackgroundJob(\"Enter the Job Id\");\n   \n   JobAgent.StartBackgroundJob(\"Enter the Job Id\");\n   \n   //Get all stopped jobs:\n   var StoppedJobs = JobAgent.GetAllJobStopped();\n   \n```\n* We have a new vue component to generate cron expression, made by [@JossyDevers](https://github.com/JossyDevers).\n\n![jobAgent](Content/generatecron.png)\n\n\n## Instructions\nInstall a package from Nuget. \n```\nInstall-Package Hangfire.RecurringJobAdmin\n```\n\nThen add this in your code:\n\n## For DotNetCore  :\nfor service side:\n```csharp\nservices.AddHangfire(config =\u003e config.UseSqlServerStorage(Configuration.GetConnectionString(\"HangfireConnection\"))\n                                                 .UseRecurringJobAdmin(typeof(Startup).Assembly))\n```\n\n## For NetFramework  :\nfor startup side:\n```csharp\nGlobalConfiguration.Configuration.UseSqlServerStorage(\"HangfireConnection\").UseRecurringJobAdmin(typeof(Startup).Assembly)\n```\n\n## Credits\n * Braulio Alvarez\n \n## Donation\nIf this project help you reduce time to develop, you can give me a cup of coffee :) \n\n[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=KTW8JH379NXQL\u0026item_name=+\u0026currency_code=USD\u0026source=url)\n\n\n## License\nAuthored by: Brayan Mota (bamotav)\n\nThis project is under MIT license. You can obtain the license copy [here](https://github.com/bamotav/Hangfire.RecurringJobAdmin/blob/master/LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbamotav%2FHangfire.RecurringJobAdmin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbamotav%2FHangfire.RecurringJobAdmin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbamotav%2FHangfire.RecurringJobAdmin/lists"}