import logging
from typing import Any

from django.core.management.base import BaseCommand

from core.models import Product
from core.vendors import AbstractVendor

logger = logging.getLogger("django")


class Command(BaseCommand):
    def handle(self, *args: list[Any], **options: dict[Any, Any]) -> None:
        self.stdout.write(self.style.SUCCESS("Starting fixing stocks' prices..."))

        for product in Product.objects.filter(stocks__isnull=False):
            for stock in product.stocks.all():
                try:
                    stock.price = AbstractVendor.round_price_marketologically(stock.price)
                    stock.save()
                except Exception as e:
                    self.stdout.write(self.style.WARNING(f"Couldn't fix price on {stock.uuid}"))
                    self.stdout.write(self.style.WARNING(f"Error: {e}"))
        self.stdout.write(self.style.SUCCESS("Successfully fixed stocks' prices!"))
