Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

bytefury/crater

8213 stars
2 code files
View bytefury/crater on GitHub

app/Traits/HasCustomFieldsTrait.php

Open in GitHub
use Crater\Models\CustomField;
 
trait HasCustomFieldsTrait
{
public function fields()
{
return $this->morphMany('Crater\Models\CustomFieldValue', 'custom_field_valuable');
}
 
public function addCustomFields($customFields)
{
foreach ($customFields as $field) {
$customField = CustomField::find($field['id']);
 
$customFieldValue = [
'type' => $customField->type,
'custom_field_id' => $customField->id,
'company_id' => $customField->company_id,
getCustomFieldValueKey($customField->type) => $field['value'],
];
 
$this->fields()->create($customFieldValue);
}
}
//
}

app/Models/Expense.php

Open in GitHub
use Illuminate\Database\Eloquent\Model;
use Crater\Traits\HasCustomFieldsTrait;
 
class Expense extends Model
{
use HasCustomFieldsTrait;
 
//
public static function createExpense($request)
{
$data = $request->validated();
$data['creator_id'] = Auth::id();
$data['company_id'] = $request->header('company');
 
$expense = self::create($data);
 
if ($request->hasFile('attachment_receipt')) {
$expense->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts', 'local');
}
 
$customFields = json_decode($request->customFields, true);
 
if ($customFields) {
$expense->addCustomFields($customFields);
}
 
return $expense;
}
//
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.