• File: WaterController.php
  • Full Path: /var/www/imaliapi/app/Http/Controllers/WaterController.php
  • Date Modified: 04/15/2024 8:53 PM
  • File size: 3.24 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace App\Http\Controllers;

use App\ContaWater;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;

class WaterController extends Controller
{
private function validateInputsContadors($request){

        // campos
        $inputs=$request->all();

        // regras dos campos
        $inputsRules=[
            'entityNumber' => 'required',
            'clientNumber' => 'required',
            'clientName' => 'required|unique:conta_waters',
            'user_id' => 'unique:conta_waters',
        ];

        // mensagens
        $inputMessages=[
            'entityNumber.required' =>'O campo Entidade "Parc. Neg" é obrigatório!',
            'clientNumber.required' =>'O campo Cliente "Cont. Contr" é obrigatório!',
            'clientName.required' =>'O campo "Nome do cliente" é obrigatório!',
        ];

        // validando campos
        $inputValidator=Validator::make($inputs,$inputsRules,$inputMessages);


        if($inputValidator->fails()){
            return  $inputValidator; 
        }

        return false;     

    }


    public function getWaterContadores(Request $request)
    {
        $contadores = ContaWater::query()
            ->where('user_id', $request->user()->id)
            ->orderByDesc('created_at')
            ->get();
        
        return response()->json(['data' => $contadores], 200);
    }

    public function addContaWaters(Request $request){

        $inputValidator=$this->validateInputsContadors($request);
        
        if($inputValidator){
            return response()->json(['message'=> $inputValidator->errors()->all()], 500);
        }

        // criando uma nova quota
        $quota = new ContaWater;
        $quota->entityNumber = $request->entityNumber;
        $quota->clientNumber = $request->clientNumber;
        $quota->clientName = $request->clientName;
        $quota->user_id = Auth::user()->id;


        if($quota){

              // Salvando a Contador
                try{
                    
                    $quota->save();
                    return response()->json(['message'=> 'Contador de Água adicionado com sucesso!'], 200);
            
                } catch (\Exception $e){
                    return response()->json(['message'=>'Erro ao salvar o contador'], 500);
                }

        } else {

            return response()->json(['message'=>'Não pode registar os dados informados já estão em uso'], 500);

        }

    }

        public function destroy($id)
    {

        // recuperando o contador
        try{
            
            $quota = ContaWater::findOrFail($id);

        }catch(\Exception $e){
            return response()->json(['message'=>'O registo selecionado não existe na Base de Dados!'], 500);
        }

        
        // excluindo o contador
        try{
            
            $quota->delete();

            return response()->json(['message'=> 'Contador removido com sucesso.'], 200);

        }catch(\Exception $e){
            return response()->json(['message'=>'Erro ao excluir o contador, possivelmente encontra-se relacionado com outros registos'],500);
        }

    }
}