创建高级管理员/员工rota

时间:2015-10-02 16:54:04

标签: php system admin

我知道这个地方用于上传可能需要帮助的代码,但我希望你不介意帮忙,因为我不知道从哪里开始使用这段代码。您是专家,我是一个需要未来编码帮助的新手。如果有一个针对这种事情的部分,我会很乐意重新发布。

情况如下:

我正在为我的员工开始为高级管理员后端面板工作,我现在的想法是使用MySQLi数据库来创建员工rota,以便在aPanel上的表格中显示简单的日历。

现在,高级部分是工作人员可以在轮盘上发布的时间/天内点击"Clock In""Clock Out"

系统不会让工作人员Clock In,除非他们在一天中的那个时间在轮盘上。然后,我将可以访问该小组的管理部分,这样我就可以查看工作人员如果错过了几天或者迟到等等,他们的工作时间是多少......并按照记录的时钟付费给他们。小时。

也许一些额外的功能是他们在轮班结束时自动计时或者系统会记录加班等等?

我不知道我将如何创建这样的系统,或者如果它实际上是可能的,那么如果有人可能有任何建议/提示/示例这样的想法,我将不胜感激任何帮助!

一切顺利!

1 个答案:

答案 0 :(得分:2)

您的系统必须包含几个部分:

  1. 数据库存储 - 提供系统所需的所有必要信息,工作人员时间表,时钟表条目,用户信息等。听起来你已经有了这个,但可能需要为你的目的进行一些调整。

  2. 人员分配/管理界面 - 允许管理员或具有适当访问权限的人员为员工分配时间表,向系统添加新员工等的系统

  3. Timeclock Frontend - 工作人员会使用此功能登录查看他们的日程安排,并进入/退出。

  4. (可能)自动监控系统 - 如果您希望系统自动监控活动员工,并在计划启动时将其计时,您将需要一个定期任务,一个每X运行一次的脚本分钟和时间表那些工作人员需要。

  5. 这不是一个快速而简单的项目,但它也不是很复杂。您需要避免的主要缺陷是自己编码整个事物的诱惑。一开始看起来好主意,你只需要一些硬编码的页面,对吗?但请相信我,这个过程总是会在以后的主要问题上结束。找到一个可以基于您的应用程序的框架。要学习更多,但您可以更专注于构建应用程序,而不是重新发明轮子。

    对于PHP,我强烈推荐Symfony。它使用Doctrine作为它的ORM,这将使处理数据交互变得更加容易,并Twig Templating,这远远优于直接混合PHP / HTML。 Symfony有很好的文档和一些教程。 (以及一个活动的Stack Overflow标签。)

    无论您做出何种选择,最好的办法是选择一个基于您的应用程序的框架,它将使所有众多的小设计决策变得更加容易。 (并且对于任何广泛使用的框架而言,更不容易出错。)

    如果没有围绕它们的系统,您的个人问题有点过于模糊,无法直接回答。不过,我会尽力给他们一些建议。

      

    我正在为我的员工开始为高级管理员后端面板工作,我现在的想法是使用MySQLi数据库来创建员工rota,以便在aPanel上的表格中显示简单的日历。

    您可能需要查看Full Calendar,这是一个不错的可自定义JS日历。

      

    现在,高级部分是工作人员将能够点击" Clock In"或"时钟输出"在时间/日期间,他们在rota上发行。

    当员工登录应用程序时,应用程序将加载该员工的计划。如果他们有当前(或即将到来)的分配,则显示Clock In表单。在提交时,Clock In窗口会将Employee状态更改为Clocked In,并将时间戳插入与Employee关联的Timeclock Logs。如果员工当前是Clocked In,而是显示Clock Out表单(可能带有移位备注),那就完全相同,只将状态切换为Clocked Out。

      

    系统不会让工作人员Clock In,除非他们在一天中的那个时间在rota上。

    在提交时钟表格后,检查这些事情相当容易。如果他们还没有进入Clock In,则抛出一个错误。 (注意,永远不要假设提交前的验证是足够的。即,不要依赖于Clock-In表单只会在员工可以进入时显示的事实。

      

    然后,我将可以访问该小组的管理部分,这样我就可以查看工作人员如果错过了几天或者迟到等等,他们的工作时间是多少......并支付给他们的费用以小时为单位录制。

    在管理部分,您可以通过获取给定员工在给定日期范围内的所有时钟日志,工作小时总数以及与预期计划进行比较来创建报告。

      

    也许一些额外的功能是他们在轮班结束时自动计时或者系统会记录加班等等?

    让脚本每X分钟运行一次(较低的时间将具有更高的分辨率,但消耗更多的资源)作为服务器上的计划任务,检查每个Clocked In员工,并选择那些不再应该进入的人员。如果您正在使用Symfony,我建议您为该作业创建Custom Console Command

    希望能让你开始。如果您遇到任何更具体的问题,请随时回来。