app/Http/Controllers/EntryController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Repositories\EntryRepositoryEloquent;
use App\Entities\Entry;
use Log;
use Lang;
use Prettus\Validator\Exceptions\ValidatorException;
use Illuminate\Support\Facades\Auth;
use App\Repositories\CompanyRepositoryEloquent;
use App\Repositories\TypeRepositoryEloquent;
use App\Repositories\ContactRepositoryEloquent;
use App\Repositories\VehicleRepositoryEloquent;
use App\Repositories\PartRepositoryEloquent;
use Alientronics\FleetanyWebAttributes\Repositories\AttributeRepositoryEloquent;
class EntryController extends Controller
{
protected $entryRepo;
protected $fields = [
'id',
'vehicle',
'entry-type',
'datetime-ini',
'cost'
];
public function __construct(EntryRepositoryEloquent $entryRepo)
{
parent::__construct();
$this->middleware('auth');
$this->entryRepo = $entryRepo;
}
public function index()
{
$filters = $this->helper->getFilters($this->request->all(), $this->fields, $this->request);
$entries = $this->entryRepo->results($filters);
return view("entry.index", compact('entries', 'filters'));
}
public function create()
{
$entry = new Entry();
$company_id = CompanyRepositoryEloquent::getCompanies();
$entry_type_id = TypeRepositoryEloquent::getTypes('entry');
$vendor_id = ContactRepositoryEloquent::getContacts('vendor', true);
$vehicle_id = VehicleRepositoryEloquent::getVehicles();
$parts = PartRepositoryEloquent::getPartsByVehicle(array_keys($vehicle_id->toArray())[0]);
$entry_parts = [];
$typedialog = TypeRepositoryEloquent::getDialogStoreOptions('entry');
$attributes = [];
if (config('app.attributes_api_url') != null) {
$attributes = AttributeRepositoryEloquent::getAttributes('entry');
}
return view("entry.edit", compact(
'entry',
'entry_type_id',
'company_id',
'vehicle_id',
'vendor_id',
'parts',
'entry_parts',
'attributes',
'typedialog'
));
}
public function store()
{
try {
$this->entryRepo->validator();
$inputs = $this->entryRepo->setInputs($this->request->all());
$entry = $this->entryRepo->create($inputs);
$inputs['entity_id'] = $entry->id;
if (config('app.attributes_api_url') != null) {
AttributeRepositoryEloquent::setValues($inputs);
}
if (!empty($inputs['parts'])) {
$entry->updateEntryParts($entry->id, $inputs['parts']);
}
return $this->redirect->to('entry')->with('message', Lang::get(
'general.succefullcreate',
['table'=> Lang::get('general.Entry')]
));
} catch (ValidatorException $e) {
return $this->redirect->back()->withInput()
->with('errors', $e->getMessageBag());
}
}
public function edit($idEntry)
{
$entry = $this->entryRepo->find($idEntry);
$entry = $this->entryRepo->getInputs($entry);
$this->helper->validateRecord($entry);
$company_id = CompanyRepositoryEloquent::getCompanies();
$entry_type_id = TypeRepositoryEloquent::getTypes('entry');
$vendor_id = ContactRepositoryEloquent::getContacts('vendor', true);
$vehicle_id = VehicleRepositoryEloquent::getVehicles();
$parts = PartRepositoryEloquent::getPartsByVehicle($entry->vehicle_id);
$entry_parts = [];
$typedialog = TypeRepositoryEloquent::getDialogStoreOptions('entry');
foreach ($entry->partsEntries->toArray() as $entryPart) {
$entry_parts[] = $entryPart['part_id'];
}
$attributes = [];
if (config('app.attributes_api_url') != null) {
$attributes = AttributeRepositoryEloquent::getAttributesWithValues(
'entry.'.$entry->type->name,
$idEntry
);
}
return view("entry.edit", compact(
'entry',
'entry_type_id',
'company_id',
'vehicle_id',
'vendor_id',
'parts',
'entry_parts',
'attributes',
'typedialog'
));
}
public function update($idEntry)
{
try {
$entry = $this->entryRepo->find($idEntry);
$this->helper->validateRecord($entry);
$this->entryRepo->validator();
$inputs = $this->entryRepo->setInputs($this->request->all());
$inputs['entity_id'] = $this->entryRepo->update($inputs, $idEntry)->id;
if (config('app.attributes_api_url') != null) {
AttributeRepositoryEloquent::setValues($inputs);
}
if (!empty($inputs['parts'])) {
$entry->updateEntryParts($entry->id, $inputs['parts']);
}
return $this->redirect->to('entry')->with('message', Lang::get(
'general.succefullupdate',
['table'=> Lang::get('general.Entry')]
));
} catch (ValidatorException $e) {
return $this->redirect->back()->withInput()
->with('errors', $e->getMessageBag());
}
}
public function destroy($idEntry)
{
$entry = $this->entryRepo->find($idEntry);
if ($entry) {
$this->helper->validateRecord($entry);
Log::info('Delete field: '.$idEntry);
$this->entryRepo->delete($idEntry);
return $this->redirect->to('entry')->with('message', Lang::get("general.deletedregister"));
} else {
return $this->redirect->to('entry')->with('message', Lang::get("general.deletedregistererror"));
}
}
}