Method is used for approve or reject employee request.
See service specification
Authorize
- Verify the validity of access token
- Check user scope employee_request:update in order to perform this action
- In case error - return 401 error
Check action in request
- if action = APPROVE, add user new role
- if action - REJECT, update employee request status on REJECTED
Update employee request status to REJECTED
Invoke WS to update employee request status with parameter 'action'='reject'
See service specification
Get Employee Request Details
Invoke WS Get Employee Request by ID for further employee creation
See service specification
Create user in Auth
Create user in Auth
Create/Update employee
- Search party_id by tax_id (tax_id or passport_number) and birth_date for deduplication Party
- If found, update object party - Update party WS
- If not found, - Create object party
Update Party. See specification
The following fields can't be changed:
- tax_id (tax_id or passport_number)
- birth_date
- If doctor object in ER is null, don't update party.eductions/party.qualifications/party.specialities/party.science_degree. Otherwise update those objects.
- if about_myself/working_experience is null or empty string - don't update correspondent fields in parties.
- Create party WS. See specification
- create related entity party-user in PRM
- Chech employee_id in request
- if employee_id is exist in request, Update employee.
- if employee_id is not exist, Create employee.
- Update employee. See specification
- The following fields can't be changed:
- employee_type
- legal_entity_id
- start_date
- if employee_type = 'DOCTOR', 'SPECIALIST' or 'ASSISTANT' update doctor object
- if one of next fields were changed:
- first_name
- second_name
- last_name
find contracts with contractor_owner_id=$owner_id and status='VERIFIED'. Set ops.contracts.is_suspended=true
- The following fields can't be changed:
- Create new employee. See specification
If (employee_type = OWNER || employee_type = PHARMACY_OWNER) : deactivate all other records with the employee_type = OWNER
or employee_type = PHARMACY_OWNER for the legal_entity,
where new owner is creating:
update employees e set is_active = false inserted_by = $new_owner_id inserted_at = md5(clock_timestamp() where e.legal_entity_id = $employee_request.legal_entity_id and (e.employee_type = 'OWNER' or e.employee_type = 'PHARMACY_OWNER')
In case new OWNER was added find contracts with contractor_owner_id=$old_owner_id and status='VERIFIED'.
Set ops.contracts.is_suspended=true
Create related entity party-user
Create related entity party-user
It can be only one pair user_id-party_id.
party_id cannot be updated for the user_id.
Check that there is no records in party_users for the stated in employee_request user_id
If not - return 422 error: "Email is already used by another person"
Add role
Add user role by invoke service - название метода
Role is assigned according to employee_type
See service logic
See service spesification
Update employee request status to APPROVED
Invoke WS to update employee request status with parameter 'action'='approve'
See service specification
Send Email
Send email with successful registration using WS - Send Message (TBD)
Temporarily use Postmark