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();
}
}
}