alientronics/fleetany-attributes

View on GitHub
app/Repositories/ValueRepositoryDynamo.php

Summary

Maintainability
A
3 hrs
Test Coverage
<?php
namespace App\Repositories;

use Illuminate\Http\Request;
use App\Entities\DynamoDb\KeyDynamoDb;

class ValueRepositoryDynamo extends ValueRepository
{
    public function get($entity_key, $entity_id)
    {
        $entity_keys = HelperRepository::getEntityKeys($entity_key);
        
        if (count($entity_keys) > 1) {
            $Keys1 = $this->searchValues($entity_keys[0], $entity_id);
            $Keys2 = $this->searchValues($entity_keys[1], $entity_id);
            $Keys = $Keys1->merge($Keys2);
        } else {
            $Keys = $this->searchValues($entity_key, $entity_id);
        }
        
        $entity = $this->entity;
        
        $Values = $entity::where('entity_key', $entity_key)
            ->where('entity_id', (int) $entity_id)
            ->get();
    
        return response()->json($Values);
    
    }
    
    private function searchValues($entity_key, $entity_id)
    {
        $entity = $this->entity;
        
        $Values = $entity::where('entity_key', $entity_key)
            ->where('entity_id', (int) $entity_id)
            ->get();
        
        return $Values;
    }
    
    public function set(Request $request, $entity_key, $entity_id, $company_id)
    {
        $entity = $this->entity;
        
        $files = [];
        if (!empty($request->all())) {
            foreach ($request->all() as $key => $value) {
                if ($request->hasFile($key)) {
                    $files[] = $key;
                    $file = $request->file($key);
                    $value = $file->getClientOriginalName();
                }

                if ($key != 'api_token') {
                    $fields['entity_key'] = $entity_key;
                    $fields['entity_id'] = (int) $entity_id;
                    $fields['attribute_id'] = (int) $key;
                    $fields['value'] = $value;
                    $fields['company_id'] = (int) $company_id;

                    $record = $entity::where('entity_key', $entity_key)
                        ->where('entity_id', $entity_id)
                        ->where('attribute_id', $key)
                        ->get()
                        ->first();
    
                    if (empty($record)) {
                        $idRecord = HelperRepository::getDynamoDbLastRecordId($entity) + 1;
                    } else {
                        $idRecord = (int) $record['id'];
                    }
                    
                    $model = new $entity($fields);
                    $model->setId($idRecord);
                    $model->save();
                }
            }
        }
    
        HelperRepository::saveFiles($request, $files);
    
        return response()->json('created');
    }
    
    public function validateFileCompanyId($fileName, $companyId)
    {
        $entity = $this->entity;

        $results = $entity::where([
                'value' => (string)$fileName,
                'company_id' => (int)$companyId,
            ])
            ->get();

        return $results;
    }
}