Skip to content

MayNor1337/TestTaskToOCS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Брифинг

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

Докладчик логинится на сайте конференции, переходит в личный кабинет и заполняет форму подачи заявки.

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

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

Докладчики, с другой стороны, очень занятые и востребованные специалисты, их могут отвлекать от процесса подачи заявки по срочным рабочим делам. Сам процесс подачи заявки довольно волнительный, требует определенной концентрации и времени. Это обуславливает необходимость наличия некоторого механизма черновиков.

Программный комитет работает с заявками во внутренней CRM-системе. CRM система умеет импортировать новые заявки по расписанию, запрашивая при этом данные с момента прошлого импорта.

Так же есть почтовый робот, который оправляет письмо-напоминалку по заявкам которые больше 2х недель висят в черновиках. Перед закрытием приема заявок робот начинает отправлять напоминалки по всем заявках старше 2х дней. Робот умеет по расписанию получать данные передавая дату заявки старше которой его интересуют.

Заявка представляет собой следующие данные:

  • идентификатор пользователя / автора заявки - Guid, обязателен
  • тип активности - одно значение из перечисления (доклад, мастеркласс, дискуссия), обязателен
  • название - строка, до 100 символов, обязательное
  • краткое описание для сайта - строка, до 300 символов, не обязательное
  • план - строка, до 1000 символов, обязателен

Сервис должен реализовывать следующие операции (контракты под катом):

  • создание заявки

    POST /applications
    {
    	author: "ddfea950-d878-4bfe-a5d7-e9771e830cbd",
    	activity: "Report",
    	name: "Новые фичи C# vNext",
    	description: "Расскажу что нас ждет в новом релизе!",
    	outline: "очень много текста... прямо детальный план доклада!"
    }
    ===>
    {
    	id: "9c53ea53-a88d-4367-ad8a-281738690412",
    	author: "ddfea950-d878-4bfe-a5d7-e9771e830cbd",
    	activity: "Report",
    	name: "Новые фичи C# vNext",
    	description: "Расскажу что нас ждет в новом релизе!",
    	outline: "очень много текста... прямо детальный план доклада!"
    }
  • редактирование заявки

    PUT /applications/9c53ea53-a88d-4367-ad8a-281738690412
    {
    	activity: "Report",
    	name: "Новые фичи C# theNextGeneratin",
    	description: "Расскажу что нас ждет в новейшем релизе!",
    	outline: "еще больше текста..."
    }
    ===>
    {
    	id: "9c53ea53-a88d-4367-ad8a-281738690412",
    	author: "ddfea950-d878-4bfe-a5d7-e9771e830cbd",
    	activity: "Report",
    	name: "Новые фичи C# theNextGeneratin",
    	description: "Расскажу что нас ждет в новейшем релизе!",
    	outline: "еще больше текста..."
    }
  • удаление заявки

    DELETE /applications/9c53ea53-a88d-4367-ad8a-281738690412
    ==>
    OK, 200
  • отправка заявки на рассмотрение программным комитетом

    POST /applications/9c53ea53-a88d-4367-ad8a-281738690412/submit
    ==>
    OK, 200
  • получение заявок поданных после указанной даты

    GET /applications?submittedAfter="2024-01-01 23:00:00.00"
    ==>
    [
    	{
    		id: "9c53ea53-a88d-4367-ad8a-281738690412",
    		author: "ddfea950-d878-4bfe-a5d7-e9771e830cbd",
    		activity: "Report",
    		name: "Новые фичи C# theNextGeneratin",
    		description: "Расскажу что нас ждет в новейшем релизе!",
    		outline: "очень много текста..."
    	},
    	...
    ]
  • получение заявок не поданных и старше определенной даты

    GET /applications?unsubmittedOlder="2024-01-01 23:00:00.00"
    ==>
    [
    	{
    		id: "9c53ea53-a88d-4367-ad8a-281738690412",
    		author: "ddfea950-d878-4bfe-a5d7-e9771e830cbd",
    		activity: "Report",
    		name: "Новые фичи C# theNextGeneratin",
    		description: "Расскажу что нас ждет в новейшем релизе!",
    		outline: "очень много текста..."
    	},
    	...
    ]
  • получение текущей не поданной заявки для указанного пользователя

    GET /users/ddfea950-d878-4bfe-a5d7-e9771e830cbd/currentapplication
    ==>
    {
    	id: "9c53ea53-a88d-4367-ad8a-281738690412",
    	author: "ddfea950-d878-4bfe-a5d7-e9771e830cbd",
    	activity: "Report",
    	name: "Новые фичи C# theNextGeneratin",
    	description: "Расскажу что нас ждет в новейшем релизе!",
    	outline: "очень много текста..."
    }
  • получение заявки по идентификатору

    GET /applications/9c53ea53-a88d-4367-ad8a-281738690412
    ==>
    {
    	id: "9c53ea53-a88d-4367-ad8a-281738690412",
    	author: "ddfea950-d878-4bfe-a5d7-e9771e830cbd",
    	activity: "Report",
    	name: "Новые фичи C# theNextGeneratin",
    	description: "Расскажу что нас ждет в новейшем релизе!",
    	outline: "очень много текста..."
    }
  • получение списка возможных типов активности

    GET /activities
    ==>
    [
    	{ 
    		activity: "Report",
    		description: "Доклад, 35-45 минут"
    	},
    	{ 
    		activity: "Masterclass",
    		description: "Мастеркласс, 1-2 часа"
    	},
    	{ 
    		activity: "Discussion",
    		description: "Дискуссия / круглый стол, 40-50 минут"
    	}
    ]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages