Pull to refresh

Относительно удачное тестовое задание на C++ и QT

К слову, очень сложно решать тестовое задание за несколько дней, - всегда есть штуки, которые приходится осваивать на лету в процессе. Собственно постановка задачи сводится к знанию С++( в рамках STL не обязательно углубляясь во все тяжкие), умении подключить фреймворк к проекту, работы с базой данных и ее подключению к проекту( в рамках SQL не обязательно углубляясь во все тяжкие).

Вот постановка задачи:

Уточняя задачу, я решил ее без restapi и веб-приложения.

Первым делом надо установить postgres базу данных, это не сложно и можно найти как это сделать на ютубе или с помощью интуиции.

Немного кода как создать таблицу и заполнить ее
Create table table_workers(id serial primary key,name text unique,position text); 
CREATE TABLE table_tasks(id serial primary key,task text,parent_task integer,executor text,date_death_line date,date_start date,status text,foreign key (parent_task) references table_tasks(id),foreign key (executor) references table_workers(name));
Insert into table_workers values(1,'Ivanov Ivan Ivanovich','Developer');
Insert into table_workers values(2,'Petrov Petr Petrovich','Tester');
Insert into table_tasks values(1,'Add personal cabinet on site',NULL,'Ivanov Ivan Ivanovich','2020-05-01','2020-04-19','Appointed');
Insert into table_tasks values(2,'Test personal cabinet on site',NULL,'Petrov Petr Petrovich','2020-06-01','2020-05-02','Appointed');
Insert into table_tasks values(3,'Add payment system',NULL,'Ivanov Ivan Ivanovich','2021-07-01','2020-04-19','Appointed');
Insert into table_tasks values(4,'Test payment system',NULL,'Petrov Petr Petrovich','2021-06-01','2020-04-19','Appointed');
Insert into table_tasks values(0,'Without parent task',NULL,NULL,'2020-05-01','2020-04-19','Appointed');

Далее необходимо установить среду разработки, например, visual studio тоже не сложно видео полно в сети и инструкций. Потом нужно скачать QT framework и установить его, подключить к пустому проекту.

Собственно что получилось в итоге UI дизайн никудышний, но рабочий.

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

Самое сложное - это сделать запрос, который в столбце oldtask покажет старые задачи, уже выполненные.

Это делается вот таким запросом:

Код
SELECT tt1.*, string_agg(tt.task, E'\n') as oldtask FROM table_tasks tt1 join table_tasks  tt on tt1.executor = tt.executor and (tt1.date_death_line > now() and tt.date_death_line < now()) group by tt1.id;"

В итоге у Иван Иваныча и Петра Петровича были такие задачи:

Ссылка на исходный код
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.