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' ...@@ -2,8 +2,7 @@ require 'csv'
class WorkflowReportController < ApplicationController class WorkflowReportController < ApplicationController
before_action :authorize_global before_action :authorize_global
before_action :require_xhr_request, only: :export before_action :require_xhr_request, only: %i[export show_daily_report]
LEADER_IDS = [172, 229, 271, 142, 6]
def index def index
@team_options = $workflow_report_config['teams'].map { |team| team.keys() } @team_options = $workflow_report_config['teams'].map { |team| team.keys() }
...@@ -14,20 +13,21 @@ class WorkflowReportController < ApplicationController ...@@ -14,20 +13,21 @@ class WorkflowReportController < ApplicationController
end end
def show_daily_report def show_daily_report
date = params[:date].split('-')
project_id = Project.find_by(name: params[:team]).id 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 users_by_role = Project.find(project_id).users_by_role
leader_ids = User.all.where(admin: 1).pluck(:id)
result = [] 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.keys.each do |role|
users_by_role[role].each do |u| users_by_role[role].each do |u|
if !LEADER_IDS.include?(u.id) result << { id: u.id, fullname: "#{u.firstname} #{u.lastname}" } unless leader_ids.include?(u.id)
result << { id: u.id, fullname: "#{u.firstname} #{u.lastname}" }
end
end end
end end
report = {} report = {}
result.each do |item| 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 end
respond_to do |format| respond_to do |format|
......
class WorkflowReportTimeEntries < TimeEntry class WorkflowReportTimeEntries < TimeEntry
JP_TIME_ZONE = 9 JP_TIME_ZONE = 9
scope :query_time_entry, ->(user_id) { 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.current.beginning_of_day - JP_TIME_ZONE.hours, DateTime.current.end_of_day - JP_TIME_ZONE.hours). 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). joins(:activity, :project).
references(:issue => [:tracker, :status]). references(:issue => [:tracker, :status]).
includes(:issue => [:tracker, :status, :assigned_to, :priority]). includes(:issue => [:tracker, :status, :assigned_to, :priority]).
......
- display_hour = display_hour.to_boolean if display_hour.is_a?(String) - display_hour = ActiveRecord::Type::Boolean.new.type_cast_from_user(display_hour)
p = "Project: #{params[:team]}"
p = "*Daily Report #{Date.current.strftime("%Y-%m-%d")}*" p = "*Daily Report #{params[:date]}*"
- report.each_with_index do |(username, entries), index| - report.each_with_index do |(username, entries), index|
- total_time = entries.reduce(0) { |acc, entrie| acc + entrie.hours } - total_time = entries.reduce(0) { |acc, entrie| acc + entrie.hours }
......
...@@ -12,6 +12,9 @@ fieldset.box.tabular ...@@ -12,6 +12,9 @@ fieldset.box.tabular
= label :team, 'Team' = label :team, 'Team'
= select_tag :team, options_for_select(@team_options), { prompt: "Select team" } = select_tag :team, options_for_select(@team_options), { prompt: "Select team" }
p p
= label :team, 'Date'
= date_field_tag :date, Date.current
p
= label :display_hour, 'Display hour' = label :display_hour, 'Display hour'
= check_box_tag :display_hour, '1', true = check_box_tag :display_hour, '1', true
= submit_tag 'export', id: 'export' = 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