Giter Site home page Giter Site logo

debtcontroltest's Introduction

Тестовое задание для собеседования

Предыстория задания:

К вам пришел заказчик – владелец завода по производству свеч от геморроя “Здоровая норка”. У него есть подозрения что работники постоянно опаздывают на работу или уходят раньше. Он просит вас создать систему, которая могла бы отслеживать приход и уход на работу каждого сотрудника.
Каждый сотрудник на проходной будет прикладывать карточку к считывателю, который будет отправлять информацию о сотруднике в данную систему. От вас потребуется получить номер пропуска сотрудника, найти его в базе и записать его время прохождения КПП на вход или на выход.

Детали реализации:

  1. Проект должен быть в формате ASP.NET Web API, без авторизации, визуальное оформление (razor pages) не нужно, просто контроллеры api, принимающие данные и (если нужно) возвращающие результат в формате JSON.

  2. Необходимо создать базу сотрудников предприятия с возможностью добавления, удаления и изменения данных сотрудников, а так же вывода списка всех имеющихся работников. (т.е. простейший CRUD - интерфейс). Для простоты, формат БД – Sqlite. Для создания базы понадобится EntityFramework Core 5.0 и провайдер для Sqlite, доступный в NuGet под названием Microsoft.EntityFrameworkCore.Sqlite.

  3. Сотрудники должны иметь следующие данные: a. номер пропуска (ID), b. Фамилия, c. Имя, d. Отчество, e. Должность, f. Cписок всех входов/выходов с завода (назовем их смены).

  4. Должности у сотрудников будут трех видов: a. Менеджер, b. Инженер, c. Тестировщик свечей 5. Смены содержат: a. id смены (поле для БД) b. время начала смены (когда человек пришел на завод “Здоровая норка“), c. конца смены (когда ушел) d. количество отработанных часов (заполняется в конце смены) e. ссылку на работника.

  5. По итогу, должен получиться проект WebApi с двумя контроллерами: a. Контроллер “отдела кадров”, с возможностью создать, удалить или изменить данные работников. b. контроллер “КПП”, в который можно отправить номер пропуска сотрудника и дату/время входа/выхода. c. (бонус, если все вышеперечисленное было слишком просто) в контроллере “отдела кадров” сделать вывод статистики нарушений работников за месяц (данные необязательно заполнять в базу самим, можно использовать генератор). Если сотрудник приходит на работу позже 9:00 и уходит раньше 18:00, проставлять ему замечание и выводить кол-во этих замечаний за месяц. Тестировщики свечей от геморроя работают по 12 часов, их время ухода со смены должно быть не раньше 21:00, иначе проставляется замечание.

Детали работы контроллеров:

Все контроллеры должны возвращать либо Ok (200) и, если требуется, результат запроса в JSON, либо BadRequest (400) и сообщение об ошибке.

Кпп:

  1. Содержит 2 метода (экшена) StartShift и EndShift, оба принимают Id сотрудника (он же номер пропуска) и время начала (StartShift) / конца (EndShift) смены.
  2. Если сотрудника с заданным номером пропуска нет в базе – возвращается ошибка.
  3. Если сотрудник зашел на завод и вышел не отметившись, он не может пройти кпп на вход пока не закроет предыдущую смену – возвращается ошибка.
  4. Если сотрудник каким-то образом попал на завод не пробив пропуск, он не может выйти пока не отметит начало своей смены – возвращается ошибка.

Отдел кадров:

  1. Методы контроллера: a. Добавить сотрудника: обязательные поля – Фамилия, Имя, Должность, если отсутствует одно из них – возвращается ошибка. После добавления сотрудника в базу, вернуть объект нового сотрудника в формате JSON. b. Изменить сотрудника: обязательные поля – Id сотрудника, которого мы меняем, если Id сотрудника не указан или сотрудник не найден в базе – возвращается ошибка. При успешном изменении, вернуть сотрудника в формате JSON. c. Удалить сотрудника: обязательные поля – Id сотрудника, которого мы меняем, если Id сотрудника не указан или сотрудник не найден в базе – возвращается ошибка. d. Получить список всех сотрудников: возвращает список всех сотрудников в формате JSON. Опциональный аргумент – должность, если он передан, возвращаются только сотрудники с указанной должностью. Если передается несуществующая должность – вернуть ошибку e. Получить список всех должностей.
  2. (Бонус) если все-таки решили делать статистику нарушений, метод из пункта d должен показывать её в списке сотрудников.

debtcontroltest's People

Contributors

delaynore avatar

Watchers

 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.