You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.5 KiB
67 lines
1.5 KiB
class CalendarController < ApplicationController
|
|
before_action :authenticate_user!
|
|
|
|
def month
|
|
@year = params[:year].to_i
|
|
@month = params[:month].to_i
|
|
|
|
while @month < 1
|
|
@month += 12
|
|
@year -= 1
|
|
end
|
|
while @month > 12
|
|
@month -= 12
|
|
@year += 1
|
|
end
|
|
|
|
first_of_month = Date.new(@year, @month, 1)
|
|
last_of_month = first_of_month.end_of_month
|
|
|
|
start_date = first_of_month - (first_of_month.cwday - 1)
|
|
end_date = last_of_month + (7 - last_of_month.cwday)
|
|
|
|
@filter_typ = params[:typ]
|
|
@filter_art = params[:art]
|
|
|
|
entries_scope = current_user.entries.where(date: start_date..end_date)
|
|
entries_scope = entries_scope.where(praktikums_typ: @filter_typ) if @filter_typ.present?
|
|
entries_scope = entries_scope.where(entry_art: @filter_art) if @filter_art.present?
|
|
|
|
@entries = entries_scope.group_by { |e| e.date.to_date }
|
|
|
|
@days = (start_date..end_date).to_a
|
|
end
|
|
|
|
def week
|
|
@year = params[:year].to_i
|
|
@week = params[:week].to_i
|
|
|
|
while @month < 1
|
|
@month += 12
|
|
@year -= 1
|
|
end
|
|
while @month > 12
|
|
@month -= 12
|
|
@year += 1
|
|
end
|
|
|
|
first = Date.commercial(@year, @week, 1)
|
|
last = Date.commercial(@year, @week, 7)
|
|
|
|
|
|
|
|
@filter_typ = params[:typ]
|
|
@filter_art = params[:art]
|
|
|
|
@entries = current_user.entries
|
|
.where(date: first..last)
|
|
@entries = @entries.where(praktikums_typ: @filter_typ) if @filter_typ.present?
|
|
@entries = @entries.where(entry_art: @filter_art) if @filter_art.present?
|
|
@entries = @entries.group_by{ |e| e.date.to_date }
|
|
|
|
|
|
|
|
|
|
@days = (first..last).to_a
|
|
end
|
|
end
|