# frozen_string_literal: true

module Dashboard
  class CalendarsController < ApplicationController
    include IconsHelper
    include MyModulesHelper

    def show
      date = params[:date].in_time_zone(current_user.time_zone)
      start_date = date.at_beginning_of_month.utc - 8.days
      end_date = date.at_end_of_month.utc + 15.days
      due_dates = current_user.my_modules.active.uncomplete
                              .joins(experiment: :project)
                              .where(experiments: { archived: false })
                              .where(projects: { archived: false })
                              .where('my_modules.due_date > ? AND my_modules.due_date < ?', start_date, end_date)
                              .joins(:protocols).where(protocols: { team_id: current_team.id })
                              .pluck(:due_date)
      render json: { events: due_dates.map { |i| { date: i.to_date } } }
    end

    def day
      date = params[:date].in_time_zone(current_user.time_zone)
      start_date = date.utc
      end_date = date.end_of_day.utc
      my_modules = current_user.my_modules.active.uncomplete
                               .joins(experiment: :project)
                               .where(experiments: { archived: false })
                               .where(projects: { archived: false })
                               .where('my_modules.due_date > ? AND my_modules.due_date < ?', start_date, end_date)
                               .where(projects: { team_id: current_team.id })
      render json: {
        html: render_to_string(partial: 'shared/my_modules_list_partial.html.erb', locals: {
                                 my_modules: my_modules
                               })
      }
    end
  end
end