• File: CommonController.php
  • Full Path: /var/www/amparoapi/app/Http/Controllers/CommonController.php
  • Date Modified: 10/26/2021 8:00 PM
  • File size: 4.43 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace App\Http\Controllers;

use App\Models\AccountType;
use App\Models\CardType;
use App\Models\CustomerAccount;
use App\Models\CustomerCard;
use Illuminate\Http\Request;

class CommonController extends Controller
{
    public function addCartType(Request $request)
    {

        $this->validate($request, [
            'name' => 'required',
            'description' => 'required',
        ], [
            'name.required' => 'Compo name Obrigatório',
            'description.required' => 'Descrição do Tipo de Cartão é Obrigatório'
        ]);

        CardType::create([
            'name' => $request->name,
            'description' => $request->description
        ]);

        return response()->json(['message' => 'Cartão adicionado com Sucesso'], 200);
    }

    public function addAccountType(Request $request)
    {

        $this->validate($request, [
            'name' => 'required',
            'description' => 'required',
        ], [
            'name.required' => 'Compo name Obrigatório',
            'description.required' => 'Descrição do Tipo de Conta é Obrigatório'
        ]);

        AccountType::create([
            'name' => $request->name,
            'description' => $request->description
        ]);

        return response()->json(['message' => 'Cartão adicionado com Sucesso'], 200);
    }

    public function updateCardType(Request $request)
    {
        $this->validate($request, [
            'id' => 'required',
        ]);

        $cardType = CardType::find($request->id);

        if ($cardType) {

            $cardType->update([
                'name' => $request->name,
                'description' => $request->description
            ]);
            return response()->json(['message' => 'Cartão adicionado com Sucesso'], 200);
        } else {
            return response()->json(['message' => 'Cartão não encontrado'], 400);
        }


    }

    public function updateAccountType(Request $request)
    {
        $this->validate($request, [
            'id' => 'required',
        ]);

        $account = AccountType::find($request->id);

        if ($account) {
            $account->update([
                'name' => $request->name,
                'description' => $request->description
            ]);

            return response()->json(['message' => 'Cartão adicionado com Sucesso'], 200);
        } else {
            return response()->json(['message' => 'Tipo de Conta não encontrado'], 400);
        }


    }

    public function getCardType($id)
    {
        $data = CardType::query()->where('id', $id)->first();
        if ($data) {
            return response()->json($data);
        } else {
            return response()->json(['message' => 'Cartão não encontrado'], 402);
        }
    }

    public function getAccountType($id)
    {
        $data = AccountType::query()->where('id', $id)->first();
        if ($data) {
            return response()->json($data);
        } else {
            return response()->json(['message' => 'Conta não encontrada'], 402);
        }
    }

    public function deleteCardType($id)
    {
        $data = CardType::query()->where('id', $id)->first();

        if ($data) {

            $cardCheck = CustomerCard::query()
                ->where('card_type_id', $data->id)
                ->count();

            if ($cardCheck > 0) {
                return response()->json(['message' => 'Este Tipo de Cartão não pode ser Removido, pois já está em uso.'], 400);
            } else {
                $data->delete();
                return response()->json(['message' => 'Tipo de Cartão Removido com Sucesso'], 200);
            }
        } else {
            return response()->json(['message' => 'Tipo de Cartão não encontrado'], 402);
        }
    }

    public function deleteAccountType($id)
    {
        $data = AccountType::query()->where('id', $id)->first();

        if ($data) {
            $cardCheck = CustomerAccount::query()
                ->where('account_type_id', $data->id)
                ->count();

            if ($cardCheck > 0) {
                return response()->json(['message' => 'Este Tipo de Conta não pode ser Removido, pois já está em uso.'], 400);
            } else {
                $data->delete();
                return response()->json(['message' => 'Tipo de Conta Removido com Sucesso'], 200);
            }
        } else {
            return response()->json(['message' => 'Tipo de Conta não encontrado'], 402);
        }
    }
}