Enhance API documentation and restructure routes for improved clarity
- Updated README.md to include comprehensive Swagger documentation details, highlighting new features and endpoint categories. - Introduced a new router structure to streamline route registration for admin and public endpoints, enhancing maintainability. - Updated health check endpoint documentation to reflect comprehensive server status information. - Enhanced customer and company management routes with improved descriptions and examples in Swagger. - Refactored customer and user handlers to remove obsolete route registrations, aligning with the new router structure. - Improved response handling in customer and user services to utilize string IDs consistently. - Updated validation rules and forms for customer management to support multiple company assignments. - Enhanced logging practices across services to ensure better traceability and error handling.
This commit is contained in:
@@ -2,6 +2,8 @@ package company
|
||||
|
||||
import (
|
||||
"tm/pkg/mongo"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// CompanyStatus represents company account status
|
||||
@@ -27,7 +29,7 @@ const (
|
||||
|
||||
// Company represents a company in the tender management system
|
||||
type Company struct {
|
||||
mongo.Model
|
||||
mongo.Model `bson:",inline"`
|
||||
Name string `bson:"name" json:"name"`
|
||||
Type CompanyType `bson:"type" json:"type"`
|
||||
Status CompanyStatus `bson:"status" json:"status"`
|
||||
@@ -73,12 +75,12 @@ type Company struct {
|
||||
|
||||
// SetID sets the company ID (implements IDSetter interface)
|
||||
func (c *Company) SetID(id string) {
|
||||
c.ID = id
|
||||
c.ID, _ = primitive.ObjectIDFromHex(id)
|
||||
}
|
||||
|
||||
// GetID returns the company ID (implements IDGetter interface)
|
||||
func (c *Company) GetID() string {
|
||||
return c.ID
|
||||
return c.ID.Hex()
|
||||
}
|
||||
|
||||
// SetCreatedAt sets the created timestamp (implements Timestampable interface)
|
||||
@@ -175,7 +177,7 @@ type CompanyResponse struct {
|
||||
// ToResponse converts Company to CompanyResponse
|
||||
func (c *Company) ToResponse() *CompanyResponse {
|
||||
return &CompanyResponse{
|
||||
ID: c.ID,
|
||||
ID: c.ID.Hex(),
|
||||
Name: c.Name,
|
||||
Type: string(c.Type),
|
||||
Status: string(c.Status),
|
||||
|
||||
@@ -25,33 +25,6 @@ func NewHandler(service Service, userHandler *user.Handler, logger logger.Logger
|
||||
}
|
||||
}
|
||||
|
||||
// RegisterRoutes registers company routes
|
||||
func (h *Handler) RegisterRoutes(e *echo.Echo) {
|
||||
// Admin routes for web panel
|
||||
adminV1 := e.Group("/admin/v1/companies")
|
||||
adminV1.Use(h.userHandler.AuthMiddleware())
|
||||
adminV1.POST("", h.CreateCompany)
|
||||
adminV1.GET("", h.ListCompanies)
|
||||
adminV1.GET("/:id", h.GetCompany)
|
||||
adminV1.PUT("/:id", h.UpdateCompany)
|
||||
adminV1.DELETE("/:id", h.DeleteCompany)
|
||||
adminV1.GET("/search", h.SearchCompanies)
|
||||
adminV1.PATCH("/:id/status", h.UpdateCompanyStatus)
|
||||
adminV1.PATCH("/:id/verification", h.UpdateCompanyVerification)
|
||||
adminV1.PUT("/:id/tags", h.UpdateCompanyTags)
|
||||
adminV1.POST("/:id/tags/add", h.AddTags)
|
||||
adminV1.POST("/:id/tags/remove", h.RemoveTags)
|
||||
adminV1.POST("/:id/verify", h.VerifyCompany)
|
||||
adminV1.POST("/:id/suspend", h.SuspendCompany)
|
||||
adminV1.POST("/:id/activate", h.ActivateCompany)
|
||||
adminV1.GET("/stats", h.GetCompanyStats)
|
||||
adminV1.GET("/type/:type", h.GetCompaniesByType)
|
||||
adminV1.GET("/status/:status", h.GetCompaniesByStatus)
|
||||
adminV1.GET("/industry/:industry", h.GetCompaniesByIndustry)
|
||||
}
|
||||
|
||||
// Web Panel Endpoints
|
||||
|
||||
// CreateCompany creates a new company (Web Panel)
|
||||
// @Summary Create a new company
|
||||
// @Description Create a new company with comprehensive information including business details, address, tags, and customer assignment. This endpoint is used by the web panel for full company registration.
|
||||
|
||||
Reference in New Issue
Block a user