Table of Contents |
---|
...
Decode content that is encrypted in an electronic digital signature.
Use Digital signature WS. Method checks digital signature and returns result.
See service specification
Validate DRFO
- Check that DRFO in Certificate details exists and not empty
- Check that DRFO in Certificate details is equal to DRFO of the user that creates employee_request in Party
- Get party.tax_id using user_id from employee request payload
- Compare DRFO in Certificate with party.tax_id
- Convert DRFO and TAX_ID to uppercase
- Compare DRFO and TAX_ID as Cyrillic letters
- Convert DRFO to Cyrillic and compare as Cyrillic letters
- In case validation fails - generate 422 error
...
- 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
- search employees by employee_id
- 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"
- birth_date > 1900-01-01 and birth_date < current 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 ..."
- tax_id should suite following rules
- 1-5 digits - encoded date of birth
- 6-9 digits - the Register number (Tax Register) in correspondence with date of birth
- 9th digit - additionalдy gender is encoded (even - Female, odd - Male)
- 10th digit - has the following formula:
code: ABCDEFGHIZ
Х = А*(-1) + B*5 + C*7 + D*9 + E*4 + F*6 + G*10 + H*5 + I*7
Z = Х-(11 * whole part of (Х/11))
Z is 10th digit- all negative scenarios (1-43) return error 422 "invalid tax_id value"
- tax_id has validation pattern - `^([0-9]{9,10}|[А-ЯЁЇIЄҐ]{2}\\d{6})$`
- 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"
- 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])))?)?$`
- documents.type has one of the following values:
- 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 ..."
- phones.type has one of the following values - "LAND_LINE", "MOBILE"
- first_name, last_name, second_name have the same validation pattern - `^(?!.*[ЫЪЭЁыъэё@%&$^#])[А-ЯҐЇІЄа-яґїіє’\\'\\- ]+$`
...
- Generate activation link, which contains Employee request GUID
- Send activation URL on user email
- invoke service - Send message
See service specification
- invoke service - Send message
Updating employee data
To update the data of an existing employee use the endpoint `Create Employee Request`.
It is necessary to transfer the same JSON as when creating employee request with the same id of an existing employee.
There are several rules when updating employee data:
Position can not be changed
in case of failure, return error 422 "position can not be changed"
If specialities.speciality_officio:true, in this object value of speciality can not be changed
in case of failure, return error 422 "main speciality can not be changed"
...