Skip to content

Commit

Permalink
Merge pull request #19 from tookantech/OutBoxMethod
Browse files Browse the repository at this point in the history
Out box method
  • Loading branch information
miladnouri authored Sep 6, 2023
2 parents 5ac0e71 + c42570d commit b843c0f
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 33 deletions.
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ $message = (new SmsMessage())->driver()
$response = Chapaar::send($message);

```

Sending With Template Message
```php
use TookanTech\Chapaar\Facades\Chapaar;
Expand Down Expand Up @@ -112,6 +111,13 @@ $message =(new SmsMessage())
$response = Chapaar::verify($message);

```

Get Latest Outbox messages
it automatically get the latest sent messages for default driver
```php
$response = Chapaar::outbox(100);
```

## Using In Notifications
Please review [laravel notifications](https://laravel.com/docs/10.x/notifications) on how use notifications in laravel.

Expand Down
7 changes: 5 additions & 2 deletions src/Chapaar.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@ public function getDefaultSetting(): object

public function getDefaultDriver(): DriverConnector
{

$connector = Drivers::tryFrom(config('chapaar.default'))->connector();

return new $connector;

}

public function send($message): object
Expand All @@ -43,4 +41,9 @@ public function account(): object
{
return $this->driver->account();
}

public function outbox(int $page_size = 100, int $page_number = 1): object
{
return $this->driver->outbox($page_size, $page_number);
}
}
6 changes: 5 additions & 1 deletion src/Contracts/DriverConnector.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@ public function send($message);

public function verify($message);

public function outbox($page_size = 100, $page_number = 1): object;

public function generateResponse(int $status, string $message, array $data = null): object;

public function generateAccountResponse(object $response): object;
public function generateAccountResponse($credit, $expire_date): object;

public function generateReportResponse($message_id, $receptor, $content, $sent_date, $line_number, $cost): object;
}
25 changes: 16 additions & 9 deletions src/Drivers/Ghasedak/GhasedakConnector.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,22 @@ public function account(): object
$url = self::endpoint('account', 'info');
$response = $this->performApi($url);

return $this->generateAccountResponse($response);
$items = $response->items;

return $this->generateAccountResponse($items->balance, $items->expire);
}

/**
* @throws GuzzleException
*/
public function outbox($page_size = 100, $page_number = 1): object
{
$url = self::endpoint('sms', 'status');
$response = $this->performApi($url);

return collect($response->items)->map(function ($item) {
return $this->generateReportResponse($item->messageid, $item->receptor, $item->message, $item->senddate, $item->sender, $item->price);
});
}

/**
Expand Down Expand Up @@ -115,12 +130,4 @@ protected function validateResponseStatus($status_code, $json_response): void
throw new ApiException($json_response->result->message, $json_response->result->code);
}
}

public function generateAccountResponse($response): object
{
return (object) [
'credit' => $response->items->balance,
'expire_date' => $response->items->expire,
];
}
}
23 changes: 12 additions & 11 deletions src/Drivers/Kavenegar/KavenegarConnector.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,19 @@ public function account(): object
{
$url = self::endpoint(self::$setting->api_key, 'account', 'info.json');
$response = $this->performApi($url);
$entries = $response->entries;

return $this->generateAccountResponse($entries->remaincredit, $entries->expiredate);
}

public function outbox($page_size = 100, $page_number = 1): object
{
$url = self::endpoint(self::$setting->api_key, 'sms', 'latestoutbox.json')."?pagesize=$page_size";
$response = $this->performApi($url);

return $this->generateAccountResponse($response);
return collect($response->entries)->map(function ($item) {
return $this->generateReportResponse($item->message_id, $item->receptor, $item->message, $item->date, $item->sender, $item->cost);
});
}

/**
Expand All @@ -111,14 +122,4 @@ protected function validateResponseStatus($status_code, $json_response): void
throw new ApiException($json_response->return->message, $json_response->return->status);
}
}

public function generateAccountResponse($response): object
{
$entries = $response->entries;

return (object) [
'credit' => $entries->remaincredit,
'expire_date' => $entries->expiredate,
];
}
}
25 changes: 16 additions & 9 deletions src/Drivers/SmsIr/SmsIrConnector.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,22 @@ public function account(): object
$response = $this->client->get($url);
$response = $this->processApiResponse($response);

return $this->generateAccountResponse($response);
return $this->generateAccountResponse($response->data, 0);
}

/**
* @throws GuzzleException
*/
public function outbox($page_size = 100, $page_number = 1): object
{
$url = self::endpoint('send', 'live')."?PageSize=$page_size&PageNumber=$page_number";

$response = $this->client->get($url);
$response = $this->processApiResponse($response);

return collect($response->data)->map(function ($item) {
return $this->generateReportResponse($item->messageId, $item->mobile, $item->messageText, $item->sendDateTime, $item->lineNumber, $item->cost);
});
}

/**
Expand Down Expand Up @@ -108,12 +123,4 @@ protected function validateResponseStatus($status_code, $json_response): void
throw new ApiException($json_response->message, $json_response->status);
}
}

public function generateAccountResponse($response): object
{
return (object) [
'credit' => $response->data,
'expire_date' => null,
];
}
}
22 changes: 22 additions & 0 deletions src/Traits/HasResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,26 @@ protected function processApiResponse($response): object

return $json_response;
}

public function generateAccountResponse($credit, $expire_date): object
{
return (object) [
'credit' => $credit,
'expire_date' => $expire_date,
];
}

public function generateReportResponse($message_id, $receptor, $content, $sent_date, $line_number, $cost): object
{

return (object) [
'message_id' => $message_id,
'receptor' => $receptor,
'content' => $content,
'sent_date' => $sent_date,
'line_number' => $line_number,
'cost' => $cost,

];
}
}

0 comments on commit b843c0f

Please sign in to comment.