Form analytics now paid feature (#547)

Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
Chirag Chhatrala 2024-08-29 14:44:49 +05:30 committed by GitHub
parent 8e777ecca6
commit 89513e3b4a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 19 additions and 11 deletions

View File

@ -3,8 +3,8 @@
namespace App\Http\Controllers\Forms; namespace App\Http\Controllers\Forms;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Forms\Form;
use Carbon\CarbonPeriod; use Carbon\CarbonPeriod;
use Illuminate\Http\Request;
class FormStatsController extends Controller class FormStatsController extends Controller
{ {
@ -13,10 +13,9 @@ class FormStatsController extends Controller
$this->middleware('auth'); $this->middleware('auth');
} }
public function getFormStats(string $workspaceId, string $formId) public function getFormStats(Request $request)
{ {
$form = Form::findOrFail($formId); $form = $request->form; // Added by ProForm middleware
$this->authorize('view', $form); $this->authorize('view', $form);
$formStats = $form->statistics()->where('date', '>', now()->subDays(29)->startOfDay())->get(); $formStats = $form->statistics()->where('date', '>', now()->subDays(29)->startOfDay())->get();

View File

@ -144,9 +144,11 @@ Route::group(['middleware' => 'auth:api'], function () {
Route::put('/custom-domains', [WorkspaceController::class, 'saveCustomDomain'])->name('save-custom-domains'); Route::put('/custom-domains', [WorkspaceController::class, 'saveCustomDomain'])->name('save-custom-domains');
Route::delete('/', [WorkspaceController::class, 'delete'])->name('delete'); Route::delete('/', [WorkspaceController::class, 'delete'])->name('delete');
Route::middleware('pro-form')->group(function () {
Route::get('form-stats/{formId}', [FormStatsController::class, 'getFormStats'])->name('form.stats'); Route::get('form-stats/{formId}', [FormStatsController::class, 'getFormStats'])->name('form.stats');
}); });
}); });
});
Route::prefix('forms')->name('forms.')->group(function () { Route::prefix('forms')->name('forms.')->group(function () {
Route::post('/', [FormController::class, 'store'])->name('store'); Route::post('/', [FormController::class, 'store'])->name('store');

View File

@ -3,7 +3,7 @@
use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Artisan;
it('check formstat chart data', function () { it('check formstat chart data', function () {
$user = $this->actingAsUser(); $user = $this->actingAsProUser();
$workspace = $this->createUserWorkspace($user); $workspace = $this->createUserWorkspace($user);
$form = $this->createForm($user, $workspace, []); $form = $this->createForm($user, $workspace, []);

View File

@ -3,7 +3,7 @@
class="border border-nt-blue-light bg-blue-50 dark:bg-notion-dark-light rounded-md p-4 mb-5 w-full mx-auto mt-4 select-all" class="border border-nt-blue-light bg-blue-50 dark:bg-notion-dark-light rounded-md p-4 mb-5 w-full mx-auto mt-4 select-all"
> >
<div <div
v-if="false" v-if="!form.is_pro"
class="relative" class="relative"
> >
<div class="absolute inset-0 z-10"> <div class="absolute inset-0 z-10">
@ -16,7 +16,10 @@
analytics. analytics.
</p> </p>
<p class="mt-5 text-center"> <p class="mt-5 text-center">
<v-button :to="{ name: 'pricing' }"> <v-button
class="w-full"
@click.prevent="subscriptionModalStore.openModal()"
>
Subscribe Subscribe
</v-button> </v-button>
</p> </p>
@ -76,6 +79,12 @@ export default {
required: true, required: true,
}, },
}, },
setup() {
const subscriptionModalStore = useSubscriptionModalStore()
return {
subscriptionModalStore
}
},
data() { data() {
return { return {
isLoading: true, isLoading: true,
@ -115,9 +124,7 @@ export default {
}, },
methods: { methods: {
getChartData() { getChartData() {
if (!this.form) { if (!this.form || !this.form.is_pro) { return null }
return null
}
this.isLoading = true this.isLoading = true
opnFetch( opnFetch(
"/open/workspaces/" + "/open/workspaces/" +