183 lines
5.1 KiB
PHP
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);
|
|
}
|
|
}
|