File: /var/www/matriculas_api_dev/app/Repositories/PaymentConceptDetailRepository.php
<?php
namespace App\Repositories;
use App\Models\PaymentConceptDetail;
use Exception;
class PaymentConceptDetailRepository
{
public function getAll($code = '', $onlyActive = false)
{
$query = PaymentConceptDetail::where('deleted', false)->orderby('id', 'asc');
if ($onlyActive) {
$query->where('status', true);
}
if (!empty($code)) {
$register = $query->where('code', $code)->first();
if (!$register) {
return false;
}
return $register;
}
return $query->get();
}
public function getById($id)
{
$register = PaymentConceptDetail::find($id);
if (!$register) {
throw new Exception("Concepto de pago no existe o fue eliminado", 404);
}
return $register;
}
public function getByCode($code, $codeType = 'code')
{
if ($codeType == 'code_toku') {
$query = PaymentConceptDetail::where('code_toku', $code);
} else {
$query = PaymentConceptDetail::where('code', $code);
}
$register = $query->first();
if (!$register) {
return false;
}
return $register;
}
public function getByName($description, $id = null)
{
$query = PaymentConceptDetail::where('description', $description);
if ($id > 0) {
$query->where('id', '!=', $id);
}
$register = $query->first();
if (!$register) {
return false;
}
return $register;
}
public function create($data)
{
return PaymentConceptDetail::create([
'description' => ($data->description),
'code' => strLower($data->code),
'price_regular' => ($data->price_regular),
'price_exceptional' => ($data->price_exceptional),
'price_cae' => ($data->price_cae),
'payment_concept_id' => ($data->payment_concept),
'currency_type_id' => ($data->currency_type),
'required_element' => $data->required_element == 0 ? false : true,
'requires_assignment' => $data->requires_assignment == 0 ? false : true,
'requires_payment' => $data->requires_payment == 0 ? false : true,
'family_payment' => $data->family_payment == 0 ? false : true,
'code_toku' => $data->code_toku == 0 ? false : true,
'status' => $data->status == 0 ? false : true,
'created_at' => now(),
]);
}
public function update($register, $data)
{
$register->description = ($data->description);
$register->code = strLower($data->code);
$register->price_regular = ($data->price_regular);
$register->price_exceptional = ($data->price_exceptional);
$register->price_cae = ($data->price_cae);
$register->payment_concept_id = ($data->payment_concept);
$register->currency_type_id = ($data->currency_type);
$register->required_element = $data->required_element == 0 ? false : true;
$register->requires_assignment = $data->requires_assignment == 0 ? false : true;
$register->requires_payment = $data->requires_payment == 0 ? false : true;
$register->family_payment = $data->family_payment == 0 ? false : true;
$register->status = $data->status == 0 ? false : true;
$register->code_toku = ($data->code_toku);
$register->updated_at = now();
if ($register->save()) {
return true;
}
return false;
}
public function getColegiaturaConceptByCourse(int $courseId)
{
return PaymentConceptDetail::where('deleted', false)
->whereHas('courses', function ($query) use ($courseId) {
$query->where('course_id', $courseId);
})
->first();
}
}