Guest User

Untitled

a guest
Apr 25th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. class ActivitiesController < ApplicationController
  2. helper :sparklines # sparklines helps with flash graphs
  3. before_filter :authorize # force authorisation
  4. layout "main", :except => :graph_xml # graph_xml is loaded only by AJAX, no layout needed
  5.  
  6. require 'params_filter'
  7. include ParamsFilter
  8.  
  9.  
  10. def index
  11. list
  12. render :action => 'list'
  13. end
  14.  
  15.  
  16. def search
  17. case params[:commit]
  18. when "Search"
  19. list
  20. render :action => 'list'
  21. when "Export to CSV"
  22. report
  23. when "Generate graph"
  24. graph
  25. render :action => 'graph'
  26. else
  27. redirect_to :action => 'list'
  28. end
  29. end
  30.  
  31. def list
  32. if params[:search] or session[:month] or session[:year]
  33.  
  34. prepare_search_dates
  35.  
  36.  
  37. @client_id = Project.find(params[:search][:project_id]).client_id unless params[:search][:project_id].blank?
  38. @invoices = @client_id && Invoice.find_all_by_client_id_and_is_issued(@client_id, false, :order => "created_at DESC")
  39.  
  40. @activities = Activity.list(params[:search])
  41. else
  42.  
  43. @activities = Activity.list({}, {:page => params[:page]})
  44. end
  45. end
  46.  
  47.  
  48. def show
  49. if ( @activity = Activity.find(params[:id]) ).nil?
  50. flash[:notice] = "No such activity"
  51. redirect_to :action => :index
  52. end
  53. end
  54.  
  55.  
  56. def edit
  57. begin
  58. @activity = Activity.find(params[:id])
  59. @projects = Project.find(:all)
  60. rescue
  61. flash[:notice] = "No such activity"
  62. redirect_to :action => :index
  63. else
  64. @selected = {'project_id' => ''}
  65. if (@activity.project)
  66. @selected['project_id']=@activity.project.id.to_i
  67. end
  68. end
  69. end
  70.  
  71.  
  72. def update
  73. begin
  74. @activity = Activity.find(params[:id])
  75. @projects = Project.find(:all)
  76. rescue
  77. flash[:notice] = "No such activity"
  78. redirect_to :action => :index
  79. else
  80. @selected = {'project_id' => ''}
  81. if (@activity.project)
  82. @selected['project_id']=@activity.project.id.to_i
  83. end
  84. params[:activity]['minutes']= Activity.convert_duration(params[:activity]['minutes'])
  85. if @activity.update_attributes(params[:activity])
  86. flash[:notice] = 'Activity has been successfully updated'
  87. redirect_to :action => 'show', :id => @activity
  88. else
  89. render :action => 'edit'
  90. end
  91. end
  92. end
  93.  
  94. def destroy
  95. # Activity.find(params[:id]).destroy
  96. redirect_to :action => 'list'
  97. end
  98.  
  99.  
  100. def graph
  101. prepare_search_dates
  102. @activities = Activity.for_graph( params[:search] )[:activities]
  103. session[:graph] = params[:search]
  104. end
  105.  
  106.  
  107. def graph_xml
  108. params[:search] = session[:graph]
  109. session[:graph] = nil
  110.  
  111. prepare_search_dates
  112. query_results = Activity.for_graph( params[:search] )
  113.  
  114. @activities = query_results[:activities]
  115. @grouped_roles = query_results[:grouped_roles]
  116. @weeks = query_results[:weeks]
  117. @years = query_results[:years]
  118.  
  119. end
  120.  
  121.  
  122. def report
  123. prepare_search_dates
  124. activities = Activity.list( params[:search] )
  125.  
  126. require 'csv'
  127.  
  128. report = StringIO.new
  129. minutes = 0
  130. ::CSV::Writer.generate(report, ',') do |csv|
  131. header = ["Name", "Login", "Role", "Date", "Minutes"]
  132. header << "Comments" if params[:search] and params[:search][:details]
  133. csv << header
  134. activities.each do |activity|
  135. minutes += activity.minutes
  136. data = [activity.project.name, activity.user.login, activity.user.role.name, activity.date, activity.minutes]
  137. data << activity.comments if params[:search] and params[:search][:details]
  138. csv << data
  139. end
  140. csv << ["Sum", minutes]
  141. end
  142.  
  143. report.rewind
  144. send_data(report.read,
  145. :type => 'text/csv; charset=utf-8; header=present',
  146. :filename => 'report.csv')
  147. end
  148.  
  149.  
  150.  
  151. def show_activity_data
  152. @activity = Activity.find(params[:id])
  153. render :layout => false
  154. end
  155.  
  156. end
Add Comment
Please, Sign In to add comment