mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 04:57:51 +00:00 
			
		
		
		
	<img width="989" alt="Screenshot 2025-02-05 at 6 34 12 PM" src="https://github.com/user-attachments/assets/ae811842-23f7-4bbc-8a42-7cbe4849d287" /> View heatmaps for last 30 days based on the filter.
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* global axios */
 | 
						|
import ApiClient from './ApiClient';
 | 
						|
 | 
						|
const getTimeOffset = () => -new Date().getTimezoneOffset() / 60;
 | 
						|
 | 
						|
class ReportsAPI extends ApiClient {
 | 
						|
  constructor() {
 | 
						|
    super('reports', { accountScoped: true, apiVersion: 'v2' });
 | 
						|
  }
 | 
						|
 | 
						|
  getReports({
 | 
						|
    metric,
 | 
						|
    from,
 | 
						|
    to,
 | 
						|
    type = 'account',
 | 
						|
    id,
 | 
						|
    groupBy,
 | 
						|
    businessHours,
 | 
						|
  }) {
 | 
						|
    return axios.get(`${this.url}`, {
 | 
						|
      params: {
 | 
						|
        metric,
 | 
						|
        since: from,
 | 
						|
        until: to,
 | 
						|
        type,
 | 
						|
        id,
 | 
						|
        group_by: groupBy,
 | 
						|
        business_hours: businessHours,
 | 
						|
        timezone_offset: getTimeOffset(),
 | 
						|
      },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  // eslint-disable-next-line default-param-last
 | 
						|
  getSummary(since, until, type = 'account', id, groupBy, businessHours) {
 | 
						|
    return axios.get(`${this.url}/summary`, {
 | 
						|
      params: {
 | 
						|
        since,
 | 
						|
        until,
 | 
						|
        type,
 | 
						|
        id,
 | 
						|
        group_by: groupBy,
 | 
						|
        business_hours: businessHours,
 | 
						|
        timezone_offset: getTimeOffset(),
 | 
						|
      },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getConversationMetric(type = 'account', page = 1) {
 | 
						|
    return axios.get(`${this.url}/conversations`, {
 | 
						|
      params: {
 | 
						|
        type,
 | 
						|
        page,
 | 
						|
      },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getAgentReports({ from: since, to: until, businessHours }) {
 | 
						|
    return axios.get(`${this.url}/agents`, {
 | 
						|
      params: { since, until, business_hours: businessHours },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getConversationTrafficCSV({ daysBefore = 6 } = {}) {
 | 
						|
    return axios.get(`${this.url}/conversation_traffic`, {
 | 
						|
      params: { timezone_offset: getTimeOffset(), days_before: daysBefore },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getLabelReports({ from: since, to: until, businessHours }) {
 | 
						|
    return axios.get(`${this.url}/labels`, {
 | 
						|
      params: { since, until, business_hours: businessHours },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getInboxReports({ from: since, to: until, businessHours }) {
 | 
						|
    return axios.get(`${this.url}/inboxes`, {
 | 
						|
      params: { since, until, business_hours: businessHours },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getTeamReports({ from: since, to: until, businessHours }) {
 | 
						|
    return axios.get(`${this.url}/teams`, {
 | 
						|
      params: { since, until, business_hours: businessHours },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getBotMetrics({ from, to } = {}) {
 | 
						|
    return axios.get(`${this.url}/bot_metrics`, {
 | 
						|
      params: { since: from, until: to },
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  getBotSummary({ from, to, groupBy, businessHours } = {}) {
 | 
						|
    return axios.get(`${this.url}/bot_summary`, {
 | 
						|
      params: {
 | 
						|
        since: from,
 | 
						|
        until: to,
 | 
						|
        type: 'account',
 | 
						|
        group_by: groupBy,
 | 
						|
        business_hours: businessHours,
 | 
						|
      },
 | 
						|
    });
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export default new ReportsAPI();
 |