%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/management/app/Http/Controllers/Api/
Upload File :
Create Path :
Current File : /var/www/html/management/app/Http/Controllers/Api/ComputersController.php

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\ApiController;
use App\Models\Computer;
use App\Models\Product;
use App\Models\Usage;
use App\Models\User;
use App\Transformers\ComputerTransformer;
use App\Transformers\UserTransformer;
use Illuminate\Http\Request;

class ComputersController extends ApiController
{

    public function index()
    {
        $computers = Computer::all();
        return $this->collection($computers, new ComputerTransformer);
    }

    public function show($computer)
    {
        $computer = Computer::query()->find($computer);
        return $this->item($computer, new ComputerTransformer);
    }

    public function store(Request $request)
    {
        $computer = Computer::query()->create([
            'code'       => $request->get('code'),
            'is_enabled' => $request->get('is_enabled'),
        ]);

        return $this->item($computer, new ComputerTransformer);
    }

    public function disable($computer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $computer->is_enabled = false;
        $computer->save();

        return $this->item($computer, new ComputerTransformer);
    }

    public function enable($computer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $computer->is_enabled = true;
        $computer->save();

        return $this->item($computer, new ComputerTransformer);
    }

    public function startOrder($computer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $computer->createOrder();

        return $this->item($computer, new ComputerTransformer);
    }

    public function endOrder(Request $request, $computer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $computer->endOrder($request->price);

        return $this->item($computer, new ComputerTransformer);
    }

    public function endUsage(Request $request, $computer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $computer->endUsage($request->price);

        return $this->item($computer, new ComputerTransformer);
    }

    /**
     * @param Request $request
     * @param $computer
     * @param $newComputer
     */
    public function transferOrder(Request $request, $computer, $newComputer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        /** @var Computer $newComputer */
        $newComputer = Computer::query()->find($newComputer);
        $computer->transferOrder($newComputer);

        return $this->item($newComputer, new ComputerTransformer);
    }

    /**
     * @param Request $request
     * @param $computer
     * @param $user
     * @return \Illuminate\Http\JsonResponse
     */
    public function addUserToOrder(Request $request, $computer, $user)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $user = User::query()->find($user);
        /** @var Usage $usage */
        $usage = $computer->getCurrentUsage();
        $usage->user_id = $user->id;
        $usage->save();

        return $this->item($user, new UserTransformer);
    }

    public function applyGiftDiscount(Request $request, $computer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $computer->applyGiftDiscount($request->quantity);
    }

    public function applyMoneyDiscount(Request $request, $computer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $computer->applyMoneyDiscount($request->money);
        return $this->item($computer, new ComputerTransformer);
    }

    public function addProduct($computer, $product)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        /** @var Product $product */
        $product = Product::query()->find($product);
        $computer->addProduct($product);
        return $this->item($computer, new ComputerTransformer);
    }

    public function fixedTimer(Request $request, $computer)
    {
        /** @var Computer $computer */
        $computer = Computer::query()->find($computer);
        $computer->fixedTimer($request->money);
        return $this->item($computer, new ComputerTransformer);
    }

}

Zerion Mini Shell 1.0