Repo for the search and displace core module including the interface to select files and search and displace operations to run on them. https://searchanddisplace.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

73 lines
2.1 KiB

<?php
namespace App\Http\Controllers;
use App\SearchDisplace\Documents\DocumentFile;
use Illuminate\Support\Facades\Storage;
use App\SearchDisplace\SearchAndDisplaceXML;
class SearchAndDisplaceController extends Controller
{
protected $storage;
public function __construct()
{
$this->storage = Storage::disk('local');
}
public function show($id)
{
$handler = new DocumentFile();
try {
$result = $handler->getAfterIngest($id);
// remove HTML file after receiving it's content
if ($result['status'] !== 'processing') {
$this->storage->delete("contracts/$id/document.html");
}
return response()->json($result, 200);
} catch (\Exception $exception) {
return response()->json([
'message' => $exception->getMessage(),
], 400);
}
}
public function store()
{
request()->validate([
'file' => 'required', // file.
'searchers' => 'required|array',
'searchers.*.key' => 'required',
'searchers.*.type' => 'required|in:replace,displace',
'searchers.*.value' => 'nullable',
'searchOnly' => 'nullable|boolean'
]);
$file = request()->input('file');
$searchOnly = request()->input('searchOnly') ?? false;
$changes = (new SearchAndDisplaceXML($file, request()->input('searchers'), $searchOnly))->execute();
try {
$processedFile = "contracts/$file/document_sdapplied.html";
if($this->storage->exists($processedFile)) {
$processedFileContent = $this->storage->get($processedFile);
$this->storage->delete($processedFile);
return response()->json([
'content' => $processedFileContent,
'indexes' => []
], 200);
}
} catch (\Exception $exception) {
return response()->json([
'message' => $exception->getMessage(),
'trace' => $exception->getTrace(),
], 400);
}
}
}