%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home2/vacivi36/core/app/Http/Controllers/
Upload File :
Create Path :
Current File : //home2/vacivi36/core/app/Http/Controllers/UserController.php

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class UserController extends Controller
{
    /**
     * Exibir a lista de usuários.
     */
    public function index()
    {
        $users = User::with('company')->get()->makeHidden('password');
        return response()->json($users);
    }    

    /**
     * Criar um novo usuário.
     */
    public function store(Request $request)
    {
        // Verifica se o e-mail já está cadastrado
        if (User::where('email', $request->email)->exists()) {
            return response()->json(['status' => 'error', 'message' => 'E-mail já cadastrado no sistema. Por favor, utilize outro e-mail.'], 409);
        }
    
        $user = new User();

        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = Hash::make($request->password);
        $user->status = $request->has('status') ? 1 : 0;
        $user->administrator = $request->has('administrator') ? 1 : 0;
        $user->company_id = $request->company_id;

        $insert = $user->save();

        if ($insert) {
            return response()->json(['status' => 'success', 'message' => 'Usuário criado com sucesso!'], 201);
        } else {
            return response()->json(['status' => 'error', 'message' => 'Erro ao criar usuário.'], 500);
        }
    }

    /**
     * Exibir um usuário específico.
     */
    public function show(Request $request)
    {
        return User::where('email', $request->email)->first()->makeHidden('password');
    }    

    /**
     * Atualizar um usuário existente.
     */
    public function update(Request $request, $id)
    {
        $user = User::findOrFail($id);

        $user->name = $request->name;
        $user->email = $request->email;

        // Atualizando a senha apenas se for fornecida uma nova senha
        if ($request->filled('password')) {
            $user->password = Hash::make($request->password);
        }

        $user->status = $request->has('status') ? ($request->status ? 1 : 0) : $user->status;
        $user->administrator = $request->has('administrator') ? ($request->administrator ? 1 : 0) : $user->administrator;
        $user->company_id = $request->company_id;

        $update = $user->save();

        if ($update) {
            return response()->json(['status' => 'success', 'message' => 'Usuário atualizado com sucesso!'], 200);
        } else {
            return response()->json(['status' => 'error', 'message' => 'Erro ao atualizar usuário.'], 500);
        }
    }

    /**
     * Remover um usuário.
     */
    public function destroy($id)
    {
        $user = User::findOrFail($id);
        $user->delete();

        return response()->json(['message' => 'Usuário excluído com sucesso!']);
    }

    public function listActive()
    {
        return User::where('status', true)->get();
    }
}

Zerion Mini Shell 1.0