Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
e374891
add intercom widget integration
nadirhamid Mar 26, 2024
9616bff
add confirmation number to invoice records
nadirhamid Apr 29, 2024
6a197f0
save card to database when user subscribes to free trial
nadirhamid May 9, 2024
acd9682
send alert when user cancels paypal billing agreement
nadirhamid May 9, 2024
78410e3
add expiry fields for credit card tables
nadirhamid May 14, 2024
2dcba02
add cost savings module
nadirhamid May 14, 2024
830f788
add cost savings form page
nadirhamid May 14, 2024
9470b72
add code f to display cost savings data
nadirhamid May 15, 2024
3febebc
add code for satisfaction surveys
nadirhamid May 23, 2024
93ca291
add database migrations for invoice customizations
nadirhamid Jun 4, 2024
6dddbf5
fix code around DNS integrations
nadirhamid Jun 4, 2024
abf138f
set better default for INGRESS_IP environment variable
nadirhamid Jun 4, 2024
18773d4
further improve code for updating DNS records
nadirhamid Jun 4, 2024
7e00fd4
fix DNS integration with namecheap
nadirhamid Jun 5, 2024
a38106f
add number services module to provide greater flexibility in integrat…
nadirhamid Jun 5, 2024
b2acd9d
further develop number service module
nadirhamid Jun 5, 2024
e787dd1
add configs for number service records
nadirhamid Jun 6, 2024
0e805a8
fix pop regions module
nadirhamid Jun 6, 2024
4e52b61
fix various bugs and improve UI
nadirhamid Jun 6, 2024
9109b48
check if generated password comply with some pre requisites
nadirhamid Jun 6, 2024
f9b046a
add some columns in rtpproxies table to further reason with SIP proxi…
nadirhamid Jun 8, 2024
cd41e06
add functions to validate rtp proxy socket addresses
nadirhamid Jun 8, 2024
98057a6
fix some layout issues in settings page
nadirhamid Jun 11, 2024
c93298c
add s3_bucket column to api_credentials
nadirhamid Jun 11, 2024
1e12d1d
fix support ticket API
nadirhamid Jun 12, 2024
87d995d
fix helper methods for initializing public configs
nadirhamid Jun 19, 2024
83b57fb
uppgrade stripe SDK
nadirhamid Jun 20, 2024
99b6f68
add new fields to users_cards and improve user card APIs
nadirhamid Jun 20, 2024
9c88e66
fix APIs for collecting credit card info on registrations
nadirhamid Jun 21, 2024
c638044
integrate stripe payment intents for all payments (wip)
nadirhamid Jun 22, 2024
2825bd8
use better parameters when creating stripe payment intents
nadirhamid Jun 22, 2024
67b1d61
add statement descriptor to stripe payment intents
nadirhamid Jun 22, 2024
7849b5a
fix issues with billing history reports
nadirhamid Jun 22, 2024
6608a21
add DB fields for paypal API keys
nadirhamid Jun 22, 2024
66a5927
add new tables for app settings
nadirhamid Jun 25, 2024
284cf23
futher integrate support module
nadirhamid Jun 26, 2024
8e87930
add CRUD for support ticket categories
nadirhamid Jun 27, 2024
70271a9
add API endpoint to upload CSV files including blocked numbers
nadirhamid Jun 29, 2024
8ff18e0
add new table schemas for key value storage in customizations table
nadirhamid Jun 29, 2024
19d4d21
use newer key-value store database tables for API settings and custom…
nadirhamid Jul 2, 2024
99274e8
migrate all code to use newer customization data structures
nadirhamid Jul 2, 2024
2e4f740
replace old code with new updated code including key-value storage cl…
nadirhamid Jul 2, 2024
f335c0a
fix recordings APIs
nadirhamid Jul 3, 2024
3540c92
dont allow user to create duplicate extensions with the same username
nadirhamid Jul 3, 2024
d3c2beb
improve support module in admin UI
nadirhamid Jul 3, 2024
96f517d
update backup routine script
nadirhamid Jul 4, 2024
748505e
add confirmationt to DB snapshot script
nadirhamid Jul 4, 2024
d021358
make string values longer in KV tables
nadirhamid Jul 5, 2024
7120602
add more messages to script
nadirhamid Jul 5, 2024
5bcca5e
make KV columns even larger
nadirhamid Jul 5, 2024
e10aae5
fix issues with 2fa settings API
nadirhamid Jul 29, 2024
fea8198
fix 2FA API
nadirhamid Jul 29, 2024
f438f96
fix issue with register credits
nadirhamid Aug 19, 2024
f5bb97f
further integrate APIs for registration questionnaire
nadirhamid Sep 19, 2024
996f0e7
add feed API
nadirhamid Oct 25, 2024
6c1223f
add new API routes for workspace roles
nadirhamid Nov 5, 2024
c547c7f
KV database tables in get all settings APIs
nadirhamid Nov 25, 2024
b76e75a
shorten payyment descriptors
nadirhamid Nov 28, 2024
ceccbaf
use new stripe API in CardController.php
nadirhamid Dec 18, 2024
b2b6602
add readable dates to recordings list endpoint
nadirhamid Dec 23, 2024
c45bfe4
show friendly dates in all support tickets
nadirhamid Dec 23, 2024
7e1f034
fix issues in ApiCredentialKVStore
nadirhamid Dec 24, 2024
b14032f
add option to auto save editor flows
nadirhamid Dec 31, 2024
aba9807
integrate paypal billing agreements
nadirhamid Jan 8, 2025
dfa3f0f
add option to filter calls by extensions in calls listing API
nadirhamid Jan 14, 2025
64bfc54
add endpoint to get SIP credentials for workspace user
nadirhamid Jan 16, 2025
5ea6afa
fix some issues within getSIPCredentials endpoint
nadirhamid Jan 16, 2025
2b58449
add more attributes to SIP credentials endpoint
nadirhamid Jan 22, 2025
89f831e
columns to support websocket connections
nadirhamid Jan 22, 2025
f941896
update translation files
nadirhamid Jan 22, 2025
f329d7b
fix issues in user CRUD workflow and patch some APIs
nadirhamid Jan 28, 2025
1ed6855
add assets base URL to settings API
nadirhamid Jan 31, 2025
766db5f
improve formatting for some API variables
nadirhamid Feb 2, 2025
73347cf
improve formatting in call durations
nadirhamid Feb 2, 2025
c679251
dont include all data input for update queries in the update workspac…
nadirhamid Feb 6, 2025
7119282
add apn_token to workspace user record
nadirhamid Feb 7, 2025
1a5ab95
integrate APN tokens with database and update call workflow
nadirhamid Feb 10, 2025
720f341
send welcome email when user registers
nadirhamid Mar 13, 2025
ed8336c
do not query all flow columns in flow listing API
nadirhamid Mar 13, 2025
8e3308d
add user details to support ticket reply data
nadirhamid Mar 18, 2025
c509901
add category name field to support ticket API
nadirhamid Mar 28, 2025
ecc7168
fix issue with deleting media server in router edit page
nadirhamid Apr 21, 2025
44f88e2
switch to native PHP yaml extension
nadirhamid May 15, 2025
3d05427
fix some issues with composer packages
Jun 18, 2025
293552c
add modules to vendoring folder
nadirhamid Sep 17, 2025
329db74
add new field in flows table to track intent of newly created flows
nadirhamid Oct 29, 2025
f318582
add creation intent to DID API responses
nadirhamid Oct 29, 2025
dc82139
unset flow_id when assigning number to trunk
nadirhamid Jan 29, 2026
f46e993
integrate CRUD rtpengine module
nadirhamid Feb 4, 2026
d8ddbb8
add websocket_settings to get SIP credentials API
nadirhamid Feb 5, 2026
7013cbc
add subscriptions table for reliable billing and improve DID number API
nadirhamid Feb 20, 2026
b5e167d
fix some DB fields and integrate subscriptions table
nadirhamid Feb 20, 2026
5896f7b
add workspace_id to billing tables
nadirhamid Feb 20, 2026
48aa080
demo code to add a subscription
nadirhamid Feb 20, 2026
60a9678
fix issues with billing code and add confirmation num to invoice records
nadirhamid Feb 20, 2026
734dc7d
billing enhancements
nadirhamid Feb 25, 2026
70b8e52
refactor class for consuming rabbitmq events
nadirhamid Feb 25, 2026
44aa9e2
process rabbitmq events to send payment receipts
nadirhamid Feb 28, 2026
0f8a56e
add code for estimated charges PDF export
nadirhamid Feb 28, 2026
ceaeecf
improve design in PDF invoices
nadirhamid Feb 28, 2026
8ab9306
improve subscriptions billing logic and add rabbitmq helper classes
nadirhamid Mar 1, 2026
ba4bb26
code to show prorated amounts in getServicePlans API call
nadirhamid Mar 1, 2026
db41c08
improve billing helper code
nadirhamid Mar 2, 2026
de73d12
use new database fields for service plan pricing
nadirhamid Mar 2, 2026
8369346
Design changes on installation wizard
gaurav-vaghela Mar 5, 2026
d2ed23b
Merge pull request #15 from Lineblocs/gaurav
nadirhamid Mar 5, 2026
fced673
MSAT-200 - setup redesign and make sure it should initialize only once
gaurav-vaghela Mar 8, 2026
c5115f8
MSAT-192
gaurav-vaghela Mar 8, 2026
d280828
Update pricing.blade.php
gaurav-vaghela Mar 8, 2026
9d77f84
Merge pull request #16 from Lineblocs/gaurav
nadirhamid Mar 9, 2026
e551815
404 on compeltion
gaurav-vaghela Mar 13, 2026
cb46a6d
only check for conflicting extension username when username in reques…
nadirhamid Mar 14, 2026
e470316
pricing page changes
gaurav-vaghela Mar 16, 2026
18ef850
Merge pull request #17 from Lineblocs/gaurav
nadirhamid Mar 16, 2026
759ce50
rename some data fields in service plan seeder
nadirhamid Mar 16, 2026
ce64a90
rework billing logic in registration controller
nadirhamid Mar 16, 2026
3b73f5e
Order by rank and order by alphabetic order
gaurav-vaghela Mar 19, 2026
7873102
getServicePlans API added order by
gaurav-vaghela Mar 19, 2026
eb317ce
Added a query string param for billing period
gaurav-vaghela Mar 19, 2026
fb7f9fb
login function reverted
gaurav-vaghela Mar 20, 2026
8b5f03f
Fixed the function name on pricing plan
gaurav-vaghela Mar 20, 2026
d227437
New API sendOneTimeLoginLink
gaurav-vaghela Mar 20, 2026
98fd293
Merge pull request #18 from Lineblocs/gaurav
nadirhamid Mar 23, 2026
bbb4875
add TCP port to SIP credentials API endpoint
nadirhamid Mar 23, 2026
4a68bca
fix code for generating invoices
nadirhamid Mar 23, 2026
529a5b4
fix get service plans API
nadirhamid Mar 24, 2026
51a89b0
add refund button to workspaces module in admin
nadirhamid Mar 25, 2026
8a8b6f6
update invoice status after refund is processed
nadirhamid Mar 25, 2026
fec1ec2
fix code for admin refund processing
nadirhamid Mar 25, 2026
160b708
call quality survey
gaurav-vaghela Mar 27, 2026
5be9565
survey svg files for blade template
gaurav-vaghela Mar 27, 2026
3ea6a1e
Merge pull request #20 from Lineblocs/gaurav
nadirhamid Mar 27, 2026
2dd917d
Finalize Billing & Invoicing System
gaurav-vaghela Mar 31, 2026
0be4761
Changed the queue title and change the ternary operator
gaurav-vaghela Mar 31, 2026
d21ca4f
Changed the line items for invoices
gaurav-vaghela Mar 31, 2026
2c227f5
Merge pull request #22 from Lineblocs/master
nadirhamid Mar 31, 2026
1540c12
improve some code and add new setting for billing
nadirhamid Mar 31, 2026
063cfc1
remove monthly invoice HTTP route
nadirhamid Mar 31, 2026
6addddf
use integer data type for all monetary value columns for consistency
nadirhamid Apr 1, 2026
465a75b
add deduplication key to billing tables
nadirhamid Apr 1, 2026
ded5f97
update deduplication migration file name
nadirhamid Apr 2, 2026
9ad7aa0
Add login button
gaurav-vaghela Apr 7, 2026
0cc8538
Add section on homepage with testimonials
gaurav-vaghela Apr 9, 2026
a88eb39
Create paypal billing agreement
gaurav-vaghela Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
23 changes: 11 additions & 12 deletions app/app/ApiCredential.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,17 @@
use Log;
use Illuminate\Support\Facades\DB;

