from ckeditor_uploader.fields import RichTextUploadingField
from django.core.validators import MinLengthValidator
from solo.models import SingletonModel
from django.db import models


def setting(instance, filename):
    return "setting/{}".format(filename)


def videos(instance, filename):
    return "setting/videos/{}".format(filename)


def videos_poster(instance, filename):
    return "setting/videos/poster/{}".format(filename)


class SiteSetting(SingletonModel):
    whatsapp = models.CharField(max_length=256, null=True, blank=True, verbose_name="واتس اپ")
    whatsapp2 = models.CharField(max_length=256, null=True, blank=True, verbose_name="واتس اپ دوم")
    instagram = models.CharField(max_length=256, null=True, blank=True, verbose_name="اینستاگرام")
    phone = models.CharField(max_length=11, validators=[MinLengthValidator(11)], unique=True, verbose_name="شماره تماس")
    phone2 = models.CharField(max_length=11, validators=[MinLengthValidator(11)], null=True, blank=True, unique=True,
                              verbose_name="شماره تماس دوم")
    phone3 = models.CharField(max_length=11, validators=[MinLengthValidator(11)], null=True, blank=True, unique=True,
                              verbose_name="شماره تماس سوم")
    address = models.TextField(null=True, blank=True, verbose_name="آدرس")
    welcome = models.TextField(null=True, blank=True, verbose_name="خوش آمد گویی")
    about = RichTextUploadingField(null=True, blank=True, verbose_name="درباره ما")
    signup = RichTextUploadingField(null=True, blank=True, verbose_name="نحوه ثبت نام")
    rules = RichTextUploadingField(null=True, blank=True, verbose_name="قوانین")
    contract = RichTextUploadingField(null=True, blank=True, verbose_name="متن قرارداد با فروشنده")
    help = RichTextUploadingField(null=True, blank=True, verbose_name="راهنمای سایت")
    seller_help = RichTextUploadingField(null=True, blank=True, verbose_name="راهنمای فروشنده")
    sending_procedure = RichTextUploadingField(null=True, blank=True, verbose_name="رویه ارسال کالا")
    payment_procedure = RichTextUploadingField(null=True, blank=True, verbose_name="رویه پرداخت")
    return_procedure = RichTextUploadingField(null=True, blank=True, verbose_name="رویه مرجوع کالا")
    questions = RichTextUploadingField(null=True, blank=True, verbose_name="سوالات متداول")
    banner = models.ImageField(upload_to=setting, null=True, blank=True, verbose_name="تصویر مناسبتی")
    banner_enable = models.BooleanField(default=False, blank=True, verbose_name="بنر فعال باشد")
    user_max_request = models.IntegerField(default=3, verbose_name="حداکثر تعداد استعلام مشتری")
    default_benefit = models.IntegerField(default=3, verbose_name="میزان سود پیش فرض قطعات")
    inquiry_time = models.IntegerField(default=10, verbose_name="زمان استعلام گیری")
    sms_panel_username = models.CharField(max_length=256, null=True, blank=True, verbose_name="نام کاربری پنل پیامکی")
    sms_panel_password = models.CharField(max_length=256, null=True, blank=True, verbose_name="کلمه عبور پنل پیامکی")

    class Meta:
        verbose_name = "پیکربندی"
        verbose_name_plural = "پیکربندی"

    def __str__(self):
        return 'تنظیمات سایت'


class SeoSetting(SingletonModel):
    main_page_h1 = models.CharField(max_length=256, null=True, blank=True, verbose_name="تگ H1 صفحه اصلی")
    main_page_h2 = models.CharField(max_length=256, null=True, blank=True, verbose_name="تگ H2 صفحه اصلی")
    main_page_meta_title = models.CharField(max_length=65, null=True, blank=True, verbose_name='عنوان سئو صفحه اصلی (title)')
    main_page_meta_description = models.CharField(max_length=160, null=True, blank=True, verbose_name='توضیحات سئو صفحه اصلی (description)')
    brands_description = RichTextUploadingField(null=True, blank=True, verbose_name="توضیحات برندها")
    brands_page_meta_title = models.CharField(max_length=65, null=True, blank=True, verbose_name='عنوان سئو صفحه لیست برندها (title)')
    brands_page_meta_description = models.CharField(max_length=160, null=True, blank=True, verbose_name='توضیحات سئو صفحه لیست برندها (description)')
    car_articles_page_meta_title = models.CharField(max_length=65, null=True, blank=True, verbose_name='عنوان سئو صفحه لیست مقالات خودرو (title)')
    car_articles_page_meta_description = models.CharField(max_length=160, null=True, blank=True, verbose_name='توضیحات سئو صفحه لیست مقالات خودرو (description)')
    product_articles_page_meta_title = models.CharField(max_length=65, null=True, blank=True, verbose_name='عنوان سئو صفحه لیست مقالات قطعه (title)')
    product_articles_page_meta_description = models.CharField(max_length=160, null=True, blank=True, verbose_name='توضیحات سئو صفحه لیست مقالات قطعه (description)')
    other_articles_page_meta_title = models.CharField(max_length=65, null=True, blank=True, verbose_name='عنوان سئو صفحه لیست سایر مقالات (title)')
    other_articles_page_meta_description = models.CharField(max_length=160, null=True, blank=True, verbose_name='توضیحات سئو صفحه لیست سایر مقالات (description)')
    news_page_meta_title = models.CharField(max_length=65, null=True, blank=True, verbose_name='عنوان سئو صفحه لیست اخبار (title)')
    news_page_meta_description = models.CharField(max_length=160, null=True, blank=True, verbose_name='توضیحات سئو صفحه لیست اخبار (description)')

    class Meta:
        verbose_name = "سئو"
        verbose_name_plural = "سئو"

    def __str__(self):
        return 'تنظیمات سئو'


class IndexSlide(models.Model):
    id = models.AutoField(primary_key=True)
    image = models.ImageField(upload_to=setting, null=True, blank=True, verbose_name="تصویر")
    title = models.CharField(max_length=256, null=True, blank=True, verbose_name="عنوان")
    description = models.TextField(null=True, blank=True, verbose_name="توضیحات")
    link = models.CharField(max_length=256, null=True, blank=True, verbose_name="لینک مربوطه")
    setting = models.ForeignKey(SiteSetting, on_delete=models.CASCADE)

    class Meta:
        verbose_name = "تصویر اسلایدشو"
        verbose_name_plural = "تصاویر اسلایدشو"

    def __str__(self):
        return self.title or ""


class Videos(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=256, null=True, blank=True, verbose_name="عنوان")
    poster = models.ImageField(upload_to=videos_poster, null=True, blank=True, verbose_name="پوستر")
    video = models.FileField(upload_to=videos, null=True, blank=True, verbose_name="ویدیو")

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = "ویدیو آموزشی"
        verbose_name_plural = "ویدیوهای آموزشی"
