Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added Feature krayin#1815
Browse files Browse the repository at this point in the history
amit-webkul committed Jan 2, 2025
1 parent 1f90616 commit bc6fadc
Showing 10 changed files with 245 additions and 3 deletions.
7 changes: 6 additions & 1 deletion packages/Webkul/Admin/src/Config/acl.php
Original file line number Diff line number Diff line change
@@ -181,7 +181,12 @@
'name' => 'admin::app.acl.delete',
'route' => ['admin.contacts.organizations.delete', 'admin.contacts.organizations.mass_delete'],
'sort' => 3,
], [
], [
'key' => 'contacts.organizations.view',
'name' => 'admin::app.acl.edit',
'route' => ['admin.contacts.organizations.view'],
'sort' => 4,
], [
'key' => 'products',
'name' => 'admin::app.acl.products',
'route' => 'admin.products.index',
Original file line number Diff line number Diff line change
@@ -90,6 +90,17 @@ public function prepareColumns(): void
*/
public function prepareActions(): void
{
if (bouncer()->hasPermission('contacts.organizations.view')) {
$this->addAction([
'icon' => 'icon-eye',
'title' => trans('admin::app.contacts.organizations.index.datagrid.view'),
'method' => 'GET',
'url' => function ($row) {
return route('admin.contacts.organizations.view', $row->id);
},
]);
}

if (bouncer()->hasPermission('contacts.organizations.edit')) {
$this->addAction([
'icon' => 'icon-edit',
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace Webkul\Admin\Http\Controllers\Contact\Organizations;

use Webkul\Activity\Repositories\ActivityRepository;
use Webkul\Admin\Http\Controllers\Controller;
use Webkul\Admin\Http\Resources\ActivityResource;
use Webkul\Email\Repositories\EmailRepository;

class ActivityController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(
protected ActivityRepository $activityRepository,
protected EmailRepository $emailRepository
) {}

/**
* Display a listing of the resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function index($id)
{
$activities = $this->activityRepository
->leftJoin('organization_activities', 'activities.id', '=', 'organization_activities.activity_id')
->where('organization_activities.organization_id', $id)
->get();

return ActivityResource::collection($this->concatEmail($activities));
}

/**
* Store a newly created resource in storage.
*/
public function concatEmail($activities)
{
return $activities->sortByDesc('id')->sortByDesc('created_at');
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace Webkul\Admin\Http\Controllers\Contact;
namespace Webkul\Admin\Http\Controllers\Contact\Organizations;

use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
@@ -60,6 +60,16 @@ public function store(AttributeForm $request): RedirectResponse
return redirect()->route('admin.contacts.organizations.index');
}

/**
* Display the specified resource.
*/
public function show(int $id): View
{
$organization = $this->organizationRepository->findOrFail($id);

return view('admin::contacts.organizations.view', compact('organization'));
}

/**
* Show the form for editing the specified resource.
*/
6 changes: 6 additions & 0 deletions packages/Webkul/Admin/src/Resources/lang/en/app.php
Original file line number Diff line number Diff line change
@@ -640,12 +640,18 @@
'datagrid' => [
'delete' => 'Delete',
'edit' => 'Edit',
'view' => 'View',
'id' => 'ID',
'name' => 'Name',
'persons-count' => 'Person Count',
],
],

'view' => [
'title' => ':name',
'about-organization' => 'About Organization',
],

'create' => [
'title' => 'Create Organization',
'save-btn' => 'Save Organization',
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<x-admin::layouts>
<x-slot:title>
@lang('admin::app.contacts.organizations.view.title', ['name' => $organization->name])
</x-slot>

<!-- Content -->
<div class="flex gap-4">
<!-- Left Panel -->
{!! view_render_event('admin.contact.organizations.view.left.before', ['organization' => $organization]) !!}

<div class="[&>div:last-child]:border-b-0 sticky top-[73px] flex min-w-[394px] max-w-[394px] flex-col self-start rounded-lg border border-gray-200 bg-white dark:border-gray-800 dark:bg-gray-900">
<!-- organization Information -->
<div class="flex w-full flex-col gap-2 border-b border-gray-200 p-4 dark:border-gray-800">
<!-- Breadcrumbs -->
<div class="flex items-center justify-between">
<x-admin::breadcrumbs
name="contacts.organizations.view"
:entity="$organization"
/>
</div>

<!-- Title -->
<div class="mb-4 flex flex-col gap-0.5">
{!! view_render_event('admin.contact.organizations.view.title.before', ['organization' => $organization]) !!}

<h3 class="text-lg font-bold dark:text-white">
{{ $organization->name }}
</h3>

<p class="dark:text-white">
{{ $organization->job_title }}
</p>

{!! view_render_event('admin.contact.organizations.view.title.after', ['organization' => $organization]) !!}
</div>

<!-- Activity Actions -->
<div class="flex flex-wrap gap-2">
{!! view_render_event('admin.contact.organizations.view.actions.before', ['organization' => $organization]) !!}

<!-- Mail Activity Action -->
<x-admin::activities.actions.mail
:entity="$organization"
entity-control-name="organization_id"
/>

<!-- File Activity Action -->
<x-admin::activities.actions.file
:entity="$organization"
entity-control-name="organization_id"
/>

<!-- Note Activity Action -->
<x-admin::activities.actions.note
:entity="$organization"
entity-control-name="organization_id"
/>

<!-- Activity Action -->
<x-admin::activities.actions.activity
:entity="$organization"
entity-control-name="organization_id"
/>

{!! view_render_event('admin.contact.organizations.view.actions.after', ['organization' => $organization]) !!}
</div>
</div>

<!-- organization Attributes -->
@include ('admin::contacts.organizations.view.attributes')
</div>

{!! view_render_event('admin.contact.organizations.view.left.after', ['organization' => $organization]) !!}

<!-- Right Panel -->
<div class="flex w-full flex-col gap-4 rounded-lg">
{!! view_render_event('admin.contact.organizations.view.right.before', ['organization' => $organization]) !!}

<!-- Stages Navigation -->
<x-admin::activities :endpoint="route('admin.contacts.organizations.activities.index', $organization->id)" />

{!! view_render_event('admin.contact.organizations.view.right.after', ['organization' => $organization]) !!}
</div>
</div>
</x-admin::layouts>
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{!! view_render_event('admin.contacts.organization.view.attributes.before', ['organization' => $organization]) !!}

<div class="flex w-full flex-col gap-4 border-b border-gray-200 p-4 dark:border-gray-800">
<h4 class="font-semibold dark:text-white">
@lang('admin::app.contacts.persons.view.about-organization')
</h4>

{!! view_render_event('admin.contacts.organization.view.attributes.form_controls.before', ['organization' => $organization]) !!}

<x-admin::form
v-slot="{ meta, errors, handleSubmit }"
as="div"
ref="modalForm"
>
<form @submit="handleSubmit($event, () => {})">
{!! view_render_event('admin.contacts.organization.view.attributes.form_controls.attributes_view.before', ['organization' => $organization]) !!}

<x-admin::attributes.view
:custom-attributes="app('Webkul\Attribute\Repositories\AttributeRepository')->findWhere([
'entity_type' => 'organizations',
['code', 'NOTIN', ['name', 'jon_title']]
])"
:entity="$organization"
:url="route('admin.contacts.organizations.update', $organization->id)"
:allow-edit="true"
/>

{!! view_render_event('admin.contacts.organization.view.attributes.form_controls.attributes_view.after', ['organization' => $organization]) !!}
</form>
</x-admin::form>

{!! view_render_event('admin.contacts.organization.view.attributes.form_controls.after', ['organization' => $organization]) !!}
</div>

{!! view_render_event('admin.contacts.organization.view.attributes.before', ['organization' => $organization]) !!}
12 changes: 11 additions & 1 deletion packages/Webkul/Admin/src/Routes/Admin/contacts-routes.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
<?php

use Illuminate\Support\Facades\Route;
use Webkul\Admin\Http\Controllers\Contact\OrganizationController;
use Webkul\Admin\Http\Controllers\Contact\Organizations\ActivityController as OrganizationActivityController;
use Webkul\Admin\Http\Controllers\Contact\Organizations\OrganizationController;
use Webkul\Admin\Http\Controllers\Contact\Persons\ActivityController;
use Webkul\Admin\Http\Controllers\Contact\Persons\PersonController;
use Webkul\Admin\Http\Controllers\Contact\Persons\TagController;
@@ -56,12 +57,21 @@

Route::post('create', 'store')->name('admin.contacts.organizations.store');

Route::get('view/{id}', 'show')->name('admin.contacts.organizations.view');

Route::get('edit/{id?}', 'edit')->name('admin.contacts.organizations.edit');

Route::put('edit/{id}', 'update')->name('admin.contacts.organizations.update');

Route::delete('{id}', 'destroy')->name('admin.contacts.organizations.delete');

Route::put('mass-destroy', 'massDestroy')->name('admin.contacts.organizations.mass_delete');

/**
* Activity routes.
*/
Route::controller(OrganizationActivityController::class)->prefix('{id}/activities')->group(function () {
Route::get('', 'index')->name('admin.contacts.organizations.activities.index');
});
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('organization_activities', function (Blueprint $table) {
$table->integer('activity_id')->unsigned();
$table->foreign('activity_id')->references('id')->on('activities')->onDelete('cascade');

$table->integer('organization_id')->unsigned();
$table->foreign('organization_id')->references('id')->on('organizations')->onDelete('cascade');
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('lead_activities');
}
};
5 changes: 5 additions & 0 deletions routes/breadcrumbs.php
Original file line number Diff line number Diff line change
@@ -128,6 +128,11 @@
$trail->push(trans('admin::app.contacts.organizations.edit.title'), route('admin.contacts.organizations.edit', $organization->id));
});

Breadcrumbs::for('contacts.organizations.view', function (BreadcrumbTrail $trail, $organization) {
$trail->parent('contacts.organizations');
$trail->push('#'.$organization->id, route('admin.contacts.persons.index'));
});

// Products
Breadcrumbs::for('products', function (BreadcrumbTrail $trail) {
$trail->parent('dashboard');

0 comments on commit bc6fadc

Please sign in to comment.