mirror of
https://github.com/Karaka-Management/oms-BusinessExpenses.git
synced 2026-01-11 07:08:43 +00:00
todos fixed
This commit is contained in:
parent
239c348c9f
commit
bdbe9e093a
|
|
@ -47,9 +47,6 @@ use phpOMS\Stdlib\Base\FloatInt;
|
|||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @todo: create Media add and remove functions for the expense report itself (not just the elements).
|
||||
* Also adjust the db schema for that.
|
||||
*/
|
||||
final class ApiController extends Controller
|
||||
{
|
||||
|
|
@ -495,6 +492,136 @@ final class ApiController extends Controller
|
|||
return $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create a bill
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param array $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiMediaAddToExpense(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void
|
||||
{
|
||||
if (!empty($val = $this->validateMediaAddToExpense($request))) {
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
$this->createInvalidAddResponse($request, $response, $val);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var \Modules\BusinessExpenses\Models\Expense $expense */
|
||||
$expense = ExpenseMapper::get()->where('id', (int) $request->getData('expense'))->execute();
|
||||
$path = $this->createExpenseDir($expense);
|
||||
|
||||
$uploaded = [];
|
||||
if (!empty($uploadedFiles = $request->files)) {
|
||||
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
|
||||
names: [],
|
||||
fileNames: [],
|
||||
files: $uploadedFiles,
|
||||
account: $request->header->account,
|
||||
basePath: __DIR__ . '/../../../Modules/Media/Files' . $path,
|
||||
virtualPath: $path,
|
||||
pathSettings: PathSettings::FILE_PATH,
|
||||
hasAccountRelation: false,
|
||||
readContent: $request->getDataBool('parse_content') ?? false
|
||||
);
|
||||
|
||||
$collection = null;
|
||||
foreach ($uploaded as $media) {
|
||||
$this->createModelRelation(
|
||||
$request->header->account,
|
||||
$expense->id,
|
||||
$media->id,
|
||||
ExpenseMapper::class,
|
||||
'files',
|
||||
'',
|
||||
$request->getOrigin()
|
||||
);
|
||||
|
||||
if ($request->hasData('type')) {
|
||||
$this->createModelRelation(
|
||||
$request->header->account,
|
||||
$media->id,
|
||||
$request->getDataInt('type'),
|
||||
MediaMapper::class,
|
||||
'types',
|
||||
'',
|
||||
$request->getOrigin()
|
||||
);
|
||||
}
|
||||
|
||||
if ($collection === null) {
|
||||
/** @var \Modules\Media\Models\Collection $collection */
|
||||
$collection = MediaMapper::getParentCollection($path)->limit(1)->execute();
|
||||
|
||||
if ($collection->id === 0) {
|
||||
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
|
||||
$path,
|
||||
$request->header->account,
|
||||
__DIR__ . '/../../../Modules/Media/Files' . $path,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$this->createModelRelation(
|
||||
$request->header->account,
|
||||
$collection->id,
|
||||
$media->id,
|
||||
CollectionMapper::class,
|
||||
'sources',
|
||||
'',
|
||||
$request->getOrigin()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($mediaFiles = $request->getDataJson('media'))) {
|
||||
foreach ($mediaFiles as $media) {
|
||||
$this->createModelRelation(
|
||||
$request->header->account,
|
||||
$expense->id,
|
||||
(int) $media,
|
||||
ExpenseElementMapper::class,
|
||||
'files',
|
||||
'',
|
||||
$request->getOrigin()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media added to bill.', [
|
||||
'upload' => $uploaded,
|
||||
'media' => $mediaFiles,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to validate bill creation from request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool>
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateMediaAddToExpense(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['media'] = (!$request->hasData('media') && empty($request->files)))
|
||||
|| ($val['expense'] = !$request->hasData('expense'))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create a bill
|
||||
*
|
||||
|
|
|
|||
|
|
@ -13,5 +13,5 @@
|
|||
declare(strict_types=1);
|
||||
|
||||
return ['Navigation' => [
|
||||
'BusinessExpenses' => '',
|
||||
'BusinessExpenses' => 'Spesen',
|
||||
]];
|
||||
|
|
|
|||
|
|
@ -13,22 +13,22 @@
|
|||
declare(strict_types=1);
|
||||
|
||||
return ['BusinessExpenses' => [
|
||||
':status1' => '',
|
||||
':status2' => '',
|
||||
':status3' => '',
|
||||
'Amount' => '',
|
||||
'Approved' => '',
|
||||
'CreatedAt' => '',
|
||||
'Description' => '',
|
||||
'End' => '',
|
||||
'Expenses' => '',
|
||||
'From' => '',
|
||||
'Gross' => '',
|
||||
'Net' => '',
|
||||
'Notes' => '',
|
||||
'Paid' => '',
|
||||
'Report' => '',
|
||||
'Start' => '',
|
||||
'Status' => '',
|
||||
'Title' => '',
|
||||
':status1' => 'Entwurf',
|
||||
':status2' => 'Fertiggestellt',
|
||||
':status3' => 'Inaktiv',
|
||||
'Amount' => 'Betrag',
|
||||
'Approved' => 'Genehmigt',
|
||||
'CreatedAt' => 'Erstellt',
|
||||
'Description' => 'Beschreibung',
|
||||
'End' => 'Ende',
|
||||
'Expenses' => 'Kosten',
|
||||
'From' => 'Von',
|
||||
'Gross' => 'Brutto',
|
||||
'Net' => 'Netto',
|
||||
'Notes' => 'Notizen',
|
||||
'Paid' => 'Bezahlt',
|
||||
'Report' => 'Bericht',
|
||||
'Start' => 'Start',
|
||||
'Status' => 'Status',
|
||||
'Title' => 'Titel',
|
||||
]];
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user