mirror of
https://github.com/HDInnovations/UNIT3D-Community-Edition.git
synced 2026-01-21 19:40:47 -06:00
109 lines
2.5 KiB
PHP
109 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
use App\Http\Resources\ChatMessageResource;
|
|
use App\Http\Resources\ChatRoomResource;
|
|
use App\Repositories\ChatRepository;
|
|
use App\User;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class ChatController extends Controller
|
|
{
|
|
|
|
/**
|
|
* @var ChatRepository
|
|
*/
|
|
private $chat;
|
|
|
|
/**
|
|
* @var AuthManager
|
|
*/
|
|
private $auth;
|
|
|
|
public function __construct(ChatRepository $chat)
|
|
{
|
|
$this->chat = $chat;
|
|
}
|
|
|
|
/* STATUSES */
|
|
public function statuses()
|
|
{
|
|
return response($this->chat->statuses(), 200);
|
|
}
|
|
|
|
/* ROOMS */
|
|
public function rooms()
|
|
{
|
|
return ChatRoomResource::collection($this->chat->rooms());
|
|
}
|
|
|
|
public function config()
|
|
{
|
|
return response($this->chat->config(), 200);
|
|
}
|
|
|
|
/* MESSAGES */
|
|
public function messages($room_id)
|
|
{
|
|
return ChatMessageResource::collection($this->chat->messages($room_id));
|
|
}
|
|
|
|
public function createMessage(Request $request)
|
|
{
|
|
$uid = $request->get('user_id');
|
|
|
|
if (Auth::user()->id !== $uid) {
|
|
return response('error', 401);
|
|
}
|
|
|
|
$user_id = $uid;
|
|
$room_id = $request->get('chatroom_id');
|
|
$message = $request->get('message');
|
|
$save = $request->get('save');
|
|
|
|
$message = $this->chat->message($user_id, $room_id, $message);
|
|
|
|
if (!$save) {
|
|
$message->delete();
|
|
}
|
|
|
|
return $save ? new ChatMessageResource($message) : response('success', 200);
|
|
}
|
|
|
|
public function deleteMessage($id)
|
|
{
|
|
$this->chat->deleteMessage($id);
|
|
return response('success', 200);
|
|
}
|
|
|
|
/* USERS */
|
|
public function updateUserChatStatus(Request $request, $id)
|
|
{
|
|
$user = User::with(['chatStatus', 'chatroom', 'group'])->findOrFail($id);
|
|
$status = $this->chat->statusFindOrFail($request->get('status_id'));
|
|
|
|
$user->chatStatus()->dissociate();
|
|
$user->chatStatus()->associate($status);
|
|
|
|
$user->save();
|
|
|
|
return response($user, 200);
|
|
}
|
|
|
|
public function updateUserRoom(Request $request, $id)
|
|
{
|
|
$user = User::with(['chatStatus', 'chatroom', 'group'])->findOrFail($id);
|
|
$room = $this->chat->roomFindOrFail($request->get('room_id'));
|
|
|
|
$user->chatroom()->dissociate();
|
|
$user->chatroom()->associate($room);
|
|
|
|
$user->save();
|
|
|
|
return response($user, 200);
|
|
}
|
|
}
|