71
Some checks failed
Deploy Production / Deploy to Staging (push) Has been skipped
Go Linter / Run golangci-lint (api_gateway) (push) Failing after 2m31s
Go Linter / Build golang services (api_gateway) (push) Has been skipped
Go Linter / Tag Commit (push) Has been skipped
Go Linter / Push Docker Images (api_gateway) (push) Has been skipped

This commit is contained in:
Alex Shevchuk
2025-09-17 14:32:06 +03:00
parent 03372d7f9b
commit 61fc0d2747
22 changed files with 15486 additions and 10 deletions

View File

@@ -34,6 +34,27 @@ func (h *handler) setVacancyLogoLinks(
}
}
// @Summary Получить список вакансий для агента
// @Description Получение списка вакансий с возможностью фильтрации
// @Tags agents
// @Accept json
// @Produce json
// @Param agent_id path string true "ID агента"
// @Param distributor_id query string false "ID дистрибьютора"
// @Param company_id query string false "ID компании"
// @Param region query string false "Регион"
// @Param salary_bottom query int false "Минимальная зарплата"
// @Param salary_top query int false "Максимальная зарплата"
// @Param is_archived query bool false "Архивные вакансии"
// @Param status query string false "Статус вакансии"
// @Param page query int false "Номер страницы"
// @Param page_size query int false "Размер страницы"
// @Success 200 {object} rmodel.VacancyListGetResponse "Список вакансий"
// @Failure 400 {object} map[string]string "Неверные данные запроса"
// @Failure 401 {object} map[string]string "Неавторизованный доступ"
// @Failure 500 {object} map[string]string "Внутренняя ошибка сервера"
// @Security BearerAuth
// @Router /api/v1/agents/{agent_id}/vacancies [get]
func (h *handler) getVacancyListAgentHandler(w http.ResponseWriter, r *http.Request) {
const handlerName = "getVacancyListAgentHandler"
@@ -71,6 +92,26 @@ func (h *handler) getVacancyListAgentHandler(w http.ResponseWriter, r *http.Requ
}
}
// @Summary Получить список вакансий дистрибьютора
// @Description Получение списка вакансий дистрибьютора с возможностью фильтрации
// @Tags distributors
// @Accept json
// @Produce json
// @Param distributor_id path string true "ID дистрибьютора"
// @Param company_id query string false "ID компании"
// @Param region query string false "Регион"
// @Param salary_bottom query int false "Минимальная зарплата"
// @Param salary_top query int false "Максимальная зарплата"
// @Param is_archived query bool false "Архивные вакансии"
// @Param status query string false "Статус вакансии"
// @Param page query int false "Номер страницы"
// @Param page_size query int false "Размер страницы"
// @Success 200 {object} rmodel.VacancyListGetResponse "Список вакансий"
// @Failure 400 {object} map[string]string "Неверные данные запроса"
// @Failure 401 {object} map[string]string "Неавторизованный доступ"
// @Failure 500 {object} map[string]string "Внутренняя ошибка сервера"
// @Security BearerAuth
// @Router /api/v1/distributor/{distributor_id}/vacancies [get]
func (h *handler) getVacancyListDistributorHandler(w http.ResponseWriter, r *http.Request) {
const handlerName = "getVacancyListDistributorHandler"
@@ -106,6 +147,19 @@ func (h *handler) getVacancyListDistributorHandler(w http.ResponseWriter, r *htt
}
}
// @Summary Создать вакансию
// @Description Создание новой вакансии дистрибьютором
// @Tags distributors
// @Accept json
// @Produce json
// @Param distributor_id path string true "ID дистрибьютора"
// @Param request body rmodel.VacancyCreateRequest true "Данные для создания вакансии"
// @Success 201 {object} rmodel.VacancyCreateResponse "Вакансия создана"
// @Failure 400 {object} map[string]string "Неверные данные запроса"
// @Failure 401 {object} map[string]string "Неавторизованный доступ"
// @Failure 500 {object} map[string]string "Внутренняя ошибка сервера"
// @Security BearerAuth
// @Router /api/v1/distributor/{distributor_id}/vacancies [post]
func (h *handler) createVacancyDistributorHandler(w http.ResponseWriter, r *http.Request) {
const handlerName = "createVacancyDistributorHandler"
@@ -158,6 +212,21 @@ func (h *handler) createVacancyDistributorHandler(w http.ResponseWriter, r *http
}
}
// @Summary Обновить вакансию
// @Description Обновление информации о вакансии дистрибьютора
// @Tags distributors
// @Accept json
// @Produce json
// @Param distributor_id path string true "ID дистрибьютора"
// @Param vacancy_id path string true "ID вакансии"
// @Param request body rmodel.VacancyUpdateRequest true "Данные для обновления"
// @Success 204 "Вакансия обновлена"
// @Failure 400 {object} map[string]string "Неверные данные запроса"
// @Failure 401 {object} map[string]string "Неавторизованный доступ"
// @Failure 404 {object} map[string]string "Вакансия не найдена"
// @Failure 500 {object} map[string]string "Внутренняя ошибка сервера"
// @Security BearerAuth
// @Router /api/v1/distributor/{distributor_id}/vacancies/{vacancy_id} [patch]
func (h *handler) updateVacancyDistributorHandler(w http.ResponseWriter, r *http.Request) {
const handlerName = "updateVacancyDistributorHandler"
@@ -201,6 +270,20 @@ func (h *handler) updateVacancyDistributorHandler(w http.ResponseWriter, r *http
w.WriteHeader(http.StatusNoContent)
}
// @Summary Удалить вакансию
// @Description Удаление вакансии дистрибьютора
// @Tags distributors
// @Accept json
// @Produce json
// @Param distributor_id path string true "ID дистрибьютора"
// @Param vacancy_id path string true "ID вакансии"
// @Success 204 "Вакансия удалена"
// @Failure 400 {object} map[string]string "Неверные данные запроса"
// @Failure 401 {object} map[string]string "Неавторизованный доступ"
// @Failure 404 {object} map[string]string "Вакансия не найдена"
// @Failure 500 {object} map[string]string "Внутренняя ошибка сервера"
// @Security BearerAuth
// @Router /api/v1/distributor/{distributor_id}/vacancies/{vacancy_id} [delete]
func (h *handler) deleteVacancyDistributorHandler(w http.ResponseWriter, r *http.Request) {
const handlerName = "deleteDistributorVacancyHandler"
@@ -235,6 +318,18 @@ func (h *handler) deleteVacancyDistributorHandler(w http.ResponseWriter, r *http
w.WriteHeader(http.StatusNoContent)
}
// @Summary Отправить вакансию на модерацию
// @Description Отправка вакансии дистрибьютора на модерацию
// @Tags distributors
// @Accept json
// @Produce json
// @Param distributor_id path string true "ID дистрибьютора"
// @Param vacancy_id path string true "ID вакансии"
// @Success 200 {object} map[string]string "Вакансия отправлена на модерацию"
// @Failure 400 {object} map[string]string "Неверные параметры запроса"
// @Failure 500 {object} map[string]string "Внутренняя ошибка сервера"
// @Security BearerAuth
// @Router /api/v1/distributor/{distributor_id}/vacancies/{vacancy_id}/moderation [post]
func (h *handler) sendVacancyToModerationHandler(w http.ResponseWriter, r *http.Request) {
const handlerName = "sendVacancyToModerationHandler"