MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/imensosw/www/amanda/app/Http/Controllers/CategoryController.php
<?php

namespace App\Http\Controllers;

use App\Category;
use Illuminate\Http\Request;

class CategoryController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $limit = config('constants.limit');
        $search = $request->search;
        $category = Category::
            where(function($q) use ($search)
            {
                  $q->orWhere('categories.name', 'like', '%' . $search . '%');
            })
             ->orderBy('categories.id','desc')
            ->paginate($limit);
        return response()->json($category, 200); 
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required|unique:categories,name|max:30',
        ]);
        $category = Category::create([
            'name' => $request->name,
            
        ]);

        return response()->json([
            'status' => (bool) $category,
            'data'   => $category,
            'message' => $category ? 'Category Created!' : 'Error Creating Category'
        ]);
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Category  $category
     * @return \Illuminate\Http\Response
     */
    public function show(Category $category)
    {
        return response()->json($category,200); 
    }

   

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Category  $category
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Category $category)
    {
         $request->validate([
            'name' => 'required|max:30|unique:categories,name,'.$category['id'],
        ]);
        $status = $category->update(
            $request->only(['name'])
        );

        return response()->json([
            'status' => $status,
            'message' => $status ? 'Category Updated!' : 'Error Updating Category'
        ]);
    }

    public function updateUnits(Request $request, Product $category)
    {
        $category->units = $category->units + $request->get('units');
        $status = $category->save();

        return response()->json([
            'status' => $status,
            'message' => $status ? 'Units Added!' : 'Error Adding Product Units'
        ]);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Product  $product
     * @return \Illuminate\Http\Response
     */
    public function destroy(Category $product,  $id)
    {
        \DB::beginTransaction();
        try {

          // $status = $product->delete();
            $status = Category::find($id)->delete();

           \DB::commit();
            return response()->json([
                'status' => $status,
                'message' => $status ? 'Category Deleted!' : 'Error Deleting Category'
            ]);
        } catch (\Throwable $e) {
            \DB::rollback();
            return response()->json(
                [
                'status' => 'error',
                'message' => 'Error in Category delete',
                'errors' => [],
                ],
                422
            );
        }
    }

    public function categorySearch(Request $request)
    {
        $limit = config('constants.limit');
        $search = $request->search;
        $category = Category::
                where(function($q) use ($search)
                {
                      $q->orWhere('categories.name', 'like', '%' . $search . '%');
                })
                 ->orderBy('categories.id','desc')
                ->paginate($limit);
        return response()->json($category, 200); 
    }

}