GithubHelp home page GithubHelp logo

atlas-test-task's Introduction

Сервис календаря рабочих дней

Задача реализовать rest api сервис который позволяет вести календарь рабочих дней врачей (сотрудников). Реализация интерфейса пользователя не требуется.

Описание предметной области

Для каждого сотрудника (табельный номер, ФИО, примечание) можно указать период, статус, долю рабочего дня и примечание.

Табельный номер врача уникальное поле, не может быть изменено.

Статус может принимать одно из следующих значений:

• дежурство в приемном отделении

• работа в операционной

• больничный

• отпуск

Например сотрудник:

• брал больничный с 13.01.2018 - 22.01.2018 (10 полных рабочих дней)

• работал в приемном отделении пол дня 11.01.2018 (пол рабочего дня)

• Работал в операционной 1 день

Примечание: подразумевается, что выходные и праздничные дни никак не отличаются от рабочих дней.

Задания

Необходимо реализовать сервис, который предоставляет api с функционалом, описанным в заданиях ниже.

Задание 1

CRUD операции для сотрудников.

Для списка записей должна быть возможность осуществлять поиск по ФИО, табельному номеру.

Задание 2

CRUD операции для записей календаря (кто, когда, в каком статусе).

Задание 4 (по желанию)

Импорт базы сотрудников из внешнего excel файла. (test_data.xlsx)

Подразумевается, что импорт будет производиться периодически и файл в перспективе будет содержать больше 1000 записей.

Предполагается что в файле находится актуальная информация по действующим сотрудникам и должна быть синхронизирована при импорте с базой данных сервиса.

Использование DTO будет плюсом.

Технические требования

• Формат api: json на входе и выходе • Наличие минимально необходимых тестов будет плюсом. • Скрипт для деплоя будет плюсом.

Технологии • PHP текущей стабильной версии (7.x и т.д.). • Mysql текущей стабильной версии (5.7 и т.д.). • Symphony 3.4 • ORM Doctrine 2.x • Документирование кода - PHPDoc

Установка

  1. git clone https://github.com/aristova/atlas-test-task.git
  2. В корне проекта выполнить composer install
  3. Создать базу данных php bin/console doctrine:database:create
  4. Обновить структуру базы данных php bin/console doctrine:schema:update --force
  5. Запустить локальный веб-сервер php bin/console server:run

Примеры использования

Сотрудники Создание: curl -d '{"name":"Ivanov", "number":666, "note":"The best doctor"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8000/employee/new

Информация об одном сотруднике: curl -H "Content-Type: application/json" -X GET http://127.0.0.1:8000/employee/1

Информация о всех сотрудниках: curl -H "Content-Type: application/json" -X GET http://127.0.0.1:8000/employee/

Информация, отфильтрованная по табельному номеру сотрудника: curl -d '{"number":666}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8000/employee/

Информация, отфильтрованная по фамилии сотрудника: curl -d '{"name":"Ivanov"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8000/employee/

Редактирование: curl -d '{"name":"Petrov", "note":"The best doctor"}' -H "Content-Type: application/json" -X PUT http://127.0.0.1:8000/employee/1/edit

Удаление: curl -H "Content-Type: application/json" -X DELETE http://127.0.0.1:8000/employee/1

Записи в календаре

number - это табельный номер врача

Создание: curl -d '{"number":666, "status":"holiday", "from":"925574552", "to":"971193752"}' -H "Content-Type: application/json" -X POST http://127.0.0.1:8000/entry/new

Информация об одной записи: curl -H "Content-Type: application/json" -X GET http://127.0.0.1:8000/entry/1

Информация о всех записях: curl -H "Content-Type: application/json" -X GET http://127.0.0.1:8000/entry/

Редактирование: curl -d '{"number":666, "status":"sick", "from":"1528029333", "to":"1537943333"}' -H "Content-Type: application/json" -X PUT http://127.0.0.1:8000/entry/1/edit

Удаление: curl -H "Content-Type: application/json" -X DELETE http://127.0.0.1:8000/entry/1

atlas-test-task's People

Contributors

aristova avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.