refactor: replace custom CRM with Monica fork
Some checks failed
Build & Push Monica Image to Gitea Registry / build-and-push (push) Failing after 9s

This commit is contained in:
Kroonk
2026-05-22 16:19:55 +02:00
parent 38cc4c09ca
commit a213a1dba0
2215 changed files with 242567 additions and 6015 deletions

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Controllers\Api\Settings;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Database\QueryException;
use App\Http\Controllers\Api\ApiController;
use App\Http\Resources\AuditLog\AuditLog as AuditLogResource;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
class ApiAuditLogController extends ApiController
{
/**
* Get the list of the audit logs.
*
* @param Request $request
* @return JsonResponse|AnonymousResourceCollection
*/
public function index(Request $request)
{
try {
$logs = auth()->user()->account->auditLogs()
->paginate($this->getLimitPerPage());
} catch (QueryException $e) {
return $this->respondInvalidQuery();
}
return AuditLogResource::collection($logs);
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers\Api\Settings;
use Illuminate\Http\Request;
use App\Models\Settings\Term;
use App\Http\Controllers\Api\ApiController;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use App\Http\Resources\Settings\Compliance\Compliance as ComplianceResource;
class ApiComplianceController extends ApiController
{
/**
* Get the list of terms and privacy policies.
*
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(Request $request)
{
$terms = Term::orderBy('term_version', 'desc')->paginate($this->getLimitPerPage());
return ComplianceResource::collection($terms);
}
/**
* Get the detail of a given term.
*
* @param Request $request
* @return ComplianceResource|\Illuminate\Http\JsonResponse
*/
public function show(Request $request, $termId)
{
try {
$term = Term::where('id', $termId)
->firstOrFail();
} catch (ModelNotFoundException $e) {
return $this->respondNotFound();
}
return new ComplianceResource($term);
}
}

View File

@@ -0,0 +1,163 @@
<?php
namespace App\Http\Controllers\Api\Settings;
use Illuminate\Http\Request;
use Illuminate\Database\QueryException;
use App\Models\Contact\ContactFieldType;
use Illuminate\Support\Facades\Validator;
use App\Http\Controllers\Api\ApiController;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use App\Http\Resources\Settings\ContactFieldType\ContactFieldType as ContactFieldTypeResource;
class ApiContactFieldTypeController extends ApiController
{
/**
* Get the list of contact field types.
*
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(Request $request)
{
$contactFieldTypes = auth()->user()->account->contactFieldTypes()
->paginate($this->getLimitPerPage());
return ContactFieldTypeResource::collection($contactFieldTypes);
}
/**
* Get the detail of a given contact field type.
*
* @param Request $request
* @return ContactFieldTypeResource|\Illuminate\Http\JsonResponse
*/
public function show(Request $request, $contactFieldTypeId)
{
try {
$contactFieldType = ContactFieldType::where('account_id', auth()->user()->account_id)
->where('id', $contactFieldTypeId)
->firstOrFail();
} catch (ModelNotFoundException $e) {
return $this->respondNotFound();
}
return new ContactFieldTypeResource($contactFieldType);
}
/**
* Store the contactfieldtype.
*
* @param Request $request
* @return ContactFieldTypeResource|\Illuminate\Http\JsonResponse
*/
public function store(Request $request)
{
$isvalid = $this->validateUpdate($request);
if ($isvalid !== true) {
return $isvalid;
}
try {
$contactFieldType = ContactFieldType::create(
$request->except(['account_id'])
+ ['account_id' => auth()->user()->account_id]
);
} catch (QueryException $e) {
return $this->respondNotTheRightParameters();
}
return new ContactFieldTypeResource($contactFieldType);
}
/**
* Update the contact field type.
*
* @param Request $request
* @param int $contactFieldTypeId
* @return ContactFieldTypeResource|\Illuminate\Http\JsonResponse
*/
public function update(Request $request, $contactFieldTypeId)
{
try {
$contactFieldType = ContactFieldType::where('account_id', auth()->user()->account_id)
->where('id', $contactFieldTypeId)
->firstOrFail();
} catch (ModelNotFoundException $e) {
return $this->respondNotFound();
}
$isvalid = $this->validateUpdate($request);
if ($isvalid !== true) {
return $isvalid;
}
// Update the contactfieldtype itself
try {
$contactFieldType->update(
$request->only([
'name',
'fontawesome_icon',
'protocol',
'delible',
'type',
])
);
} catch (QueryException $e) {
return $this->respondNotTheRightParameters();
}
return new ContactFieldTypeResource($contactFieldType);
}
/**
* Validate the request for update.
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse|true
*/
private function validateUpdate(Request $request)
{
// Validates basic fields to create the entry
$validator = Validator::make($request->all(), [
'name' => 'required|max:255',
'fontawesome_icon' => 'nullable|max:255',
'protocol' => 'nullable|max:255',
'delible' => 'integer',
'type' => 'nullable|max:255',
]);
if ($validator->fails()) {
return $this->respondValidatorFailed($validator);
}
return true;
}
/**
* Delete an contactfieldtype.
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function destroy(Request $request, $contactFieldTypeId)
{
try {
$contactFieldType = ContactFieldType::where('account_id', auth()->user()->account_id)
->where('id', $contactFieldTypeId)
->firstOrFail();
} catch (ModelNotFoundException $e) {
return $this->respondNotFound();
}
$contactFields = auth()->user()->account->contactFields
->where('contact_field_type_id', $contactFieldTypeId);
foreach ($contactFields as $contactField) {
$contactField->delete();
}
$contactFieldType->delete();
return $this->respondObjectDeleted($contactFieldType->id);
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Http\Controllers\Api\Settings;
use Illuminate\Http\Request;
use App\Models\Settings\Currency;
use App\Http\Controllers\Api\ApiController;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use App\Http\Resources\Settings\Currency\Currency as CurrencyResource;
class ApiCurrencyController extends ApiController
{
/**
* Get the list of currencies.
*
* @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
*/
public function index(Request $request)
{
$currencies = Currency::paginate($this->getLimitPerPage());
return CurrencyResource::collection($currencies);
}
/**
* Get the detail of a given currency.
*
* @param Request $request
* @return CurrencyResource|\Illuminate\Http\JsonResponse
*/
public function show(Request $request, $currencyId)
{
try {
$currency = Currency::findOrFail($currencyId);
} catch (ModelNotFoundException $e) {
return $this->respondNotFound();
}
return new CurrencyResource($currency);
}
}