Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 2m4s
79 lines
2.8 KiB
Python
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
|