<?php

namespace App\Controllers\Admin;

use App\Models\Tiktok_model;

class Tiktok extends BaseController
{
    // Fungsi bantuan untuk mengubah Link TikTok biasa menjadi Kode Embed
    private function generateTiktokEmbed($input)
    {
        if (strpos($input, '<blockquote') !== false || strpos($input, '<iframe') !== false) {
            return $input;
        }
        $pattern = '/@([\w\.-]+)\/(?:video|photo)\/(\d+)/';
        
        if (preg_match($pattern, $input, $matches)) {
            $username = $matches[1]; 
            $videoId  = $matches[2]; 

            // Rakit kode embed HTML standar TikTok
            $embedCode = '<blockquote class="tiktok-embed" cite="https://www.tiktok.com/@'.$username.'/video/'.$videoId.'" data-video-id="'.$videoId.'" style="max-width: 605px;min-width: 325px;" >';
            $embedCode .= '<section> <a target="_blank" title="@'.$username.'" href="https://www.tiktok.com/@'.$username.'?refer=embed">@'.$username.'</a> </section>';
            $embedCode .= '</blockquote>';
            $embedCode .= '<script async src="https://www.tiktok.com/embed.js"></script>';

            return $embedCode;
        }

        return $input;
    }

    // mainpage & create
    public function index()
    {
        checklogin();
        $m_video = new Tiktok_model();
        $video   = $m_video->listing();
        $total   = $m_video->total();

        if ($this->request->getMethod() === 'post' && $this->validate([
            'judul'  => 'required',
            'video'  => 'required', 
            'status' => 'required', 
        ])) {
            
            // Tangkap input dari form
            $raw_video_input = $this->request->getPost('video');
            
            $data = [
                'judul_video' => $this->request->getPost('judul'),
                'embed_code'  => $this->generateTiktokEmbed($raw_video_input),
                'status'      => $this->request->getPost('status'),
            ];
            
            $m_video->save($data); 
            $this->session->setFlashdata('sukses', 'Data telah ditambah');
            return redirect()->to(base_url('admin/tiktok'));
        }

        $data = [
            'title'   => 'Video Tiktok: ' . $total['total'],
            'video'   => $video,
            'content' => 'admin/tiktok/index',
        ];
        echo view('admin/layout/wrapper', $data);
    }

    // edit
    public function edit($id)
    {
        checklogin();
        $m_video = new Tiktok_model(); 
        $video   = $m_video->detail($id);

        if ($this->request->getMethod() === 'post' && $this->validate([
                'judul'  => 'required|min_length[3]',
                'video'  => 'required',
                'status' => 'required'
            ])) {
            
            // Tangkap input dari form
            $raw_video_input = $this->request->getPost('video');

            $data = [
                'judul_video' => $this->request->getPost('judul'),
                // Gunakan fungsi generateTiktokEmbed untuk mengubah link jadi embed otomatis
                'embed_code'  => $this->generateTiktokEmbed($raw_video_input),
                'status'      => $this->request->getPost('status'),
            ];
            
            $m_video->update($id, $data);
            $this->session->setFlashdata('sukses', 'Data telah diedit');

            return redirect()->to(base_url('admin/tiktok'));
        }
        
        $data = [
            'title'   => 'Edit Video: ' . $video['judul_video'],
            'video'   => $video,
            'content' => 'admin/tiktok/edit', 
        ];
        echo view('admin/layout/wrapper', $data);
    }

    // delete
    public function delete($id)
    {
        checklogin();
        $m_video = new Tiktok_model(); 
        
        $m_video->delete($id);
        $this->session->setFlashdata('sukses', 'Data telah dihapus');

        return redirect()->to(base_url('admin/tiktok'));
    }
}