/home/mip/mip/app/Modules/ClientServiceProvider.php
<?php
namespace QxCMS\Modules;
use Illuminate\Routing\Router;
use Illuminate\Support\ServiceProvider;
class ClientServiceProvider extends ServiceProvider
{
protected $namespace = 'QxCMS\Modules';
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot(Router $router)
{
$modules = config('modules.modules');
array_filter($modules, function($module) use ($router){
if($module=='Client')
{
$this->registerModuleRoute($router, $module);
$this->registerModuleView($module);
}
});
view()->composer(['Client::dashboard.*', 'Client::layouts'], function($view){
if (auth('client')->check())
{
$permissions = $this->serializePermission(auth('client')->user()->permissions);
$view->with('userPermissions', $permissions);
}
});
}
public function serializePermission($permissions){
$results = array();
foreach ($permissions as $k => $permission){
$results[$permission->menu_id] = array(
'can_access' => $permission->can_access,
'can_update' => $permission->can_update,
'can_create' => $permission->can_create,
'can_delete' => $permission->can_delete,
'can_export' => $permission->can_export,
'can_import' => $permission->can_import,
'can_print' => $permission->can_print,
);
}
return $results;
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->setClientInterface();
$this->mergeConfigFrom(
__DIR__.'/tables.php', 'tables'
);
$this->mergeConfigFrom(
config_path().'/account.php', 'account'
);
}
public function registerModuleView($module)
{
return $this->loadViewsFrom(__DIR__."/$module/Views", $module);
}
public function registerModuleRoute($router, $module)
{
$router->group([
'namespace' => $this->namespace.'\\'.$module.'\\'.'Controllers',
'middleware' => 'web',
'prefix' => strtolower($module)
], function ($router) use ($module) {
require __DIR__."/$module/routes.php";
});
}
public function setClientInterface()
{
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Settings\Roles\RoleRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Settings\Roles\RoleRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Settings\Roles\PermissionRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Settings\Roles\PermissionRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Settings\Users\UserRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Settings\Users\UserRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Principals\PrincipalRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Principals\PrincipalRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Principals\ContactPersonRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Principals\ContactPersonRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Principals\ContactNumberRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Principals\ContactNumberRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Questionnaire\TemplateRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Questionnaire\TemplateRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Questionnaire\QuestionRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Questionnaire\QuestionRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Questionnaire\AnswerRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Questionnaire\AnswerRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Subject\SubjectRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Subject\SubjectRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Officers\OfficerRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Officers\OfficerRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Directory\DirectoriesRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Directory\DirectoriesRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Directory\AffiliatesRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Directory\AffiliatesRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Directory\SpecializationsRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Directory\SpecializationsRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Directory\CitiesRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Directory\CitiesRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Directory\MunicipalitiesRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Directory\MunicipalitiesRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Directory\ProvincesRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Directory\ProvincesRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Products\ProductRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Products\ProductRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Products\ProductBrandRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Products\ProductBrandRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Products\ProductCategoryRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Products\ProductCategoryRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Posts\PostCategoryRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Posts\PostCategoryRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Posts\PostsRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Posts\PostsRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Pages\PagesRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Pages\PagesRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Participants\ParticipantRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Participants\ParticipantRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\JobOpening\JobOpeningRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\JobOpening\JobOpeningRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Pages\FAQRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Pages\FAQRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Pages\AboutUsRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Pages\AboutUsRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Pages\ContactUsRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Pages\ContactUsRepository::class
);
$this->app->bind(
\QxCMS\Modules\Client\Repositories\Applicants\ApplicantRepositoryInterface::class,
\QxCMS\Modules\Client\Repositories\Applicants\ApplicantRepository::class
);
}
}