public virtual async Task SendInboxOfferNotificationAsync(BaseNotificationPayload payload)
        {
            var data = new
            {
                click_action = "FLUTTER_NOTIFICATION_CLICK",
                sound        = "default",
                status       = "done",
                screen       = "OFFERS_INBOX_LIST",
                title        = payload.Title,
                titleKu      = payload.TitleKu,
                titleAr      = payload.TitleAr,
                body         = payload.Body,
                bodyKu       = payload.BodyKu,
                bodyAr       = payload.BodyAr
            };

            await SendFcmToTopicAsync("Public", payload.Title, payload.Body, data);
        }
        public virtual async Task SendInboxNotificationAsync(BaseNotificationPayload payload, NotificationListItemDTO notification)
        {
            var data = new
            {
                click_action = "FLUTTER_NOTIFICATION_CLICK",
                sound        = "default",
                status       = "done",
                screen       = "READ_NOTIFICATION",
                notification,
                title   = payload.Title,
                titleKu = payload.TitleKu,
                titleAr = payload.TitleAr,
                body    = payload.Body,
                bodyKu  = payload.BodyKu,
                bodyAr  = payload.BodyAr
            };

            await SendFcmToTopicAsync("Public", payload.Title, payload.Body, data);
        }
        public virtual async Task SendPublishArticleNotificationAsync(BaseNotificationPayload payload, CmsArticleDTO article)
        {
            var data = new
            {
                click_action = "FLUTTER_NOTIFICATION_CLICK",
                sound        = "default",
                status       = "done",
                screen       = "READ_ARTICLE",
                article,
                title   = payload.Title,
                titleKu = payload.TitleKu,
                titleAr = payload.TitleAr,
                body    = payload.Body,
                bodyKu  = payload.BodyKu,
                bodyAr  = payload.BodyAr
            };

            await SendFcmToTopicAsync("Public", payload.Title, payload.Body, data);
        }
        public virtual async Task SendDoneAppointmentNotificationAsync(string instanceId, BaseNotificationPayload payload, DoneAppointmentNotificationPayload dataJson = null)
        {
            var data = new
            {
                click_action = "FLUTTER_NOTIFICATION_CLICK",
                sound        = "default",
                status       = "done",
                screen       = "APPOINTMENT_DONE",
                dataJson?.AppointmentId,
                dataJson?.NotificationType,
                dataJson?.UserTurnItem,
                title   = payload.Title,
                titleKu = payload.TitleKu,
                titleAr = payload.TitleAr,
                body    = payload.Body,
                bodyKu  = payload.BodyKu,
                bodyAr  = payload.BodyAr
            };

            await SendFcmToSingleDeviceAsync(instanceId, payload.Title, payload.Body, data);
        }