2017年1月22日 星期日

temp

因為原來老師的架構和我自己想要的不一樣、所以做了以下修改
因為自動寄sms/email的服務基本上都需要付費才方便使用,所以我移除了那些功能
改成需要手動執行rake來新增AuditLog

  desc "Check if there are any overtime work didn't report"
  task check_overtime: :environment do 
    employees = User.where(type: nil)
    week_start = Date.today.beginning_of_week
    week_end = Date.today.end_of_week
    no_overtime_week = []
    employees.each do |employee|
      no_overtime_week = employee.posts.where(date: @week_start..@week_end)
      unless no_overtime_week.any?
        AuditLog.create!(user_id: employee.id, status: 0, start_date: week_start, end_date: week_end)
      end
    end
  end

防止同一員工同一個禮拜產生兩次auditlog

  validates :start_date, uniqueness: { scope: :user_id }

員工新增顯示沒有加班的weeks,但目前還沒有打算提供修改辦法

新增只要auditlog被新增之後,就沒辦法申請那一個禮拜的加班的限制

def check_audit_log
  user = User.find(self.user_id)
  my_audit_logs = user.audit_logs.where.not(end_date: nil)
  date = self.date
  duplicate = ""
  my_audit_logs.each do |log|
    if (log.start_date..log.end_date).include? date
      errors[:overtime] << "duplicate" 
      return
    end
  end

Written with StackEdit.


沒有留言:

張貼留言