from rest_framework import serializers from apps.account.models import Notification, NotificationTemplate, ScheduledNotification from apps.account.models import User class NotificationSerializer(serializers.ModelSerializer): user_type = serializers.ChoiceField(choices=[('user', 'User'), ('merchant', 'Merchant')], default='user') service = serializers.ChoiceField(choices=Notification.ServiceChoices.choices, default=Notification.ServiceChoices.IMAM_JAVAD) class Meta: model = Notification fields = ['id', 'title', 'message', 'is_read', 'user_type', 'service', 'created_at', 'updated_at'] class NotificationSendSerializer(serializers.Serializer): title = serializers.CharField() body = serializers.CharField() data = serializers.DictField(required=False) account_id = serializers.CharField(required=True) user_type = serializers.CharField(required=True) service = serializers.ChoiceField(choices=Notification.ServiceChoices.choices, default=Notification.ServiceChoices.IMAM_JAVAD) class AdminNotificationSerializer(serializers.ModelSerializer): user_fullname = serializers.CharField(source='user.fullname', read_only=True) user_email = serializers.CharField(source='user.email', read_only=True) user_id = serializers.IntegerField(source='user.id', read_only=True) class Meta: model = Notification fields = ['id', 'title', 'message', 'is_read', 'service', 'created_at', 'updated_at', 'user_fullname', 'user_email', 'user_id'] class NotificationTemplateSerializer(serializers.ModelSerializer): class Meta: model = NotificationTemplate fields = [ 'id', 'notification_type', 'name', 'is_active', 'title_ru', 'title_en', 'body_ru', 'body_en', 'placeholders_info' ] class AdminScheduledNotificationSerializer(serializers.ModelSerializer): user_fullname = serializers.CharField(source='user.fullname', read_only=True) user_email = serializers.CharField(source='user.email', read_only=True) template_name = serializers.CharField(source='template.name', read_only=True) class Meta: model = ScheduledNotification fields = [ 'id', 'name', 'template', 'template_name', 'target_group', 'send_to_all', 'user', 'user_fullname', 'user_email', 'title_ru', 'title_en', 'body_ru', 'body_en', 'is_active', 'schedule_type', 'time_of_day', 'days_of_week', 'days_of_month', 'custom_cron', 'scheduled_time' ]