Sindbad~EG File Manager

Current Path : /home/copmadinaarea/drive.copmadinaarea.org/app/Services/Shares/
Upload File :
Current File : /home/copmadinaarea/drive.copmadinaarea.org/app/Services/Shares/AttachUsersToEntry.php

<?php

namespace App\Services\Shares;

use DB;
use App\User;
use Common\Files\Traits\LoadsAllChildEntries;
use App\Services\Shares\Traits\GeneratesSharePermissions;
use App\Services\Shares\Traits\CreatesUserEntryPivotRecords;

class AttachUsersToEntry
{
    use CreatesUserEntryPivotRecords, GeneratesSharePermissions, LoadsAllChildEntries;

    /**
     * @var User
     */
    private $user;

    /**
     * @param User $user
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Attach specified users to a file entries.
     *
     * @param array $emails
     * @param array $entries
     * @param array $permissions
     */
    public function execute($emails, $entries, $permissions)
    {
        $entryIds = collect($entries);

        // permissions on each user are expected
        $users = $this->user->whereIn('email', $emails)->pluck('id')->map(function($id) use($permissions) {
            return ['id' => $id, 'permissions' => $this->generateSharePermissions($permissions)];
        });

        $records = $this->createPivotRecords($users, $entryIds);

        DB::table('user_file_entry')->insert($records->toArray());
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists