<?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);
}
}
}