redoing branch. old branch merge onflicts were waaay too gnarly

This commit is contained in:
akemidx 2024-09-16 19:30:26 -04:00
parent fe5fc6e0ce
commit 74efd850af
9 changed files with 147 additions and 7 deletions

28
app/Events/NoteAdded.php Normal file
View file

@ -0,0 +1,28 @@
<?php
namespace App\Events;
use App\Models\User;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class NoteAdded
{
use Dispatchable, SerializesModels;
public $itemNoteAddedOn;
public $note;
public $noteAddedBy;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($itemNoteAddedOn, User $noteAddedBy, $note)
{
$this->itemNoteAddedOn = $itemNoteAddedOn;
$this->note = $note;
$this->noteAddedBy = $noteAddedBy;
}
}

View file

@ -0,0 +1,26 @@
<?php
namespace App\Http\Controllers\Api;
use App\Events\NoteAdded;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\Asset;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class NotesController extends Controller
{
public function store(Request $request)
{
$item = Asset::findOrFail($request->input("id"));
$this->authorize('update', $item);
$validated = $request->validate([
'note' => 'required|string|max:500']);
event(new NoteAdded($item, Auth::user(), $validated['note']));
return response()->json(Helper::formatStandardApiResponse('success'));
}
}

View file

@ -32,7 +32,8 @@ class ModalController extends Controller
'statuslabel',
'supplier',
'upload-file',
'user',
'user',
'add-note',
];

View file

@ -17,6 +17,7 @@ use App\Events\ItemAccepted;
use App\Events\ItemDeclined;
use App\Events\LicenseCheckedIn;
use App\Events\LicenseCheckedOut;
use App\Events\NoteAdded;
use App\Models\Actionlog;
use App\Models\User;
use App\Models\LicenseSeat;
@ -128,6 +129,23 @@ class LogListener
}
/**
* Note is added to action log
*
*/
public function onNoteAdded(NoteAdded $event)
{
$logaction = new Actionlog();
$logaction->item_id = $event->itemNoteAddedOn->id;
$logaction->item_type = get_class($event->itemNoteAddedOn);
$logaction->note = $event->note; //this is the received alphanumeric text from the box
$logaction->user_id = $event->noteAddedBy->id;
$logaction->action_type = 'note_added';
$logaction->save();
}
/**
* Register the listeners for the subscriber.
*
@ -141,6 +159,7 @@ class LogListener
'CheckoutAccepted',
'CheckoutDeclined',
'UserMerged',
'NoteAdded',
];
foreach ($list as $event) {

17
app/Models/Note.php Normal file
View file

@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphTo;
class Note extends Model
{
/**
* Get the parent item of a comment
*/
public function commentable(): MorphTo
{
return $this->morphTo();
}
}

View file

@ -28,7 +28,7 @@ $(function () {
var baseUrl = $('meta[name="baseUrl"]').attr('content');
//handle modal-add-interstitial calls
var model, select, refreshSelector;
var model, select, refreshSelector, hasnopayload;
if($('#createModal').length == 0) {
$('body').append('<div class="modal fade" id="createModal"></div><!-- /.modal -->');
@ -122,11 +122,13 @@ $(function () {
$('#modal_error_msg').html(error_message).show();
return false;
}
var id = result.payload.id;
var name = result.payload.name || (result.payload.first_name + " " + result.payload.last_name);
if(!id || !name) {
console.error("Could not find resulting name or ID from modal-create. Name: "+name+", id: "+id);
return false;
if(!hasnopayload) {
var id = result.payload.id;
var name = result.payload.name || (result.payload.first_name + " " + result.payload.last_name);
if (!id || !name) {
console.error("Could not find resulting name or ID from modal-create. Name: " + name + ", id: " + id);
return false;
}
}
$('#createModal').modal('hide');
$('#createModal').html("");

View file

@ -215,6 +215,8 @@ return [
'no_results' => 'No Results.',
'no' => 'No',
'notes' => 'Notes',
'note_added' => 'Note Added',
'add_note' => 'Add Note',
'order_number' => 'Order Number',
'only_deleted' => 'Only Deleted Assets',
'page_menu' => 'Showing _MENU_ items',

View file

@ -0,0 +1,29 @@
{{-- See snipeit_modals.js for what powers this --}}
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h2 class="modal-title">{{ trans('general.add_note') }}</h2>
</div>
<div class="modal-body">
<form action="{{ route('api.notes.store') }}" onsubmit="return false">
<input type="hidden" name="type" value="{{request("type")}}"/>
<input type="hidden" name="id" value="{{request("id")}}"/>
<div class="alert alert-danger" id="modal_error_msg" style="display:none"></div>
<div class="row">
{{ Form::label('note', trans('general.add_note'), array('class' => 'col-md-3 control-label')) }}
<div class="col-md-8">
<textarea class="form-control" id="note" name="note">{{ old('note') }}</textarea>
{!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('button.cancel') }}</button>
<button type="button" class="btn btn-primary" id="modal-save">{{ trans('general.save') }}</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->

View file

@ -1269,6 +1269,22 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'throttle:api']], functi
}); // end reports api routes
/**
* Notes API routes
*/
Route::group(['prefix' => 'notes'], function () {
Route::post(
'/',
[ Api\NotesController::class,
'store'
]
)->name('api.notes.store');
}); // end notes api routes
/**
* Version API routes
*/