HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/MdnDirecteur/hours.komma.cloud/app/Komma/Cleanup/CleanupService.php
<?php

namespace App\Komma\Cleanup;


use App\Komma\ActivityLog\Activity;
use App\Komma\Companies\Company;
use App\Komma\Hours\Hour;
use App\Komma\Projects\Project;
use App\Komma\Subprojects\Subproject;
use App\Komma\Tasks\Task;

class CleanupService
{

    public function __construct()
    {
        //
    }

    /**
     * @param $collection
     */
    public function cleanupDelete($collection, $table, $model)
    {
        foreach ($collection as $item) {
            //find activities of item
            $activities = Activity::where('subject_type', $model)->where('subject_id', $item->id)->get()->all();
            //delete activities
            foreach ($activities as $activity) {
                //delete
                $activity->delete();
            }

            //try delete item
            try{
                //delete
                \DB::table($table)->where('id', $item->id)->delete();

            } catch (\Exception $e){
                //store error
                \Log::error($e);
            }
        }
    }


    /**
     * @param $activities
     */
    public function cleanupActivities($activities)
    {
        foreach ($activities as $activity){
            $activity->delete();
        }
    }


    /**
     * @param $collection
     */
    public function deleteTasks($collection){
        //loop trough task collection
        foreach ($collection as $task){
            
            //find all hours
            $hours = Hour::where('task_id', $task->id)->get();
            //loop trough hours
            foreach ($hours as $hour){
                //delete hour
                $hour->delete();
            }

            //delete task
            $task->delete();
        }
    }


    /**
     * @param $collection
     */
    public function deleteSubprojects($collection){
        //loop trough subprojects collection
        foreach ($collection as $subproject){

            //find all tasks
            $tasks = Task::where('subproject_id', $subproject->id)->get();
            
            //delete tasks
            $this->deleteTasks($tasks);

            //delete subproject
            $subproject->delete();
        }
    }


    /**
     * @param $collection
     */
    public function deleteProjects($collection){
        //loop trough projects collection
        foreach ($collection as $project){

            //find all subprojects
            $subprojects = Subproject::where('project_id', $project->id)->get();

            //delete subprojects
            $this->deleteSubprojects($subprojects);

            //delete project
            $project->delete();
        }
    }


    /**
     * @param $collection
     */
    public function deleteCompanies($collection){
        //loop trough projects collection
        foreach ($collection as $company){

            //find all subprojects
            $projects = Project::where('company_id', $company->id)->get();

            //delete subprojects
            $this->deleteProjects($projects);

            //get contacts information
            $contacts = Company::find($company->id)->Contacts();

            //loop trough contacts
            foreach ($contacts as $contact){
                //delete contact
                $contact->delete();
            }

            //delete project
            $company->delete();
        }
    }
}