from django.db import models

from django.urls import reverse

from projects.models import Project
from settings.models import Provider
from samples.models import Sample
from tasks.models import Task
from files.models import File
from mapps.models import App as Mapp

from django.contrib.auth.models import User, Group
from django.db.models import JSONField


class AnalysisType(models.Model):
    class Meta:
        verbose_name_plural = "analysis_types"

    name = models.CharField(max_length=30)
    repository = models.CharField(max_length=600, null=True, blank=True)
    def __str__(self):
        return self.name


class Analysis(models.Model):
    class Meta:
        verbose_name_plural = "analyses"

    user = models.ForeignKey(User, on_delete=models.CASCADE)
    params = JSONField(null=True, blank=True)

    name = models.CharField(max_length=30)
    status = models.TextField(null=True, blank=True)
    project = models.ForeignKey(Project, on_delete=models.CASCADE, null=True, blank=True)
    apps = models.ManyToManyField(Mapp)
    samples = models.ManyToManyField(Sample)
    tasks = models.ManyToManyField(Task)
    files = models.ManyToManyField(File)

    # type = models.ForeignKey(AnalysisType, on_delete=models.CASCADE)
    # provider = models.ForeignKey(Provider, on_delete=models.CASCADE)

    def get_absolute_url(self):
        return reverse('analysis-detail', kwargs={'pk': self.pk})

    def __str__(self):
        return self.name

