Commit b041836a by Tấn Trần Thanh

fix comment and add input select date

parent b571dfef
Pipeline #1581 failed with stages
in 0 seconds
......@@ -2,8 +2,7 @@ require 'csv'
class WorkflowReportController < ApplicationController
before_action :authorize_global
before_action :require_xhr_request, only: :export
LEADER_IDS = [172, 229, 271, 142, 6]
before_action :require_xhr_request, only: %i[export show_daily_report]
def index
@team_options = $workflow_report_config['teams'].map { |team| team.keys() }
......@@ -14,20 +13,21 @@ class WorkflowReportController < ApplicationController
end
def show_daily_report
date = params[:date].split('-')
project_id = Project.find_by(name: params[:team]).id
project_ids = Project.visible.active.where(parent_id: project_id).pluck(:id).push(project_id)
users_by_role = Project.find(project_id).users_by_role
leader_ids = User.all.where(admin: 1).pluck(:id)
result = []
users_by_role.each { |key, _value| users_by_role.delete(key) if key.is_a?(Role) && (key.name == 'Manager' || key.name == 'JP' || key.name == 'TeamLead') }
users_by_role.each { |key, _value| users_by_role.delete(key) if key.is_a?(Role) && key.name.in?(%w[Manager JP TeamLead]) }
users_by_role.keys.each do |role|
users_by_role[role].each do |u|
if !LEADER_IDS.include?(u.id)
result << { id: u.id, fullname: "#{u.firstname} #{u.lastname}" }
end
result << { id: u.id, fullname: "#{u.firstname} #{u.lastname}" } unless leader_ids.include?(u.id)
end
end
report = {}
result.each do |item|
report[item[:fullname]] = WorkflowReportTimeEntries.query_time_entry(item[:id])
report[item[:fullname]] = WorkflowReportTimeEntries.query_time_entry(item[:id], date[0].to_i, date[1].to_i, date[2].to_i, project_ids)
end
respond_to do |format|
......
class WorkflowReportTimeEntries < TimeEntry
JP_TIME_ZONE = 9
scope :query_time_entry, ->(user_id) {
where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", user_id, DateTime.current.beginning_of_day - JP_TIME_ZONE.hours, DateTime.current.end_of_day - JP_TIME_ZONE.hours).
scope :query_time_entry, ->(user_id, year, month, day, project_ids) {
where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", user_id, DateTime.new(year, month, day).beginning_of_day - JP_TIME_ZONE.hours, DateTime.new(year, month, day).end_of_day - JP_TIME_ZONE.hours).
where(projects: {id: project_ids}).
joins(:activity, :project).
references(:issue => [:tracker, :status]).
includes(:issue => [:tracker, :status, :assigned_to, :priority]).
......
- display_hour = display_hour.to_boolean if display_hour.is_a?(String)
p = "*Daily Report #{Date.current.strftime("%Y-%m-%d")}*"
- display_hour = ActiveRecord::Type::Boolean.new.type_cast_from_user(display_hour)
p = "Project: #{params[:team]}"
p = "*Daily Report #{params[:date]}*"
- report.each_with_index do |(username, entries), index|
- total_time = entries.reduce(0) { |acc, entrie| acc + entrie.hours }
......
......@@ -12,6 +12,9 @@ fieldset.box.tabular
= label :team, 'Team'
= select_tag :team, options_for_select(@team_options), { prompt: "Select team" }
p
= label :team, 'Date'
= date_field_tag :date, Date.current
p
= label :display_hour, 'Display hour'
= check_box_tag :display_hour, '1', true
= submit_tag 'export', id: 'export'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment