<?php
/**
 * 
 */

namespace {BUNDLE_NAME}Bundle\Service;

use FOS\RestBundle\Controller\FOSRestController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * @Route("/{CLASS_NAME_ROUTE}")
 */
class {CLASS_NAME}Controller extends FOSRestController
{

    /**
     * Fungsi untuk mengambil seluruh data dari object {CLASS_NAME}
     *
     * SortBy, SortType, Offset, Limit{getAll_PARAMS}
     * 
     * @Route("/get-all")
     * @Method("POST")
     *
     * @param SortBy, SortType, Offset, Limit{getAll_PARAMS}
     * @return JSON Status, Message, Data
     */
    public function getAllAction(Request $request = null, Response $response = null)
    {

        $params = (object) $request->request->all();
        $result = \{BUNDLE_NAME}Model\{CLASS_NAME}::getAll($params);
        
        return $this->json($result->Load(true));
    }

    /**
     * Fungsi untuk mengambil {CLASS_NAME} tertentu berdasarkan Id
     *
     * Id
     * 
     * @Route("/get-by-id")
     * @Method("POST")
     *
     * @param Id
     * @return JSON Status, Message, Data
     */
    public function getByIdAction(Request $request = null, Response $response = null)
    {

        $params = (object) $request->request->all();
        $result = \{BUNDLE_NAME}Model\{CLASS_NAME}::getById($params);
        
        return $this->json($result->Load(true));
    }

    /**
     * Fungsi untuk membuat {CLASS_NAME} baru
     *
     * {PARAMS}
     * 
     * @Route("/create")
     * @Method("POST")
     *
     * @param {PARAMS}
     * @return JSON Status, Message, Data
     */
    public function createAction(Request $request = null, Response $response = null)
    {

        $params = (object) $request->request->all();
        $result = \{BUNDLE_NAME}Model\{CLASS_NAME}::create($params);
        
        return $this->json($result->Load(true));
    }

    /**
     * Fungsi untuk mengubah data dari {CLASS_NAME} yang sudah ada
     *
     * Id, {PARAMS}
     * 
     * @Route("/update")
     * @Method("POST")
     *
     * @param Id, {PARAMS}
     * @return JSON Status, Message, Data
     */
    public function updateAction(Request $request = null, Response $response = null)
    {

        $params = (object) $request->request->all();
        $result = \{BUNDLE_NAME}Model\{CLASS_NAME}::update($params);
        
        return $this->json($result->Load(true));
    }

    /**
     * Fungsi untuk menghapus {CLASS_NAME}
     *
     * Id
     * 
     * @Route("/delete")
     * @Method("POST")
     *
     * @param  Id
     * @return JSON Status, Message, Data
     */
    public function deleteAction(Request $request = null, Response $response = null)
    {

        $params = (object) $request->request->all();
        $result = \{BUNDLE_NAME}Model\{CLASS_NAME}::delete($params);
        
        return $this->json($result->Load(true));
    }


}
