Skip to content

mmustafin/tickets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ticket service

Предисловие

Скорость разработки снижена, так как в последнее время я больше руководил. То, что я сделал, заняло приблизительно 4 часа. Кроме того, сегодня я начал проходить большой курс от CutCode по API. Уверен, что после курса смогу писать хороший REST API, так как моя команда ни разу не писала свой API.

Как поднять проект ?

cd backend/
cp .env.example .env
composer install
./vendor/bin/sail up -d
./vendor/bin/sail php artisan key:generate
./vendor/bin/sail php artisan migrate --seed

# Для перезапуска миграции и сидеров
./vendor/bin/sail php artisan migrate:fresh --seed

FRONTEND

С фронтом, а точнее VUE очень мало опыта, но я быстро учусь,по этому не успел, так как в 4 часа точно не уложусь. Обычно фронт делается либо параллельно, либо после основного написания бека.

cd frontend/
npm install
npm run dev

Что я сделал ?

Для удобного просмотра отключил защиту CSRF в файле bootstrap/app.php

$middleware->validateCsrfTokens(except: [
    'event/*',
]);

Так же в роутерах не проставлен middleware на проверку авторизован пользователь или нет, сейчас стоит guest. Необходимо будет проставить auth в файле routes/web.php

Написал 1 контролер для Tickets

Файл app/Http/Controllers/TicketController.php В нем присутствует 2 метода

checkStatus - поиск билета http://localhost/event/1/ticket/1010/status

scan - для сканера http://localhost/event/1/ticket/1010/scan

Метод ищет билет, далее проверяет статус, если не валиден то возвращает ошибку. Если валиден, меняет статус на used.

Использовал подход с Action что бы контролер был минимален SOLID и тп. Плюс методы для QueryBuildder, что бы не дублировать одни и те же запросы.

Мыслей очень много о том, что и как нужно сделать, включая рефакторинг (к рефакторингу подхожу, когда кода побольше). Например, как минимум, я бы добавил проверку в AccessEventMiddleware, чтобы только ответственные пользователи могли добавлять или изменять модели тикетов.

Так же по поводу тестов в первую очередь приступил бы к ней, после того когда хотя бы один контролер был бы написан до конца.

Декомпозиция

  • Задача на миграции, модели, подумать об архитектуре всего проекта.
  • Контролер Тикетов его методы и Actions
  • написание тестов для тикетов
  • Контролеры для театра и событий
  • Подход к авторизации и всему что с ним связанно (по умолчанию стоит sanctum + breeze)
  • Рефакторинг скорее всего переход на DDD если он того требует
  • FRONT верстка
  • FRONT vue далее уже отдельно декомпозировать на подзадачи

P.S Более чем уверен что после похождения текущего курса сделал бы все иначе и уже бы смог за 1-2 дня написать на много больше.

С Уважением, Мустафин Марат.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published