{"id":33984089,"url":"https://github.com/devfelipereis/laravel-quiz","last_synced_at":"2025-12-30T17:30:09.751Z","repository":{"id":56966563,"uuid":"233057168","full_name":"devfelipereis/laravel-quiz","owner":"devfelipereis","description":"Library for adding questionnaires into Laravel framework","archived":false,"fork":false,"pushed_at":"2020-03-03T10:32:33.000Z","size":1458,"stargazers_count":0,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-10T14:27:16.052Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"vinicius-o-souza/laravel-quiz","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devfelipereis.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-01-10T13:53:06.000Z","updated_at":"2020-03-03T10:32:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"bc27445b-83d0-4fd6-beca-2bb38e43ed56","html_url":"https://github.com/devfelipereis/laravel-quiz","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devfelipereis/laravel-quiz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfelipereis%2Flaravel-quiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfelipereis%2Flaravel-quiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfelipereis%2Flaravel-quiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfelipereis%2Flaravel-quiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devfelipereis","download_url":"https://codeload.github.com/devfelipereis/laravel-quiz/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devfelipereis%2Flaravel-quiz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27699725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-13T02:00:09.769Z","response_time":147,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-13T04:20:37.759Z","updated_at":"2025-12-13T04:20:39.771Z","avatar_url":"https://github.com/devfelipereis.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Laravel Quiz\n\n## Redis\nO redis é usado para cachear o timer da execução do questionário\n\n## 1. Publicação dos assets\nphp artisan vendor:publish --provider=\"PandoApps\\Quiz\\QuizServiceProvider\"\n\n## 2. Seeder de QuestionType\nRodar seeder de question_types\n\n## 3. Configuração dos Modelos\nNo arquivo quiz.php insira o modelo que executa questionários (executable) e o modelos que cria questionário (parent_type).\n\n```\n/*\n*   Tipo do Modelo que responderá o questionário\n*/\n'executable' =\u003e App\\User::class,\n\n/*\n*   Nome da coluna que representa a descrição do modelo que executa o questionário\n*/\n'executable_column_name' =\u003e 'name',\n\n/*\n*   Tipo do Modelo que pertence o questionário\n*/\n'parent_type' =\u003e App\\User::class,\n```\n\n## 4. Configurar relacionamentos dos modelos\nModelo que executa questionários:\n```\n/**\n* @return \\Illuminate\\Database\\Eloquent\\Relations\\HasMany\n**/\npublic function executionTests()\n{\n\treturn $this-\u003emorphToMany(\\PandoApps\\Quiz\\Models\\Questionnaire::class, 'executable')-\u003ewithPivot('score')-\u003ewithTimestamps();\n}\n```\n\nModelo que cria questionários:\n```\n/**\n* @return \\Illuminate\\Database\\Eloquent\\Relations\\HasMany\n**/\npublic function questionnaires()\n{\n\treturn $this-\u003emorphMany(\\PandoApps\\Quiz\\Models\\Questionnaire::class, 'parent');\n}\n```\n\n## 5. Criação das Datatables\nCriar as datatables de questionnaires, questions, alternatives, answers e executable.\nCrie um arquivo dentro da pasta App/DataTables com o nome do modelo + 'DataTable', exemplo: QuestionnaireDataTable. Essa classe do datatable deve implementar a classe do modelo correspondente.\nExemplo da classe QuestionnaireDataTable implementando sua interface correspondente.\n\n```\nnamespace App\\DataTables;\n\nuse PandoApps\\Quiz\\DataTables\\QuestionnaireDataTableInterface;\nuse PandoApps\\Quiz\\Models\\Questionnaire;\nuse PandoApps\\Quiz\\Services\\DataTablesDefaults;\nuse Yajra\\DataTables\\Datatables;\nuse Yajra\\DataTables\\Services\\DataTable;\n\nclass QuestionnaireDataTable extends DataTable implements QuestionnaireDataTableInterface\n{\n```\n\n## Rotas\n\n```\nRoute::group(['prefix' =\u003e config('quiz.models.parent_url_name'). '/{' . config('quiz.models.parent_id'). '}'], function () {\n    \n    Route::group(['prefix' =\u003e 'alternatives'], function () {\n        Route::get('/',                                        ['as'=\u003e'alternatives.index',   'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\AlternativeController@index']);\n        Route::get('/{alternative_id}',                        ['as'=\u003e'alternatives.show',    'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\AlternativeController@show']);\n        Route::match(['put', 'patch'], '/{alternative_id}',    ['as'=\u003e'alternatives.update',  'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\AlternativeController@update']);\n        Route::delete('/{alternative_id}',                     ['as'=\u003e'alternatives.destroy', 'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\AlternativeController@destroy']);\n        Route::get('/{alternative_id}/edit',                   ['as'=\u003e'alternatives.edit',    'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\AlternativeController@edit']);\n    });\n    \n    Route::group(['prefix' =\u003e 'answers'], function () {\n        Route::get('/',                                     ['as'=\u003e'answers.index',   'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\AnswerController@index']);\n        Route::get('/{answer_id}',                          ['as'=\u003e'answers.show',    'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\AnswerController@show']);\n    });\n    \n    Route::group(['prefix' =\u003e 'executables'], function () {\n        Route::get('/',                                     ['as'=\u003e'executables.index',         'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\ExecutableController@index']);\n        Route::get('/{questionnaire_id}/questionnaire',     ['as'=\u003e'executables.statistics',    'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\ExecutableController@statistics']);\n        Route::get('{executable_id}/',                      ['as'=\u003e'executables.show',          'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\ExecutableController@show']);\n        Route::get('{questionnaire_id}/create/{model_id}',  ['as'=\u003e'executables.create',        'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\ExecutableController@create']);\n        Route::post('{questionnaire_id}/store',             ['as'=\u003e'executables.store',         'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\ExecutableController@store']);\n        Route::post('start',                                ['as'=\u003e'executables.start',         'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\ExecutableController@start']);\n    });\n    \n    Route::group(['prefix' =\u003e 'questionnaires'], function () {\n        Route::get('/',                                          ['as'=\u003e'questionnaires.index', 'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionnaireController@index']);\n        Route::get('/create',                                    ['as'=\u003e'questionnaires.create',  'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionnaireController@create']);\n        Route::post('/',                                         ['as'=\u003e'questionnaires.store',   'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionnaireController@store']);\n        Route::get('/{questionnaire_id}',                        ['as'=\u003e'questionnaires.show',    'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionnaireController@show']);\n        Route::match(['put', 'patch'], '/{questionnaire_id}',    ['as'=\u003e'questionnaires.update',  'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionnaireController@update']);\n        Route::delete('/{questionnaire_id}',                     ['as'=\u003e'questionnaires.destroy', 'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionnaireController@destroy']);\n        Route::get('/{questionnaire_id}/edit',                   ['as'=\u003e'questionnaires.edit',    'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionnaireController@edit']);\n    });\n\n    Route::group(['prefix' =\u003e 'questions'], function () {\n        Route::get('/',                                         ['as'=\u003e'questions.index',   'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionController@index']);\n        Route::get('/{question_id}',                            ['as'=\u003e'questions.show',    'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionController@show']);\n        Route::match(['put', 'patch'], '/{question_id}',        ['as'=\u003e'questions.update',  'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionController@update']);\n        Route::delete('/{question_id}',                         ['as'=\u003e'questions.destroy', 'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionController@destroy']);\n        Route::get('/{question_id}/edit',                       ['as'=\u003e'questions.edit',    'uses'=\u003e'\\PandoApps\\Quiz\\Controllers\\QuestionController@edit']);\n    });\n});\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevfelipereis%2Flaravel-quiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevfelipereis%2Flaravel-quiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevfelipereis%2Flaravel-quiz/lists"}