class ApiCredential extends Model {
class ApiCredential extends SettingsRecord {
protected $dates = ['created_at', 'updated_at'];
protected $casts = array(
"setup_complete" => "boolean"
);

protected $guarded = array('id');
public static function getRecord() {
return ApiCredential::all()[0];
}
protected $table = 'api_credentials';


public static function getParameterIfAvailable($param) {
try {
DB::connection()->getPdo();
} catch (\Exception $e) {
echo("Could not connect to the database. Please check your configuration. error:" . $e );
return;
}
try {
$record = self::getRecord();
return $record->{$param};
Expand All @@ -36,8 +29,9 @@ public static function getParameterIfAvailable($param) {
return "";
}
public static function getFrontendValuesOnly() {
extract( self::getRecord()->toArray() );
return compact(
$creds = self::getRecord()->toArray();
extract( $creds );
$result = compact(
'google_signin_developer_key',
'google_signin_client_id',
'google_signin_app_id',
Expand All @@ -49,6 +43,11 @@ public static function getFrontendValuesOnly() {
'matomo_script_tag',
'stripe_pub_key'
);
if ($creds['stripe_mode'] == 'test') {
$result['stripe_pub_key'] = $creds['stripe_test_pub_key'];
}

return $result;
}

}
Expand Down
22 changes: 22 additions & 0 deletions app/app/ApiCredentialGroup2.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\ApiResource;
use App\Helpers\MainHelper;
use Exception;
use Log;
use Illuminate\Support\Facades\DB;

class ApiCredentialGroup2 extends SettingsRecord {
protected $dates = ['created_at', 'updated_at'];
protected $casts = array(
);

protected $guarded = array('id');

protected $table = 'api_credentials_group2';
}


62 changes: 62 additions & 0 deletions app/app/ApiCredentialKVStore.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php

namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\ApiResource;
use App\Helpers\MainHelper;
use Exception;
use Log;
use Illuminate\Support\Facades\DB;

class ApiCredentialKVStore extends SettingsKVStoreModel {
protected $dates = ['created_at', 'updated_at'];
protected $casts = array(
"setup_complete" => "boolean"
);

protected $guarded = array('id');
protected $table = 'api_credentials_kv_store';


public static function getParameterIfAvailable($param) {
try {
DB::connection()->getPdo();
} catch (\Exception $e) {
echo("Could not connect to the database. Please check your configuration. error:" . $e );
return;
}
try {
$record = self::getRecord();
return $record->{$param};
} catch (Exception $ex) {
print("error occured while getting API credential: " .$param);
}
return "";
}
public static function getFrontendValuesOnly() {
$record = self::getKVPairs();
extract( $record );
$creds = compact(
'google_signin_developer_key',
'google_signin_client_id',
'google_signin_app_id',
'msft_signin_client_id',
'msft_signin_client_secret',
'apple_signin_client_id',
'apple_signin_client_secret',
'google_analytics_script_tag',
'matomo_script_tag',
'stripe_pub_key'
);

if ($record['stripe_mode'] == 'test') {
$creds['stripe_pub_key'] = $record['stripe_test_pub_key'];
}

return $creds;
}

}


1 change: 0 additions & 1 deletion app/app/BalanceResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ public static function create($attrs=array(), $plan=NULL) {
$record = parent::create( $attrs );
$billing = BillingDataHelper::getBillingInfo($user, $plan);
$update = [];
$update['balance'] = $billing['accountBalance'];
$record->update($update);
return $record;

Expand Down
1 change: 1 addition & 0 deletions app/app/Classes/namecheap.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ private function execute( $command, $args = array() )
$url .= "&$arg=";
$url .= urlencode( $value );
}

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE );
$result = curl_exec( $ch );
Expand Down
24 changes: 24 additions & 0 deletions app/app/Competitor.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Competitor extends Model {
protected $dates = ['created_at', 'updated_at'];

protected $guarded = array('id');
protected $table = "competitors";

public static function asSelect() {
$items = Competitor::all();
$result = [];
foreach ($items as $item) {
$result[$item->id] = $item->name;
}

return $result;
}
}


37 changes: 37 additions & 0 deletions app/app/Console/Commands/QueueAnnualInvoiceCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Workspace;
use App\Helpers\RabbitMQHelper;

class QueueAnnualInvoiceCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'invoices:queue-annual {workspace_id}';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Queue an ANNUAL invoice task for a workspace';

public function handle()
{
$workspaceId = (int) $this->argument('workspace_id');
$workspace = Workspace::find($workspaceId);
if (!$workspace) {
$this->error(sprintf('Workspace #%d not found.', $workspaceId));
return;
}

RabbitMQHelper::dispatchAnnualInvoiceTask($workspaceId, 'artisan_test');
$this->info(sprintf('Queued ANNUAL invoice task for workspace #%d.', $workspaceId));
}
}
37 changes: 37 additions & 0 deletions app/app/Console/Commands/QueueMonthlyInvoiceCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\Workspace;
use App\Helpers\RabbitMQHelper;

class QueueMonthlyInvoiceCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'invoices:queue-monthly {workspace_id}';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Queue a MONTHLY invoice task for a workspace';

public function handle()
{
$workspaceId = (int) $this->argument('workspace_id');
$workspace = Workspace::find($workspaceId);
if (!$workspace) {
$this->error(sprintf('Workspace #%d not found.', $workspaceId));
return;
}

RabbitMQHelper::dispatchMonthlyInvoiceTask($workspaceId, 'artisan_test');
$this->info(sprintf('Queued MONTHLY invoice task for workspace #%d.', $workspaceId));
}
}
Loading