<?php

namespace App\PackagesAdmin\Manager\Services;

use App\PackagesAdmin\Manager\Models\Manager;
use App\PackagesAdmin\Manager\Requests\ManagerRequest;

/**
 * Class ManagerService
 * @package App\PackagesAdmin\Manager\Services
 */
class ManagerService {

    public static function populateData(Manager $manager, ManagerRequest $managerRequest)
    {
        $manager->email = $managerRequest->email;
        $manager->first_name = $managerRequest->first_name;
        $manager->last_name = $managerRequest->last_name;
        $manager->role_id = $managerRequest->role_id;

        if ($managerRequest->is_active == 1) $manager->is_active = true;
        else $manager->is_active = false;

        if ( $managerRequest->has('password') && $managerRequest->password != '' ) {
            $manager->password = bcrypt($managerRequest->password);
        }

        return $manager;
    }

    /**
     * @param ManagerRequest $managerRequest
     *
     * @return Manager
     */
    public static function createManager(ManagerRequest $managerRequest)
    {
        $manager = new Manager();

        $manager = self::populateData($manager, $managerRequest);

        $manager->save();

        return $manager;
    }

    /**
     * @param ManagerRequest $managerRequest
     * @param $manager_id
     *
     * @return Manager
     */
    public static function updateManager(ManagerRequest $managerRequest, $manager_id)
    {
        /** @var Manager $manager */
        $manager = Manager::query()->find($manager_id);

        $manager = self::populateData($manager, $managerRequest);

        $manager->save();

        return $manager;
    }

    /**
     * @param $manager_id
     *
     * @return bool
     *
     * @throws \Exception
     */
    public static function destroyManager($manager_id)
    {
        /** @var Manager $manager */
        $manager = Manager::query()->find($manager_id);

        $manager->delete();

        return true;
    }

}
