Enhance Tender Approval Service with Tender Details Integration
- Updated the tender approval service to include methods for retrieving tender approvals with associated tender details, improving the response structure for API consumers. - Modified the tender approval handler to utilize the new service methods, ensuring that tender details are included in the responses for created, updated, and retrieved tender approvals. - Enhanced the API documentation to reflect the changes in response formats, including the new `TenderApprovalWithTenderResponse` structure. - Ensured adherence to Clean Architecture principles by maintaining a clear separation of concerns in the service and handler layers.
This commit is contained in:
@@ -56,7 +56,13 @@ func (h *Handler) CreateTenderApproval(c echo.Context) error {
|
||||
return response.InternalServerError(c, "Failed to create tender approval")
|
||||
}
|
||||
|
||||
return response.Created(c, tenderApproval.ToResponse(), "Tender approval created successfully")
|
||||
// Get the created approval with tender details
|
||||
tenderApprovalWithTender, err := h.service.GetTenderApprovalByIDWithTender(c.Request().Context(), tenderApproval.GetID())
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to get tender approval details")
|
||||
}
|
||||
|
||||
return response.Created(c, tenderApprovalWithTender, "Tender approval created successfully")
|
||||
}
|
||||
|
||||
// UpdateTenderApproval updates a tender approval
|
||||
@@ -81,7 +87,7 @@ func (h *Handler) UpdateTenderApproval(c echo.Context) error {
|
||||
return response.ValidationError(c, "Invalid request data", err.Error())
|
||||
}
|
||||
|
||||
tenderApproval, err := h.service.UpdateTenderApproval(c.Request().Context(), id, form)
|
||||
_, err = h.service.UpdateTenderApproval(c.Request().Context(), id, form)
|
||||
if err != nil {
|
||||
if err.Error() == "tender approval not found" {
|
||||
return response.NotFound(c, "Tender approval not found")
|
||||
@@ -89,7 +95,13 @@ func (h *Handler) UpdateTenderApproval(c echo.Context) error {
|
||||
return response.InternalServerError(c, "Failed to update tender approval")
|
||||
}
|
||||
|
||||
return response.Success(c, tenderApproval.ToResponse(), "Tender approval updated successfully")
|
||||
// Get the updated approval with tender details
|
||||
tenderApprovalWithTender, err := h.service.GetTenderApprovalByIDWithTender(c.Request().Context(), id)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to get tender approval details")
|
||||
}
|
||||
|
||||
return response.Success(c, tenderApprovalWithTender, "Tender approval updated successfully")
|
||||
}
|
||||
|
||||
// GetTenderApproval retrieves a tender approval by ID
|
||||
@@ -108,7 +120,8 @@ func (h *Handler) UpdateTenderApproval(c echo.Context) error {
|
||||
func (h *Handler) GetPublicTenderApproval(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
|
||||
tenderApproval, err := h.service.GetTenderApprovalByID(c.Request().Context(), id)
|
||||
// Get the approval with tender details
|
||||
tenderApprovalWithTender, err := h.service.GetTenderApprovalByIDWithTender(c.Request().Context(), id)
|
||||
if err != nil {
|
||||
if err.Error() == "tender approval not found" {
|
||||
return response.NotFound(c, "Tender approval not found")
|
||||
@@ -116,7 +129,7 @@ func (h *Handler) GetPublicTenderApproval(c echo.Context) error {
|
||||
return response.InternalServerError(c, "Failed to get tender approval")
|
||||
}
|
||||
|
||||
return response.Success(c, tenderApproval.ToResponse(), "Tender approval retrieved successfully")
|
||||
return response.Success(c, tenderApprovalWithTender, "Tender approval retrieved successfully")
|
||||
}
|
||||
|
||||
// GetTenderApprovalByTenderAndCompany retrieves a tender approval by tender ID and company ID
|
||||
@@ -144,7 +157,7 @@ func (h *Handler) GetTenderApprovalByTenderAndCompany(c echo.Context) error {
|
||||
return response.BadRequest(c, "Missing required parameters", "tender_id and company_id are required")
|
||||
}
|
||||
|
||||
tenderApproval, err := h.service.GetTenderApprovalByTenderAndCompany(c.Request().Context(), tenderID, companyID)
|
||||
tenderApprovalWithTender, err := h.service.GetTenderApprovalByTenderAndCompanyWithTender(c.Request().Context(), tenderID, companyID)
|
||||
if err != nil {
|
||||
if err.Error() == "tender approval not found" {
|
||||
return response.NotFound(c, "Tender approval not found")
|
||||
@@ -152,7 +165,7 @@ func (h *Handler) GetTenderApprovalByTenderAndCompany(c echo.Context) error {
|
||||
return response.InternalServerError(c, "Failed to get tender approval")
|
||||
}
|
||||
|
||||
return response.Success(c, tenderApproval.ToResponse(), "Tender approval retrieved successfully")
|
||||
return response.Success(c, tenderApprovalWithTender, "Tender approval retrieved successfully")
|
||||
}
|
||||
|
||||
// DeleteTenderApproval deletes a tender approval
|
||||
@@ -192,7 +205,7 @@ func (h *Handler) DeleteTenderApproval(c echo.Context) error {
|
||||
// @Produce json
|
||||
// @Param submission_mode query string false "Filter by submission mode Enums(self-apply, partnership)"
|
||||
// @Param status query string false "Filter by status Enums(approved, rejected)"
|
||||
// @Success 200 {object} response.APIResponse{data=[]TenderApprovalResponse} "Tender approvals retrieved successfully"
|
||||
// @Success 200 {object} response.APIResponse{data=[]TenderApprovalWithTenderResponse} "Tender approvals retrieved successfully"
|
||||
// @Failure 400 {object} response.APIResponse "Bad request - Invalid company ID"
|
||||
// @Failure 500 {object} response.APIResponse "Internal server error"
|
||||
// @Security BearerAuth
|
||||
@@ -227,17 +240,12 @@ func (h *Handler) PublicGetTenderApprovals(c echo.Context) error {
|
||||
status = &statusVal
|
||||
}
|
||||
|
||||
tenderApprovals, err := h.service.GetTenderApprovalsByCompanyID(c.Request().Context(), companyID, submissionMode, status)
|
||||
tenderApprovalsWithTender, err := h.service.GetTenderApprovalsByCompanyIDWithTender(c.Request().Context(), companyID, submissionMode, status)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to get tender approvals")
|
||||
}
|
||||
|
||||
var responses []*TenderApprovalResponse
|
||||
for _, approval := range tenderApprovals {
|
||||
responses = append(responses, approval.ToResponse())
|
||||
}
|
||||
|
||||
return response.Success(c, responses, "Tender approvals retrieved successfully")
|
||||
return response.Success(c, tenderApprovalsWithTender, "Tender approvals retrieved successfully")
|
||||
}
|
||||
|
||||
// **************** Admin Routes ****************
|
||||
@@ -270,7 +278,7 @@ func (h *Handler) ListTenderApprovals(c echo.Context) error {
|
||||
return response.ValidationError(c, "Invalid request data", err.Error())
|
||||
}
|
||||
|
||||
result, err := h.service.ListTenderApprovals(c.Request().Context(), form)
|
||||
result, err := h.service.ListTenderApprovalsWithTender(c.Request().Context(), form)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to list tender approvals")
|
||||
}
|
||||
@@ -334,23 +342,18 @@ func (h *Handler) GetTenderApprovalsByStatus(c echo.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
tenderApprovals, total, err := h.service.GetTenderApprovalsByStatus(c.Request().Context(), status, limit, offset)
|
||||
tenderApprovalsWithTender, total, err := h.service.GetTenderApprovalsByStatusWithTender(c.Request().Context(), status, limit, offset)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to retrieve tender approvals by status")
|
||||
}
|
||||
|
||||
var responses []*TenderApprovalResponse
|
||||
for _, approval := range tenderApprovals {
|
||||
responses = append(responses, approval.ToResponse())
|
||||
}
|
||||
|
||||
meta := &response.Meta{
|
||||
Total: int(total),
|
||||
Limit: limit,
|
||||
Offset: offset,
|
||||
}
|
||||
|
||||
return response.SuccessWithMeta(c, responses, meta, "Tender approvals retrieved successfully")
|
||||
return response.SuccessWithMeta(c, tenderApprovalsWithTender, meta, "Tender approvals retrieved successfully")
|
||||
}
|
||||
|
||||
// GetTenderApprovalsBySubmissionMode retrieves tender approvals by submission mode
|
||||
@@ -390,23 +393,18 @@ func (h *Handler) GetTenderApprovalsBySubmissionMode(c echo.Context) error {
|
||||
}
|
||||
}
|
||||
|
||||
tenderApprovals, total, err := h.service.GetTenderApprovalsBySubmissionMode(c.Request().Context(), submissionMode, limit, offset)
|
||||
tenderApprovalsWithTender, total, err := h.service.GetTenderApprovalsBySubmissionModeWithTender(c.Request().Context(), submissionMode, limit, offset)
|
||||
if err != nil {
|
||||
return response.InternalServerError(c, "Failed to retrieve tender approvals by submission mode")
|
||||
}
|
||||
|
||||
var responses []*TenderApprovalResponse
|
||||
for _, approval := range tenderApprovals {
|
||||
responses = append(responses, approval.ToResponse())
|
||||
}
|
||||
|
||||
meta := &response.Meta{
|
||||
Total: int(total),
|
||||
Limit: limit,
|
||||
Offset: offset,
|
||||
}
|
||||
|
||||
return response.SuccessWithMeta(c, responses, meta, "Tender approvals retrieved successfully")
|
||||
return response.SuccessWithMeta(c, tenderApprovalsWithTender, meta, "Tender approvals retrieved successfully")
|
||||
}
|
||||
|
||||
// GetTenderApproval retrieves a tender approval by ID
|
||||
@@ -425,7 +423,8 @@ func (h *Handler) GetTenderApprovalsBySubmissionMode(c echo.Context) error {
|
||||
func (h *Handler) GetTenderApproval(c echo.Context) error {
|
||||
id := c.Param("id")
|
||||
|
||||
tenderApproval, err := h.service.GetTenderApprovalByID(c.Request().Context(), id)
|
||||
// Get the approval with tender details
|
||||
tenderApprovalWithTender, err := h.service.GetTenderApprovalByIDWithTender(c.Request().Context(), id)
|
||||
if err != nil {
|
||||
if err.Error() == "tender approval not found" {
|
||||
return response.NotFound(c, "Tender approval not found")
|
||||
@@ -433,5 +432,5 @@ func (h *Handler) GetTenderApproval(c echo.Context) error {
|
||||
return response.InternalServerError(c, "Failed to get tender approval")
|
||||
}
|
||||
|
||||
return response.Success(c, tenderApproval.ToResponse(), "Tender approval retrieved successfully")
|
||||
return response.Success(c, tenderApprovalWithTender, "Tender approval retrieved successfully")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user