<?php

namespace Modules\Manage\Http\Controllers;

use Illuminate\Routing\Controller;
use Illuminate\Http\Request;
use Modules\Manage\Enmus\MiniprogramType;
use Modules\Manage\Http\Requests\MiniprogramRequest;
use Modules\Manage\Models\Miniprogram;
use Log;

class MiniprogramController extends Controller
{

    public function __construct(protected readonly Miniprogram $miniprogram)
    {
        
    }

    public function index(Request $request)
    {
        $name = $request->get('name');
        $play_name = $request->get('play_name');
        $company = $request->get('company');
        $where = [];
        if($name){
            $where[] = ['name','like','%'.$name.'%']; 
        }
        if($play_name){
            $where[] = ['play_name','like','%'.$play_name.'%']; 
        }
        if($company){
            $where[] = ['company','like','%'.$company.'%']; 
        }
        return $this->miniprogram->where($where)->paginate(20)->map(function($item,$k){
            $item->type_name = MiniprogramType::from($item->type)->name();
            $item->status_name = $item->status == 1 ?'启用':'禁用';
            return $item;
        });
    }

    public function store(MiniprogramRequest $request)
    {
        $validate_result = $request->validated();
        $validate_result['remark'] = $request->post('remark','') ?? '';
        return $this->miniprogram->create($validate_result)->toArray();

    }

    public function show($id)
    {
        return $this->miniprogram->find($id)->toArray();
    }


    public function update($id, MiniprogramRequest $request)
    {
        $validate_result = $request->validated();
        if($request->post('remark','')){
            $validate_result['remark'] = $request->post('remark','');
        }
        $this->miniprogram->where('id',$id)->update($validate_result);
        return [];
    }

    public function destroy($id)
    {

    }


    public function typeList(){
        $type_list =  MiniprogramType::cases();
        $data = array_map( fn($item)=>['name'=>$item->name(),'value'=>$item->value()],$type_list );
        return $data;
    }
}