Table of Contents |
---|
...
Page Properties | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Logic
...
Dictionaries
API paragraph not found
...
new_employee_request_schema.json
There is an object “<employee_type>” (“doctor”, “assistant”, “specialist” …) in the body of the “employee_request”; <employee_type> is the same as employee to be created (DOCTOR, ASSISTANT, SPECIALIST, etc). Required for the emloyees with mandatory medical education.
if employee_type == PHARMACY_EMPLOYEE_TYPES check division_id
if division_id is absent - return error 422 "division_id should be specified"
Validate request (Logic)
Check employee_type: Employee configurable validation rules and dictionaries
If employee_id is passed in the payload:
search employees by employee_id
if not found - return error 404
else check * employee_type and (* tax_id or passport_id)
If dosn't match, return error 409
If match, check that employee is active
for (employee_type = OWNER or PHARMACY_OWNER), status = APPROVED and is_active = false
for (employee_type not OWNER and not PHARMACY_OWNER), status = DISMISSED and is_active = true
if employee is active - create employee request
if employee is not active - return error 409
Check allowed employee types for legal_entity type: Legal_Entity_Type vs Employee_Type validation rules
if not found - return error 404
Validate legal entity type status for current legal entity: status should be active or suspended
Validate party
first_name, last_name, second_name have the same validation pattern - `^(?!.*[ЫЪЭЁыъэё@%&$^#])[А-ЯҐЇІЄа-яґїіє’\\'\\- ]+$`
if doesn't match, return error 422 "string does not match pattern ..."
validate birth_date
birth_date > 1900-01-01 and birth_date < current date
otherwise return error 422 "invalid birth_date value"
birth_date has validation pattern - `^(\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))?)?$`
if doesn't match, return error 422 "expected 'birth_date' to be a valid ISO 8601 date"
gender has one of the following values - "FEMALE", "MALE"
otherwise return error 422 "value is not allowed in enum"
validate tax_id
tax_id has validation pattern - `^([0-9]{9,10}|[А-ЯЁЇIЄҐ]{2}\\d{6})$`
if doesn't match, return error 422 "string does not match pattern ..."
email has validation pattern - `^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[A-Z0-9-]+\\.)+[A-Z]{2,6}$`
if doesn't match, return error 422 "expected 'email' to be an email address"
validate documents
documents.type has one of the following values:
"BIRTH_CERTIFICATE"
"BIRTH_CERTIFICATE_FOREIGN"
"COMPLEMENTARY_PROTECTION_CERTIFICATE"
"NATIONAL_ID"
"PASSPORT"
"PERMANENT_RESIDENCE_PERMIT"
"REFUGEE_CERTIFICATE"
"TEMPORARY_CERTIFICATE"
"TEMPORARY_PASSPORT"
otherwise return error 422 "value is not allowed in enum"
documents.number has validation pattern according to documents.type
BIRTH_CERTIFICATE - `^((?![ЫЪЭЁыъэё@%&$^#`~:,.*|}{?!])[A-ZА-ЯҐЇІЄ0-9№\\/()-]){2,25}$`
COMPLEMENTARY_PROTECTION_CERTIFICATE - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`
NATIONAL_ID - `^[0-9]{9}$`
PASSPORT - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`
PERMANENT_RESIDENCE_PERMIT - `^(((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{4,6}|[0-9]{9}|((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{5}\\/[0-9]{5})$`
REFUGEE_CERTIFICATE - `^((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{6}$`
TEMPORARY_CERTIFICATE - `^(((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{4,6}|[0-9]{9}|((?![ЫЪЭЁ])([А-ЯҐЇІЄ])){2}[0-9]{5}\\/[0-9]{5})$`
TEMPORARY_PASSPORT - `^((?![ЫЪЭЁыъэё@%&$^#`~:,.*|}{?!])[A-ZА-ЯҐЇІЄ0-9№\\/()-]){2,25}$`
validate documents.issued_at
documents.issued_at has validation pattern - `^(\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))?)?$`
if doesn't match, return error 422 "expected 'issued_at' to be a valid ISO 8601 date"
validate phones
phones.type has one of the following values - "LAND_LINE", "MOBILE"
otherwise return error 422 "value is not allowed in enum"
phones.number has validation pattern - `^\\+38[0-9]{10}$`
if doesn't match, return error 422 "string does not match pattern ..."
...