gold eggs backend
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
This commit is contained in:
73
core/apps/eggs/serializers/debt.py
Normal file
73
core/apps/eggs/serializers/debt.py
Normal file
@@ -0,0 +1,73 @@
|
||||
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"
|
||||
|
||||
send_sms_msg.delay(instance.market.user_id.phone, message)
|
||||
return instance
|
||||
Reference in New Issue
Block a user