import Link from "next/link";
import { Poster } from "../ReleasePoster/Poster";
import { ReleaseChips } from "../ReleasePoster/Chips";

const profile_lists = {
  // 0: "Не смотрю",
  1: { name: "Смотрю", bg_color: "bg-green-500" },
  2: { name: "В планах", bg_color: "bg-purple-500" },
  3: { name: "Просмотрено", bg_color: "bg-blue-500" },
  4: { name: "Отложено", bg_color: "bg-yellow-500" },
  5: { name: "Брошено", bg_color: "bg-red-500" },
};

export const ReleaseLinkList = (props: {
  image: string;
  title_ru: string;
  title_original: string;
  description?: string;
  genres?: string;
  grade?: number;
  id: number;
  settings?: {
    showGenres?: boolean;
    showDescription?: boolean;
  };
  chipsSettings?: {
    enabled: boolean;
    gradeHidden?: boolean;
    statusHidden?: boolean;
    categoryHidden?: boolean;
    episodesHidden?: boolean;
    listHidden?: boolean;
    favHidden?: boolean;
    lastWatchedHidden?: boolean;
  };
  profile_list_status?: number;
  status?: {
    name: string;
  };
  category?: {
    name: string;
  };
  status_id?: number;
  episodes_released?: string;
  episodes_total?: string;
  is_favorite?: boolean;
}) => {
  const genres = [];
  const settings = {
    showGenres: true,
    showDescription: true,
    ...props.settings,
  };
  const chipsSettings = props.chipsSettings || {};

  const grade = props.grade ? Number(props.grade.toFixed(1)) : null;
  const profile_list_status = props.profile_list_status || null;
  let user_list = null;
  if (profile_list_status != null || profile_list_status != 0) {
    user_list = profile_lists[profile_list_status];
  }
  if (props.genres) {
    const genres_array = props.genres.split(",");
    genres_array.forEach((genre) => {
      genres.push(genre.trim());
    });
  }

  return (
    <Link href={`/release/${props.id}`}>
      <div className="flex gap-2">
        <div className="flex-shrink-0 w-32">
          <Poster image={props.image} className="h-auto" />
        </div>
        <div className="flex flex-col gap-1">
          <ReleaseChips
            {...props}
            user_list={user_list}
            grade={grade}
            settings={{ lastWatchedHidden: false }}
          />
          <div>
            {settings.showGenres &&
              genres.length > 0 &&
              genres.map((genre: string, index: number) => {
                return (
                  <span
                    key={`release_${props.id}_genre_${genre}_${index}`}
                    className="text-sm font-light dark:text-white"
                  >
                    {index > 0 && ", "}
                    {genre}
                  </span>
                );
              })}
          </div>
          {props.title_ru && (
            <p className="text-lg font-bold dark:text-white">
              {props.title_ru}
            </p>
          )}
          {props.title_original && (
            <p className="text-sm text-gray-600 dark:text-gray-300">
              {props.title_original}
            </p>
          )}
          {settings.showDescription && props.description && (
            <p className="mt-2 text-sm font-light leading-none text-white lg:text-base xl:text-lg line-clamp-4">
              {props.description}
            </p>
          )}
        </div>
      </div>
    </Link>
  );
};
