File: /home/imensosw/www/amanda/app/Http/Controllers/ChatController.php
<?php
namespace App\Http\Controllers;
use App\ChatHistory;
use App\User;
use Illuminate\Http\Request;
class ChatController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function getUser(Request $request)
{
$page=$request->page;
$result=array();
$users = User::
select("users.name","users.id","users.image","users.gender","users.email")
->orderBy('users.name','asc')
->where(array("is_admin"=>0,'status'=>'active'))
->take(1)->skip($page)
->get();
foreach ($users as $user) {
$image="/api/imagesView/".$user->image;
if($user->image=="")
{
$image='/images/'.$user->gender.'.png';
}
//$test = ChatHistory::getLatestTimeStamp($user->id,1);
/*print_r($test);
die();*/
//$timestamp = date("h:i",strtotime($test));
$data=array(
"roomId"=>$user->id,
"avatar"=>$image,
"roomName"=> $user->name,
"roomInfo"=>array('gender'=>$user->gender, 'email'=>$user->email),
"unreadCount"=>ChatHistory::getUnredMessageCount($user->id,1),
"users"=>array()
);
$result[]=$data;
}
return response()->json([
'status' => (bool) $result,
'data' => $result
]);
}
public function sendMessage(Request $request)
{
$imageName="";
if($request->hasfile('file'))
{
$file=$request->file("file");
$extension=$request->extension;
$imageName = rand(111,999).time().".".$extension;
$file->move(config('constants.imageFolderPath')."/chatImage/",$imageName);
}
$chat = ChatHistory::create([
'from' =>1,
'to' => $request->sender_id,
'message' =>$request->content,
'fileName'=> $imageName
]);
$chat['date']=date("d M",strtotime($chat['created_at']));
$chat['day']=date("h:i",strtotime($chat['created_at']));
if ($chat['fileName']!="") {
$chat["file"]=array(
"name"=> $imageName,
"size"=> '67351',
"type"=>'png',
"duration"=> 14.4,
"url"=>url('/')."/api/chatImagesView/".$chat['fileName']
);
}
return response()->json([
'imageName'=>$imageName,
'status' => (bool) $chat,
'data' => $chat,
'message' => $chat ? 'Tag Created!' : 'Error Creating Tag']);
}
public function getMessage(Request $request)
{
$page=$request->page;
$result=array();
$to=$request->sender_id;
$from=1;
$parameter=array("from"=>$from,"to"=>$to);
$chats= ChatHistory::
leftjoin("users","users.id","chat_history.from")
->leftjoin("users as users2","users.id","chat_history.to")
->where(function($query) use ($parameter)
{
$query->where('chat_history.from', '=', $parameter['from'])
->where('chat_history.to', '=', $parameter['to']);
})
->orwhere(function($query) use ($parameter)
{
$query->where('chat_history.from', '=', $parameter['to'])
->where('chat_history.to', '=', $parameter['from']);
})
->select("chat_history.*","users.name","users2.name as toname")
->take(20)
->orderBy("id","asc")
->take(10)->skip($page*10)
->get();
foreach ($chats as $chat) {
$data=array(
"_id"=>$chat->id,
"content"=> $chat->message,
"senderId"=>$chat->to,
"username"=>$chat->name,
"date"=>date("d M",strtotime($chat->created_at)),
"timestamp"=>date("h:i",strtotime($chat->created_at)),
"system"=> false,
"saved"=> true,
"distributed"=> true,
"seen"=> 'true',
"disableActions"=>'false',
"disableReactions"=> 'false'
);
if ($chat->fileName!="") {
$data=array_merge($data,
array(
"file"=>array(
"name"=> 'My File',
"size"=> '67351',
"type"=>'png',
"duration"=> 14.4,
"url"=>url('/')."/api/chatImagesView/".$chat->fileName,
)
)
);
}
$result[]=$data;
}
ChatHistory::updateUnredMessage($to,1);
return response()->json([
'status' => (bool) $result,
'data' => $result,
'message' => $result ? 'Get Chat!' : 'Error Geting Chat'
]);
}
public function updateStatus(Request $request)
{
$chat_history =ChatHistory::updateUnredMessage($request->senderId,1);
return response()->json([
'status' => (bool) $chat_history,
'data' => $chat_history,
'message' => $chat_history ? 'Message Status update!' : 'Error in Message status update'
]);
}
}