from django.shortcuts import get_object_or_404
from . import models as saleModel
from . import serializers
from background_task import background


@background()
def calculate_lowest_price(box_id):
    inquiry_box = get_object_or_404(saleModel.InquiryBox, id=box_id)
    inquiries = saleModel.Inquiry.objects.filter(inquiry_box_id=inquiry_box.id)
    for inquiry in inquiries:
        query = '''
                SELECT id, inquiry_id, total_price, delivery_time, seller_id, created
                FROM `sale_suggestedprices` WHERE inquiry_id = {} and
                total_price = (select MIN(total_price) from `sale_suggestedprices` where inquiry_id = {})
                order by delivery_time limit 1
                '''.format(inquiry.id, inquiry.id, inquiry.id, inquiry.id)
        best_suggestion_qs = saleModel.SuggestedPrices.objects.raw(query)
        best_suggestion = next(iter(best_suggestion_qs), None)
        if best_suggestion:
            serializer = serializers.SuggestedPricesSerializer(best_suggestion)
            instance = saleModel.SuggestedPrices.objects.get(id=serializer.instance.id)
            instance.accepted = True
            instance.save()
