mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-29 18:22:53 +00:00
* refactor: use grid instead of flex * refactor: let the parent layout decide the spacing * feat: add a separate date-range component * refactor: use new date-range component * fix: destructure all options * refactor: separate group by component * refactor: better handle group by data * fix: defaul group by * refactor: variable naming * refactor: use DATE_RANGE_OPTIONS directly * chore: update platform in gemfile.lock * refactor: trigger fetch on filter change * refactor: remove redundant method * refactor: simplify methods and emitting * refactor: simplify filter logic * refactor: simplify fetching * refactor: imports * refactor: prop name * refactor: CSAT response to use new APIs * refactor: use common filter event * refactor: use computed value for validGroupBy * refactor: better function names * refactor: rename prop * refactor: remove redundant props * refactor: separate agents filter component * feat: add labels filter * feat: add inboxes filter * fix: event * refactor: send label and inbox along with request payload * feat: add inbox filter * feat: add inbox to download * refactor: use request payload from computed property * refactor: params * feat: add team to csat filters * feat: add team to csat filters * feat: add filter for rating * feat: reverse options * feat: add labels for ratings and translations * feat: update translation * fix: margin and spacing * fix: trailing whitespace * feat: add tests for filters * chore: move files * feat: add try catch with alerts * feat: update import * fix: imports * Updates broken imports --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com>
53 lines
1.9 KiB
Ruby
53 lines
1.9 KiB
Ruby
class Api::V1::Accounts::CsatSurveyResponsesController < Api::V1::Accounts::BaseController
|
|
include Sift
|
|
include DateRangeHelper
|
|
|
|
RESULTS_PER_PAGE = 25
|
|
|
|
before_action :check_authorization
|
|
before_action :set_csat_survey_responses, only: [:index, :metrics, :download]
|
|
before_action :set_current_page, only: [:index]
|
|
before_action :set_current_page_surveys, only: [:index]
|
|
before_action :set_total_sent_messages_count, only: [:metrics]
|
|
|
|
sort_on :created_at, type: :datetime
|
|
|
|
def index; end
|
|
|
|
def metrics
|
|
@total_count = @csat_survey_responses.count
|
|
@ratings_count = @csat_survey_responses.group(:rating).count
|
|
end
|
|
|
|
def download
|
|
response.headers['Content-Type'] = 'text/csv'
|
|
response.headers['Content-Disposition'] = 'attachment; filename=csat_report.csv'
|
|
render layout: false, template: 'api/v1/accounts/csat_survey_responses/download', formats: [:csv]
|
|
end
|
|
|
|
private
|
|
|
|
def set_total_sent_messages_count
|
|
@csat_messages = Current.account.messages.input_csat
|
|
@csat_messages = @csat_messages.where(created_at: range) if range.present?
|
|
@total_sent_messages_count = @csat_messages.count
|
|
end
|
|
|
|
def set_csat_survey_responses
|
|
base_query = Current.account.csat_survey_responses.includes([:conversation, :assigned_agent, :contact])
|
|
@csat_survey_responses = filtrate(base_query).filter_by_created_at(range)
|
|
.filter_by_assigned_agent_id(params[:user_ids])
|
|
.filter_by_inbox_id(params[:inbox_id])
|
|
.filter_by_team_id(params[:team_id])
|
|
.filter_by_rating(params[:rating])
|
|
end
|
|
|
|
def set_current_page_surveys
|
|
@csat_survey_responses = @csat_survey_responses.page(@current_page).per(RESULTS_PER_PAGE)
|
|
end
|
|
|
|
def set_current_page
|
|
@current_page = params[:page] || 1
|
|
end
|
|
end
|