Add inquiry status transition error handling and validation improvements
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
- Introduced InvalidStatusTransitionError to handle invalid status transitions for inquiries, providing clearer error messages. - Updated UpdateInquiryStatusForm to make the Reason field optional and added logic to set a default reason if not provided. - Enhanced form validation tests to cover new status transition error scenarios and validation messages. - Refactored handler methods to utilize new error handling functions for improved response management. This update improves the robustness of inquiry status management by ensuring proper error handling and validation, enhancing user experience during status updates.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package inquiry
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"tm/pkg/response"
|
||||
"tm/pkg/security"
|
||||
|
||||
@@ -21,7 +22,7 @@ type CreateInquiryForm struct {
|
||||
// UpdateInquiryStatusForm represents the data required to update inquiry status
|
||||
type UpdateInquiryStatusForm struct {
|
||||
Status string `json:"status" valid:"required,in(pending|reviewed|approved|rejected)" example:"reviewed"` // New status
|
||||
Reason string `json:"reason" valid:"required,length(5|500)" example:"Initial review completed"` // Reason for status change
|
||||
Reason string `json:"reason" valid:"optional,length(1|500)" example:"Initial review completed"` // Reason for status change
|
||||
Description string `json:"description" valid:"optional,length(0|1000)" example:"Additional notes about the review"` // Optional description
|
||||
}
|
||||
|
||||
@@ -125,6 +126,11 @@ func (f *CreateInquiryForm) ValidateAndSanitize(xssPolicy *security.XSSPolicy) e
|
||||
|
||||
// ValidateAndSanitize validates and sanitizes the status update form
|
||||
func (f *UpdateInquiryStatusForm) ValidateAndSanitize(xssPolicy *security.XSSPolicy) error {
|
||||
f.Status = strings.ToLower(strings.TrimSpace(f.Status))
|
||||
if strings.TrimSpace(f.Reason) == "" {
|
||||
f.Reason = "Status updated to " + f.Status
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
// Sanitize Reason
|
||||
|
||||
Reference in New Issue
Block a user