Commit graph

5821 commits

Author SHA1 Message Date
oleghasjanov
a11c0fca2d fix: handle HTTPClient::KeepAliveDisconnected in OrgRegistrantPhoneCheckerJob
This commit implements a reliable connection error handling solution for the
Company Register API integration. The job previously failed when connection
errors occurred without proper recovery mechanisms.
The implementation:
Adds a lightweight Retryable module with configurable retry logic
Implements smart caching of API responses (1 day expiration)
Handles common network errors like KeepAliveDisconnected and timeouts
Provides a fallback mechanism when all retry attempts fail
Ensures test reliability with cache-skipping in test environment
Testing:
Added specific tests for both recovery and fallback scenarios
Verified cache behavior in production and test environments
Resolves connection errors observed in production logs without adding
unnecessary complexity to the codebase.
2025-03-06 11:38:09 +02:00
oleghasjanov
ebff7a8321 fix: handle missing force_delete_start date
Update `force_delete_start_date` method to handle cases where `domain.force_delete_start` is not present:
- Return formatted current date plus expire warning period if `force_delete_start` is missing
- Ensure consistent date formatting across scenarios

This change prevents errors when `force_delete_start` is nil and provides a fallback date based on the current date and configured warning period.
2025-02-21 10:40:39 +02:00
Timo Võhmar
5b1a5a6d06
Merge pull request #2755 from internetee/upgrade-registrar-invalid-company-notification
Refactor force delete notifications and improve status handling
2025-02-20 10:11:17 +02:00
Timo Võhmar
98bf7fb594
Merge pull request #2751 from internetee/2742-clienthold-status-must-not-me-reset-unless-the-forcedelete-status-is-reset
fix: prevent client_hold status from returning after manual removal
2025-02-19 15:38:17 +02:00
oleghasjanov
be5bba09fb Refactor force delete notifications and improve status handling
- Add force delete type and start date to notifications
- Extract company status notes logic into separate method
- Standardize status message formatting for both soft and fast track deletes
- Update translation templates to include force delete type and start date info
- Add Estonian translation for new notification fields
2025-02-17 12:31:51 +02:00
Timo Võhmar
38dc5466e9
Merge pull request #2723 from internetee/company-validator-during-creation
feat: restore company validation for Estonian organizations
2025-02-12 10:33:28 +02:00
oleghasjanov
6194c5c58a fix: prevent client_hold status from returning after manual removal
- Add flag in force_delete_data to track manual client_hold removal
- Update ProcessClientHold to respect manual status removal
- Add test to verify client_hold doesn't return after admin removes it

When an admin manually removes the client_hold status from a domain,
it should not be automatically re-added by the ProcessClientHold job.
This change tracks manual removals and prevents the status from being
re-added while maintaining the force delete process.
2025-02-10 13:42:19 +02:00
Timo Võhmar
c4bbad934e
Merge pull request #2748 from internetee/admin-contacts-in-settings-and-validation
feat: add admin contact ident type validation
2025-02-06 11:09:44 +02:00
oleghasjanov
2d103bda99 fix: improve admin contact validation messages
- Update error message for missing admin contact to be more concise
- Standardize admin contact validation message for invalid ident type
- Remove redundant error message formatting

The changes make admin contact validation messages more consistent
throughout the application, using "Admin contact" terminology instead
of "Administrative contact" for better clarity and consistency.
2025-02-05 11:53:56 +02:00
oleghasjanov
f61baf32c5 commit
fix: improve company register status messages

- Update error message for missing company in registry
- Clarify status message format for existing companies
- Update dependencies: logger (1.6.5) and net-smtp (0.5.1)

The changes make company status messages more descriptive and clearer
for administrators when a company's registration status triggers domain
deletion. Messages now explicitly state whether a contact was not found
or has a specific status in the business registry.
2025-02-05 11:26:45 +02:00
oleghasjanov
a56237c84f fix: update admin contact validation error code
- Change error code from 2004 to 2306 for admin contact validation
- Add explicit validation check for required admin contacts
- Update tests to expect new error code

