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/SBogers10/vebon.komma.pro/app/KommaApp/EndUsers/Kms/EndUserRepository.php
<?php
/**
 *
 *
 * @author      Komma <info@komma.pro>
 * @copyright   (c) 2012-2016, Komma Mediadesign
 */

namespace KommaApp\EndUsers\Kms;

use Illuminate\Mail\Message;
use Illuminate\Support\Collection;
use KommaApp\EndUsers\EndUserService;
use KommaApp\Kms\Core\Kms;
use KommaApp\Kms\Core\KmsSiteRepository;
use KommaApp\EndUsers\Models\EndUser;
use KommaApp\Kms\SidebarListItem;

class EndUserRepository extends KmsSiteRepository
{


    protected $role = '';
    /**
     * @var EndUserService
     */
    private $endUserService;


    /**
     * EndUserRepository constructor.
     * @param Kms $kms
     * @param EndUserService $endUserService
     */
    public function __construct(Kms $kms, EndUserService $endUserService)
    {
        parent::__construct($kms);

        $this->endUserService = $endUserService;
    }


    /**
     * This method gets an EndUser model or null
     * When $endUser is null, call newModel()
     * This is Called in KmsSection@loadEntity.
     *
     * @param $endUser EndUser or null
     * @return EndUser
     */
    public function getModel($endUser)
    {
        //Check if endUser is null, return new model
        if ($endUser == null) return $this->newModel();

        //Set the extra form fields, eg. title, thumbnail
        $this->setExtraModelFields($endUser);


        return $endUser;
    }

    /**
     * This method will set extra modelFields.
     * eg title and thumbnail for the form.
     *
     * @param $model
     */
    public function setExtraModelFields(&$model, $new = false)
    {
        //Set title
        $model->title = $model->company . ' (' . $model->first_name . ' ' . $model->name_insertion . ' ' . $model->last_name . ')';

        //Set the thumbnail
        $this->setThumbnail($model);

    }

    /**
     * Set the thumbnail for the model.
     *
     * @param $model
     */
    public function setThumbnail(&$model)
    {
        //Set the thumbnail
        $model->thumbnail = ['image_url' => '/images/kms/structure/users.png'];
    }

    /**
     * This method will generate a new EndUser container.
     * It is only used to create the new endUser Form.
     *
     * @param null $siteId
     * @return EndUser
     */
    public function newModel($siteId = null)
    {
        $endUser = new EndUser();

        //Set the thumbnail
        $this->setThumbnail($endUser);

        return $endUser;
    }


    /**
     * This method will get all the models.
     * And add these to the sidebarList.
     *
     * @param $siteId
     * @return sidebarList
     */
    public function getModels($siteId)
    {
        //Load the EndUsers
        $endUsers = EndUser::where('site_id', $siteId)
            ->where('role', '=', $this->role)
            ->get();

        //Create an empty sidebarList
        $sidebarList = [];
        //Loop trough the shippingCosts
        foreach ($endUsers as $endUser) {
            //New SidebarListItem
            $sidebarListItem = new SidebarListItem();
            //Set the values for the sidebar
            $sidebarListItem->setId($endUser->id);
            $sidebarListItem->setStatus($endUser->active);
            //set the name as 'Shipping to {country name}'
            $sidebarListItem->setName(
                $endUser->company . ' - ' .
                $endUser->first_name . ' ' .
                $endUser->name_insertion . ' ' .
                $endUser->last_name
            );
            $sidebarListItem->setThumbnail('');
            $sidebarList[] = $sidebarListItem;
        }
        return $sidebarList;
    }


    /**
     * This method will save the EndUser.
     *
     * @param      $input
     * @param null $endUser KommaApp\EndUsers\Models\EndUser
     * @return EndUser id
     */
    public function saveModel($input, $endUser = null)
    {
        $new = false;

        //Check if the endUser is null
        if ($endUser == null) {
            //Create a new endUser
            $endUser = new EndUser();
            //New endUser
            $endUser->site_id = $this->kms->getCurrentSiteId();
            $new = true;
        }

        $endUser->role = $this->role;

        $endUser->active = (!empty($input['active']) ? $input['active'] : 0);

        $endUser->number = $input['number'];
        $endUser->username = $input['email'];

        //Lang is Dutch
        $endUser->language_id = 104;

        $endUser->email = $input['email'];
        $endUser->first_name = $input['first_name'];
        $endUser->name_insertion = $input['name_insertion'];
        $endUser->last_name = $input['last_name'];
        $endUser->company = $input['company'];
        $endUser->company_vat = $input['company_vat'];
        $endUser->postal = $input['postal'];
        $endUser->city = $input['city'];
        $endUser->street = $input['street'];
        $endUser->house_number = $input['house_number'];
        $endUser->house_number_suffix = $input['house_number_suffix'];
        $endUser->country = $input['country'];
        $endUser->telephone = $input['telephone'];

        //Save the endUser
        $endUser->save();

        //Send the email to the endUser when it is an new endUser
        if ($new) $this->sendActivationEmail($endUser);


        return $endUser->id;

    }

    public function destroyModel($endUser)
    {
        $endUser->delete();
    }

    public function getOrdersByEndUserId($siteId, $languageId, $endUserId)
    {
        $records = [];
        if (is_numeric($endUserId)) {
            $records = Order::where('endUser_id', $endUserId)->get();

        }
        return $records;
    }

    public function getLatestRegistrations($maxRecords = 10, $siteId = null)
    {
        $query = EndUser::select('first_name', 'name_insertion', 'last_name', 'created_at', 'company')
            ->take($maxRecords)
            ->orderBy('created_at', 'desc');
        if ($siteId) $query->where('site_id', $siteId);
        return $query->get();
    }

    private function sendActivationEmail($endUser)
    {
        $endUser->active = 0;
        $endUser->save();

        $this->endUserService->sendActivation($endUser);
    }


}