import {instance} from "./axios";
import {
	EgovNotification,
	SettingState,
	UpdateGeneralNotificationsData,
	UpdateNotificationsData
} from "../models/EgovNotifications";
import {RecordsResponse} from "../models/Axios";


export interface EgovNotificationsParams {
	page: number,
	tag: string
}

export function getEgovNotifications(params:EgovNotificationsParams) {
	return instance.get<RecordsResponse<EgovNotification>>("api/notifications", {
		params: {
            ...params,
            page_size:8,
            status: 'all',
            columns: 'updated_at',
			direction: 'desc'
        },

	});
}

export function deleteNotification(id: number) {
	return instance.post("api/notifications/delete", {		
            notification_id: id 
	});
}

export function deleteAllNotifications() {
	return instance.post("api/notifications/delete/all");
}

export function getNotificationsTags() {
	return instance.get("api/notifications/tags");
}

export function markNotificationAsRead(id: number) {
	return instance.post("api/notifications/mark-as-read", {		
		notification_id: id      
	});
}

export function markAllNotificationsAsRead() {
	return instance.post("api/notifications/mark-as-read/all");
}

export function getUnreadMessages() {
	return instance.get<RecordsResponse<EgovNotification>>("api/notifications", {
		params: {
			page:1,
            page_size:5,
            status: 'unread',
            columns: 'is_read,updated_at',
        },
		// @ts-ignore
		cancelable: false,
	});
}

export function toggleBeamsNotifications(value: 0 | 1) {
	return instance.post("api/notifications/toggle/beams",{
		beams_enabled: value
	});
}


export function getNotificationSettings() {
	return instance.get<SettingState>("api/notifications/settings/get");
}


export function updateNotificationSettings(data:UpdateNotificationsData) {
	return instance.post("api/notifications/settings/update",data);
}


export function updateGeneralNotificationSettings(data:UpdateGeneralNotificationsData){
	return instance.post("api/notifications/toggle/general/settings",data);
}