The error code 2306 better reflects the EPP standard for policy-based
validation failures. This change makes the error handling more consistent
with EPP specifications when validating admin contact requirements.
2025-02-05 10:54:21 +02:00
oleghasjanov
a625388df4 fixed reason info 2025-02-03 14:08:50 +02:00
oleghasjanov
b1e079340e refactor: Improve company status handling logic
- Extract liquidation email logic into separate method `send_email_for_liquidation`
- Add early return for bankrupt companies
- Remove redundant logging for bankrupt companies
- Simplify status handling conditions
2025-02-03 14:08:50 +02:00
oleghasjanov
bf2a038e3a refactor: Extract company status handling logic
- Move company status handling logic into a separate method `handle_company_statuses`
- Improve code readability by splitting proceed_company_status method
- Keep status update logic after handling company statuses
2025-02-03 14:08:50 +02:00
oleghasjanov
7392ce2d76 refactor: Extract company status handling logic
- Move company status handling logic into a separate method `handle_company_statuses`
- Improve code readability by splitting proceed_company_status method
- Keep status update logic after handling company statuses
2025-02-03 14:08:50 +02:00
oleghasjanov
78be26c0d4 send liquidated email only once 2025-02-03 14:08:50 +02:00
oleghasjanov
88f884ca47 fix: skip non-scheduled domains in lift_force_delete
Only attempt to cancel force delete for domains that actually have it scheduled.
This prevents unnecessary method calls and potential errors.
2025-02-03 14:08:50 +02:00
oleghasjanov
96fae4a8d4 fix: adjust template_name access for hstore field
Use direct accessor method for template_name instead of hash access since force_delete_data is stored as hstore
2025-02-03 14:08:50 +02:00
oleghasjanov
23c010f034 added new pattern for FD lifted 2025-02-03 14:08:50 +02:00
oleghasjanov
dcf9447f97 added update whois job skipping for lifting FG 2025-02-03 14:08:50 +02:00
oleghasjanov
d126944ad7 reverse 2025-02-03 14:08:50 +02:00
oleghasjanov
19df0cd57f fix tests -> count of running jobs were decreased 2025-02-03 14:08:50 +02:00
oleghasjanov
bbdf44583c updated WhoisUpdateJob condition for running 2025-02-03 14:08:50 +02:00
oleghasjanov
9d036f9af3 added virtual attribute for skip whois update 2025-02-03 14:08:50 +02:00
oleghasjanov
38fdc35496 Remove extra update 2025-02-03 14:08:50 +02:00
oleghasjanov
0829f387f2 added days interval 2025-02-03 14:08:50 +02:00
oleghasjanov
92f82194e1 change registrant query 2025-02-03 14:08:50 +02:00
oleghasjanov
8a93a8b4d2 feat: enhance soft delete process for invalid companies
- Add email notification for soft delete process
- Include company status information in force delete notes
- Add validation check to prevent duplicate force delete scheduling
- Pass additional context (reason, email) to force delete process

This improves the soft delete process by providing more detailed
information about why the domain is being force deleted and ensures
proper notification to the contact.
2025-02-03 14:08:50 +02:00
oleghasjanov
2ec545b3aa feat: add status notes to force delete notifications
- Add notes parameter to force delete interactions to provide more context
- Include company registry status in force delete notifications
- Add status mapping constants for better readability
- Move status note assignment before save in force delete process

Technical details:
- Add notes field to Domains::ForceDelete::Base interaction
- Update force delete notifications to include status notes
- Add REGISTRY_STATUSES mapping in CompanyRegisterStatusJob
- Update tests to verify new notification format
2025-02-03 14:08:50 +02:00
oleghasjanov
45c77f7052 fix: improve company registry data processing
- Switch company_register branch to issues-with-upcoming-data
- Convert ident to string when querying company data
- Add extended logging in CompanyRegisterStatusJob
- Disable automatic merging in renovate.json

Technical changes:
- Update dependencies: date, net-protocol, net-smtp, timeout
2025-02-03 14:08:48 +02:00
oleghasjanov
89097bfabe feat: restore company validation for Estonian organizations
- Re-enable company validation logic for Estonian organization contacts
- Update company_register gem to use master branch
- Restore and update company validation tests
- Add additional check for Estonian country code in validation

This change ensures that only registered or liquidated Estonian companies
can be used when creating organizational contacts.
2025-02-03 14:08:18 +02:00
oleghasjanov
f2978599b4 feat: add admin contact ident type validation
- Add new setting for allowed admin contact ident types
- Add validation for admin contact ident types on domain create/update
- Add UI controls for managing allowed ident types
- Add tests for new validation rules
- Update domain model to respect new settings

The changes allow configuring which identification types (private person,
organization, birthday) are allowed for administrative contacts. This is
enforced when creating new domains or adding new admin contacts.
2025-02-03 13:59:03 +02:00
oleghasjanov
a0a055a033 commit
fix: add nil check for registrant in phone checker job

