Files
eggs-backend/core/apps/eggs/serializers/debt.py
husanjon 1daf4f3569
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 2m4s
change
2026-04-20 16:58:34 +05:00

79 lines
2.8 KiB
Python

from rest_framework import serializers
from core.apps.eggs.models import Debt, Market, History, Notification
from core.apps.eggs.models.debt import DebtTypeEnum
from core.apps.eggs.models.monitoring import Monitoring
from core.http.models import User
from core.apps.eggs.tasks.send_sms import send_sms_msg
class DebtSerializer(serializers.ModelSerializer):
class Meta:
model = Debt
fields = [
"market",
"debt_price",
"debt_type",
"created_at",
"updated_at",
]
def validate(self, data):
market = Market.objects.get(id=data["market"].id)
if (
data["debt_price"] > market.debt_unpaid
and data.get("debt_type", None) == DebtTypeEnum.LOST.value
):
raise serializers.ValidationError(
{
"debt_price": "Qarz narxi to'lanmagan qarzdan yuqori bo'lishi mumkin emas."
}
)
return data
def create(self, validated_data):
instance = Debt.objects.create(**validated_data)
request = self.context.get("request")
request_user = request.user
full_name = f"{request_user.first_name} {request_user.last_name}"
History.objects.create(
content_object=instance,
action="debt_created",
user_id=request_user,
created_who=full_name,
created_by=instance.market.name,
avatar=instance.market.avatar,
reason=f"Qarz yechildi {instance.debt_price}",
comment=f"Qarz yechildi {instance.debt_price}",
)
Monitoring.objects.create(
content_object=instance,
action="debt_created",
user_id=request_user,
created_who=full_name,
created_by=instance.market.name,
reason=f"Qarz yechildi {instance.debt_price}",
comment="Kirim",
price=instance.debt_price,
)
notification_users = User.objects.filter(role="admin")
for user in notification_users:
Notification.objects.create(
user=user,
title=f"Qarz muvaffaqiyatli yechildi {instance.debt_price} so'm",
body=f"Qarz muvaffaqiyatli yechildi {instance.market.name} dan {instance.debt_price} so'm",
)
message = f"Hurmatli {instance.market.user_id.first_name} {instance.market.user_id.last_name} , Sizning Gold-eggs.uz tuxum yetkazib berish xizmati ilovasidagi xaridingizga {instance.debt_price} so'm qarz yechildi Umumiy balans: {instance.market.debt_unpaid} so'm Batafsil: +998914249515"
try:
send_sms_msg.delay(instance.market.user_id.phone, message)
except Exception:
pass
return instance