This commit is contained in:
2024-05-14 11:07:57 +07:00
parent 618fd9bf91
commit e113802776
16 changed files with 507 additions and 22 deletions

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class ChatMessageSent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public $message;
public function __construct($message)
{
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('chat');
}
}

View File

@@ -39,25 +39,23 @@ class DuitkuHelper
];
try {
$transactionList = \Duitku\Pop::transactionStatus($merchantOrderId, $duitkuConfig);
header('Content-Type: application/json');
$transaction = json_decode($transactionList);
// var_dump($transactionList);
if ($transaction->statusCode == "00") {
// Action Success
} else if ($transaction->statusCode == "01") {
// Action Pending
if ($transaction->statusCode == "00" || $transaction->statusCode == "01") {
// Transaksi berhasil atau dalam proses
return $transaction;
} else {
// Action Failed Or Expired
// Transaksi gagal atau kedaluwarsa
return ['error' => true];
}
return $transaction;
// return json_decode($transaction);
} catch (\Duitku\Exceptions\DuitkuException $e) {
// Tangani pengecualian yang terkait dengan Duitku
return ['error' => true, 'message' => $e->getMessage()];
} catch (Exception $e) {
return $e->getMessage();
// Tangani pengecualian umum
return ['error' => true, 'message' => $e->getMessage()];
}
}
public static function createInvoice($data)

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Listeners;
use App\Events\ChatMessageSent;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
class ProcessChatMessage
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle(ChatMessageSent $event)
{
// Proses pesan yang diterima dari event
$message = $event->message;
}
}

17
app/Models/Channel.php Normal file
View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Channel extends Model
{
use HasFactory;
protected $fillable = [
'name',
'type',
'member_id',
'doctor_id',
];
}

View File

@@ -52,6 +52,7 @@ class File extends Model
'final-log-kondisi' => 'final-log/',
'docs' => 'docs/',
'additional-files' => 'additional-files/',
'chat' => 'chat/',
];
public function fileable()
@@ -89,4 +90,15 @@ class File extends Model
$file->storeAs('public/' . $directory, $fileName . '.' . $extension);
return $path;
}
public static function storeFileChat($type, $id, $file)
{
// $fileName = self::getFileName($type, $id);
$fileName = $file->getClientOriginalName();
$directory = self::getDirectory($type);
$extension = $file->getClientOriginalExtension();
$path = $directory . $fileName . '.' . $extension;
$file->store('public/' .$path);
return $path;
}
}

25
app/Models/Message.php Normal file
View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
use HasFactory;
protected $connection = 'mysql';
protected $fillable = [
'user_id',
'channel_id',
'content',
'type',
'from_user'
];
public function files()
{
return $this->morphMany(File::class, 'fileable')->whereNull('deleted_at');
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class UserChannel extends Model
{
use HasFactory;
protected $connection = 'mysql';
protected $fillable = [
'user_id',
'channel_id',
];
}

View File

@@ -5,6 +5,7 @@ namespace App\Providers;
use App\Events\ClaimApproved;
use App\Listeners\LogClaimJournal;
use App\Listeners\NotifyClaimRequested;
use App\Listeners\ProcessChatMessage;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
@@ -29,6 +30,10 @@ class EventServiceProvider extends ServiceProvider
ClaimApproved::class => [
LogClaimJournal::class,
],
ChatMessageSent::class => [
ProcessChatMessage::class,
],
];