Files
Global-Jain/app/Http/Controllers/Api/V1/Access/MessageController.php
2025-11-05 10:37:10 +05:30

183 lines
5.1 KiB
PHP

<?php
namespace App\Http\Controllers\Api\V1\Access;
use Carbon\Carbon;
use App\Constant\Constant;
use App\Models\UserBlocked;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\Api\ApiController;
use App\Repositories\Api\Access\Message\MessageInterface as MessageRepository;
class MessageController extends ApiController
{
/**
* @param MessageRepository $messageRepository
* MessageController constructor.
*
*/
public function __construct(MessageRepository $messageRepository)
{
$this->messageRepository = $messageRepository;
}
/**
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function sendMessage(Request $request)
{
$response = [];
try{
$response = $this->messageRepository->sendMessage($request);
$this->setStatusCode($response['status']);
} catch (\Exception $ex) {
Log::error($ex);
$this->setStatusCode(403);
}
return $this->respond($response);
}
/**
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function messageThreadList(Request $request)
{
$response = [];
try{
$response = $this->messageRepository->messageThreadList($request);
$this->setStatusCode($response['status']);
} catch (\Exception $ex) {
Log::error($ex);
$this->setStatusCode(403);
}
return $this->respond($response);
}
/**
* @param Request $request
* @param $id
* @return \Illuminate\Http\JsonResponse
*/
public function messageList(Request $request)
{
$response = [];
$messageListing = $this->messageRepository->messageList($request);
$messageData = (!empty($messageListing['data'])) ? $messageListing['data']->toArray() : $messageListing['data'];
$temp = (!empty($messageListing['data'])) ? array_reverse($messageData['data']) : [];
unset($messageData['data']);
$messageData['data'] = collect($temp)
->groupBy(function ($val) {
$val['created_at'] = Carbon::parse($val['created_at'])->format('Y/m/d');
return Carbon::parse($val['created_at'])->format('Y/m/d');
});
// $messageData['data'] = $messageData['data']->reverse();
$user = getUserByID($request->user_id);
if ($user) {
$messageData['receiver_image'] = !empty($user['avatar']) ? $user['avatar'] : url('media/avatars/avatar0.jpg');
} else {
$messageData['receiver_image'] = asset('/images/misc/shravak.png');
}
$messageData['unread_count'] = messagesCounter();
$userBlocked = UserBlocked::where('user_id', $user->id)->orWhere('blocked_by', loggedInUser()->id)->first();
//When user profile is blocked
if (!empty($userBlocked)) {
$isBlocked = Constant::STATUS_ONE;
//When profile is not blocked
} else {
$isBlocked = Constant::STATUS_ZERO;
}
$messageData['is_blocked'] = $isBlocked;
if ($messageListing['status']) {
$response = [
'status' => __('api.messages.list'),
'code' => 200,
'data' => $messageData
];
} else {
$response = [
'status' => __('auth.something_went_wrong'),
'code' => 500,
'message' => $messageListing['error']
];
}
return response()->json($response, $response['code']);
}
/**
* @param Request $data
* @param $id
* @return \Illuminate\Http\JsonResponse
*/
public function searchMessage(Request $data, $id)
{
$response = [];
try{
$response = $this->messageRepository->searchMessage($data, $id);
$this->setStatusCode($response['status']);
} catch (\Exception $ex) {
Log::error($ex);
$this->setStatusCode(403);
}
return $this->respond($response);
}
/**
* @param $messageThreadId
* @return \Illuminate\Http\JsonResponse
*/
public function clearMessageConversation($messageThreadId)
{
$response = [];
try{
$response = $this->messageRepository->clearMessageConversation($messageThreadId);
$this->setStatusCode($response['status']);
} catch (\Exception $ex) {
Log::error($ex);
$this->setStatusCode(403);
}
return $this->respond($response);
}
/**
* @param $id
* @return \Illuminate\Http\JsonResponse
*/
public function deleteMessageThread($id)
{
$response = [];
try{
$response = $this->messageRepository->deleteMessageThread($id);
$this->setStatusCode($response['status']);
} catch (\Exception $ex) {
Log::error($ex);
$this->setStatusCode(403);
}
return $this->respond($response);
}
}