import uuid


class DocumentsPath:
    """
    This class provides methods for generating file paths for various document types.

    Methods:
        get_profile_picture_path(filename, **kwargs): Generate a path for user profile pictures.
        get_station_path(instance, filename, **kwargs): Generate a path for station-related files.
        get_suggest_station_path(instance, filename, **kwargs): Generate a path for suggested station files.
        get_station_rating_path(instance, filename, **kwargs): Generate a path for station rating files.
        get_vehicle_make_path(instance, filename, **kwargs): Generate a path for vehicle make files.
        get_rating_label_path(instance, filename, **kwargs): Generate a path for rating label files.
        get_connector_path(instance, filename, **kwargs): Generate a path for connector-related files.
    """

    @staticmethod
    def get_profile_picture_path(instance, filename, **kwargs):
        """
        Generate a path for user profile pictures.

        Args:
            filename (str): The original filename of the profile picture.

        Returns:
            str: The generated file path for profile pictures.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"user/profile-picture/{filename}"
        return file_path

    @staticmethod
    def get_station_path(instance, filename, **kwargs):
        """
        Generate a path for station-related files.

        Args:
            instance: The instance of the station.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for station-related files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"station/{filename}"
        return file_path

    @staticmethod
    def get_suggest_station_path(instance, filename, **kwargs):
        """
        Generate a path for suggested station files.

        Args:
            instance: The instance of the suggested station.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for suggested station files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"station/suggest/{filename}"
        return file_path

    @staticmethod
    def get_station_rating_path(instance, filename, **kwargs):
        """
        Generate a path for station rating files.

        Args:
            instance: The instance of the station rating.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for station rating files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"station/rating/{filename}"
        return file_path

    @staticmethod
    def get_vehicle_make_path(instance, filename, **kwargs):
        """
        Generate a path for vehicle make files.

        Args:
            instance: The instance of the vehicle make.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for vehicle make files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"vehicle/{filename}"
        return file_path

    @staticmethod
    def get_network_operator_path(instance, filename, **kwargs):
        """
        Generate a path for network operator files.

        Args:
            instance: The instance of the NetworkOperator make.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for network operator files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"network_operator/{filename}"
        return file_path

    @staticmethod
    def get_rating_label_path(instance, filename, **kwargs):
        """
        Generate a path for rating label files.

        Args:
            instance: The instance of the rating label.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for rating label files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"rating/label/{filename}"
        return file_path

    @staticmethod
    def get_connector_path(instance, filename, **kwargs):
        """
        Generate a path for connector-related files.

        Args:
            instance: The instance of the connector.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for connector-related files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"connector/{filename}"
        return file_path

    @staticmethod
    def get_user_vehicle(instance, filename, **kwargs):
        """
        Generate a path for user-vehicle files.

        Args:
            instance: The instance of the user-vehicle.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for user-vehicle files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"user_vehicle/{filename}"
        return file_path

    @staticmethod
    def get_vehicle_insurance_path(instance, filename, **kwargs):
        """
        Generate a path for vehicle-insurance files.

        Args:
            instance: The instance of the vehicle-insurance.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for vehicle-insurance files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"user_vehicle/insurance/{filename}"
        return file_path

    @staticmethod
    def get_contact_us(instance, filename, **kwargs):
        """
        Generate a path for user-vehicle files.

        Args:
            instance: The instance of the user-vehicle.
            filename (str): The original filename of the file.

        Returns:
            str: The generated file path for user-vehicle files.
        """
        ext = filename.split(".")[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        file_path = f"contact_us/{filename}"
        return file_path