Add a guard clause to handle cases where registrant_user is not found
in execute_single_checker method. This prevents potential NoMethodError
when trying to check phone number for non-existent registrant.

Previously the method would raise an error when registrant_user_code
was invalid or not found in the database.
2025-02-01 14:06:52 +02:00
Timo Võhmar
268b942042
Merge pull request #2741 from internetee/disclose-phone-num-for-org-registrants
Update company_register gem and fix logger dependency
2025-01-31 17:52:57 +02:00
Timo Võhmar
3289851340
Merge pull request #2740 from internetee/add-birthdate-verification
Added birthday ident verification
2025-01-31 17:50:55 +02:00
oleghasjanov
cd5de3bd14 commit
feat: make technical contacts optional for all domains

- Remove automatic tech contact assignment from admin contacts
- Set minimum tech contacts to 0 for all registrant types
- Update tests to reflect optional tech contacts
- Keep max tech contacts limit from settings

This change implements the requirement to make technical contacts optional
for all domain types while maintaining the maximum limit from settings.
Previously tech contacts were required for organizations and automatically
copied from admin contacts.
2025-01-31 15:49:35 +02:00
oleghasjanov
c2affb393f Refactor domain admin contact validation logic
- Remove validate_admin_contact_type validation
- Extract age calculation logic into separate methods
- Add helper methods for Estonian ID and birthday age checks
- Improve code organization and readability
- Split complex require_admin_contacts? method into smaller methods
2025-01-31 13:01:00 +02:00
oleghasjanov
863dcce647 Add admin contact validation rules based on registrant type and age
- Add validation requiring admin contacts for legal entity registrants
- Add validation requiring admin contacts for underage private registrants:
  - Under 18 years old for birthday-based identification
  - Under 18 years old for Estonian ID numbers
- Make admin contacts optional for:
  - Adult private registrants (18+ years)
  - Adult Estonian ID holders
  - Non-Estonian private registrants
- Add tests covering all new validation scenarios
- Add helper methods to calculate age and parse Estonian ID birth dates
2025-01-31 12:49:14 +02:00
tsoganov
c87c86ac9b Corrected tests 2025-01-31 12:49:14 +02:00
tsoganov
ffe2cad8d9 Improved verification email translations 2025-01-31 12:49:14 +02:00
oleghasjanov
cb868cd1a9 Removed Russian notices from mail templates 2025-01-31 12:49:14 +02:00
oleghasjanov
803276d8c8 Add phone number validation for Estonian organization contacts
- Add OrgRegistrantPhoneCheckerJob execution for contact creation and update
- Rename validate_* methods to maybe_validate_* for consistency
- Add tests for phone number validation in REPP API
- Fix method naming and add proper job arguments

This ensures phone numbers are validated against company register data
for Estonian organization contacts after creation or update.
2025-01-30 12:49:20 +02:00
oleghasjanov
429e2644d6 Fix registrant user lookup in phone checker job
- Replace RegistrantUser.find_by with Contact model query
- Add proper scoping for organization contacts from Estonia
- Include join with registrant domains

This ensures consistent contact lookup between bulk and single checker methods
2025-01-30 10:57:45 +02:00
oleghasjanov
fe880ab3d1 refactor 2025-01-29 14:50:33 +02:00
oleghasjanov
d3d91b5294 Update company_register gem and fix logger dependency
- Switch company_register gem to 'issues-with-upcoming-data' branch
- Add concurrent-ruby 1.3.4 to fix ThreadSafeLevel logger error
- Update various gem dependencies

Resolves logger initialization error related to ActiveSupport::Logger::ThreadSafeLevel
2025-01-29 14:47:51 +02:00
tsoganov
8fdbf32913 Added country claim for birthday ident verifications 2025-01-29 11:50:45 +02:00
tsoganov
8ed720b383 Fixed identification request webhook 2025-01-28 10:41:54 +02:00
Timo Võhmar
a9b341ebfe
Merge pull request #2730 from internetee/2702-optional-admin-contact-for-private-registrations
Make admin contacts optional for private registrants
2025-01-28 10:15:33 +02:00
tsoganov
55848e1000 Added birthday ident verification 2025-01-27 16:26:20 +02:00
Timo Võhmar
8dcc287d60
Merge pull request #2737 from internetee/improve-verification-translations
Improved verification email translations
2025-01-15 16:45:44 +02:00