forked from ebhomengo/niki
feat(niki): admin assign kindbox to a agent
This commit is contained in:
parent
8a66e43789
commit
47bc77baee
|
@ -0,0 +1,47 @@
|
||||||
|
package adminkindboxhandler
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
|
||||||
|
httpmsg "git.gocasts.ir/ebhomengo/niki/pkg/http_msg"
|
||||||
|
"github.com/labstack/echo/v4"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AssignReceiverAgent godoc
|
||||||
|
// @Summary Admin assign receiver agent to kindbox
|
||||||
|
// @Tags KindBox
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param id path int true "KindBox ID"
|
||||||
|
// @Param Request body param.AssignReceiverRequest true "Assign Receiver Agent Request Body"
|
||||||
|
// @Success 204
|
||||||
|
// @Failure 400 {string} "Bad request"
|
||||||
|
// @Security AuthBearerAdmin
|
||||||
|
// @Router /admin/kindboxes/assign-receiver-agent/{id} [patch].
|
||||||
|
func (h Handler) AssignReceiverAgent(c echo.Context) error {
|
||||||
|
var req param.AssignReceiverRequest
|
||||||
|
|
||||||
|
if bErr := c.Bind(&req); bErr != nil {
|
||||||
|
return echo.NewHTTPError(http.StatusBadRequest)
|
||||||
|
}
|
||||||
|
|
||||||
|
if fieldErrors, err := h.adminKindBoxVld.ValidateAssignReceiverAgent(req); err != nil {
|
||||||
|
msg, code := httpmsg.Error(err)
|
||||||
|
|
||||||
|
return c.JSON(code, echo.Map{
|
||||||
|
"message": msg,
|
||||||
|
"errors": fieldErrors,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
sErr := h.adminKindBoxSvc.AssignReceiverAgent(c.Request().Context(), req)
|
||||||
|
|
||||||
|
if sErr != nil {
|
||||||
|
msg, code := httpmsg.Error(sErr)
|
||||||
|
|
||||||
|
return echo.NewHTTPError(code, msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.JSON(http.StatusNoContent, nil)
|
||||||
|
}
|
|
@ -12,4 +12,5 @@ func (h Handler) SetRoutes(e *echo.Echo) {
|
||||||
r.Use(middleware.Auth(h.authSvc, h.authConfig))
|
r.Use(middleware.Auth(h.authSvc, h.authConfig))
|
||||||
|
|
||||||
r.GET("/:id", h.Get, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxGetPermission))
|
r.GET("/:id", h.Get, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxGetPermission))
|
||||||
|
r.PATCH("/assign-receiver-agent/:id", h.AssignReceiverAgent, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxAssignReceiverAgentPermission))
|
||||||
}
|
}
|
||||||
|
|
368
docs/docs.go
368
docs/docs.go
|
@ -267,14 +267,13 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/admin/kindboxes/{id}": {
|
"/admin/kindboxes/assign-receiver-agent/{id}": {
|
||||||
"get": {
|
"patch": {
|
||||||
"security": [
|
"security": [
|
||||||
{
|
{
|
||||||
"AuthBearerAdmin": []
|
"AuthBearerAdmin": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "This endpoint retrieves a specific kind box by admin",
|
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
],
|
],
|
||||||
|
@ -284,22 +283,28 @@ const docTemplate = `{
|
||||||
"tags": [
|
"tags": [
|
||||||
"KindBox"
|
"KindBox"
|
||||||
],
|
],
|
||||||
"summary": "Get a specific kind box by admin",
|
"summary": "Admin assign receiver agent to kindbox",
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"description": "Kind box ID",
|
"description": "KindBox ID",
|
||||||
"name": "id",
|
"name": "id",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Assign Receiver Agent Request Body",
|
||||||
|
"name": "Request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/adminkindboxparam.AssignReceiverRequest"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"204": {
|
||||||
"description": "OK",
|
"description": "No Content"
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/adminkindboxparam.KindBoxGetResponse"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Bad request",
|
"description": "Bad request",
|
||||||
|
@ -355,48 +360,6 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"post": {
|
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"AuthBearerAdmin": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"consumes": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"produces": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"KindBoxReq"
|
|
||||||
],
|
|
||||||
"summary": "Add a new kind box request for a benefactor by admin",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"description": "New kind box request details",
|
|
||||||
"name": "Request",
|
|
||||||
"in": "body",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/adminkindboxreqparam.KindBoxReqAddRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "OK",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/adminkindboxreqparam.KindBoxReqAddResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"400": {
|
|
||||||
"description": "Bad request",
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/admin/kindboxreqs/accept-kind-box-req/{id}": {
|
"/admin/kindboxreqs/accept-kind-box-req/{id}": {
|
||||||
|
@ -501,135 +464,6 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/admin/kindboxreqs/awaiting-delivery": {
|
|
||||||
"get": {
|
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"AuthBearerAdmin": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Retrieves a list of all awaiting KindBox requests with filtering, sorting, and pagination options",
|
|
||||||
"consumes": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"produces": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"KindBoxReq"
|
|
||||||
],
|
|
||||||
"summary": "Get all awaiting delivery KindBox requests",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by ID",
|
|
||||||
"name": "filter_id",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by benefactor ID",
|
|
||||||
"name": "filter_benefactor_id",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
3
|
|
||||||
],
|
|
||||||
"type": "integer",
|
|
||||||
"format": "enum",
|
|
||||||
"description": "Filter by KindBox type",
|
|
||||||
"name": "filter_kind_box_type",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by count requested",
|
|
||||||
"name": "filter_count_requested",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by count accepted",
|
|
||||||
"name": "filter_count_accepted",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by deliver refer time ID",
|
|
||||||
"name": "filter_deliver_refer_time_id",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"format": "date",
|
|
||||||
"description": "Filter by deliver refer date",
|
|
||||||
"name": "filter_deliver_refer_date",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by deliver address ID",
|
|
||||||
"name": "filter_deliver_address_id",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Page number",
|
|
||||||
"name": "page_number",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Page size",
|
|
||||||
"name": "page_size",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"id",
|
|
||||||
"benefactor_id",
|
|
||||||
"kind_box_type",
|
|
||||||
"count_requested",
|
|
||||||
"count_accepted",
|
|
||||||
"deliver_refer_time_id",
|
|
||||||
"deliver_refer_date",
|
|
||||||
"deliver_address_id"
|
|
||||||
],
|
|
||||||
"type": "string",
|
|
||||||
"description": "Sort by field",
|
|
||||||
"name": "sort_field",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"asc",
|
|
||||||
"desc"
|
|
||||||
],
|
|
||||||
"type": "string",
|
|
||||||
"description": "Sort order",
|
|
||||||
"name": "sort_direction",
|
|
||||||
"in": "query"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "OK",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/adminkindboxreqparam.DeliveryAwaitingGetAllResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"400": {
|
|
||||||
"description": "Bad request",
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/admin/kindboxreqs/awaiting-delivery/{id}": {
|
"/admin/kindboxreqs/awaiting-delivery/{id}": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
"security": [
|
||||||
|
@ -881,7 +715,7 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/benefactor/kindboxes": {
|
"/benefactor/kindboxes/": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
"security": [
|
||||||
{
|
{
|
||||||
|
@ -957,57 +791,6 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/benefactor/kindboxes/{id}/emptying-requests": {
|
|
||||||
"patch": {
|
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"AuthBearerBenefactor": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"consumes": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"produces": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"Benefactor"
|
|
||||||
],
|
|
||||||
"summary": "Register a new emptying request for a kind box by benefactor",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "KindBox ID",
|
|
||||||
"name": "id",
|
|
||||||
"in": "path",
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Request body",
|
|
||||||
"name": "Request",
|
|
||||||
"in": "body",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/benefactorkindboxparam.KindBoxRegisterEmptyingRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"204": {
|
|
||||||
"description": "No content",
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"400": {
|
|
||||||
"description": "Bad request",
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/benefactor/kindboxreqs/": {
|
"/benefactor/kindboxreqs/": {
|
||||||
"post": {
|
"post": {
|
||||||
"security": [
|
"security": [
|
||||||
|
@ -1324,56 +1107,11 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"adminkindboxparam.KindBoxGetResponse": {
|
"adminkindboxparam.AssignReceiverRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"amount": {
|
"receiver_agent_id": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
|
||||||
"benefactorID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"deliverAddressID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"deliverReferDate": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"deliveredAt": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"id": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kindBoxReqID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"receiverAgentID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"returnAddressID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"returnReferDate": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"returnReferTimeID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"returnedAt": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"senderAgentID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"serialNumber": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"status": {
|
|
||||||
"$ref": "#/definitions/entity.KindBoxStatus"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"$ref": "#/definitions/entity.KindBoxType"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1391,20 +1129,6 @@ const docTemplate = `{
|
||||||
"adminkindboxreqparam.DeliverKindBoxReqResponse": {
|
"adminkindboxreqparam.DeliverKindBoxReqResponse": {
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"adminkindboxreqparam.DeliveryAwaitingGetAllResponse": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"all_awaiting_kind_box_req": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"$ref": "#/definitions/entity.KindBoxReq"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pagination": {
|
|
||||||
"$ref": "#/definitions/param.PaginationResponse"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"adminkindboxreqparam.DeliveryAwaitingGetResponse": {
|
"adminkindboxreqparam.DeliveryAwaitingGetResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -1477,47 +1201,10 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"adminkindboxreqparam.KindBoxReqAddRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"benefactor_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
},
|
|
||||||
"count_requested": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 2
|
|
||||||
},
|
|
||||||
"deliver_address_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
},
|
|
||||||
"deliver_refer_date": {
|
|
||||||
"type": "string",
|
|
||||||
"example": "2025-01-02 15:04:05"
|
|
||||||
},
|
|
||||||
"type_id": {
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/definitions/entity.KindBoxType"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"example": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"adminkindboxreqparam.KindBoxReqAddResponse": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"kindBoxReq": {
|
|
||||||
"$ref": "#/definitions/entity.KindBoxReq"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"adminkindboxreqparam.KindBoxReqGetAllResponse": {
|
"adminkindboxreqparam.KindBoxReqGetAllResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"all_awaiting_kind_box_req": {
|
"all_kind_box_req": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/entity.KindBoxReq"
|
"$ref": "#/definitions/entity.KindBoxReq"
|
||||||
|
@ -1894,23 +1581,6 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"benefactorkindboxparam.KindBoxRegisterEmptyingRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"return_address_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
},
|
|
||||||
"return_refer_date": {
|
|
||||||
"type": "string",
|
|
||||||
"example": "2025-01-02T15:04:05Z"
|
|
||||||
},
|
|
||||||
"return_refer_time_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"benefactorkindboxreqparam.KindBoxReqAddRequest": {
|
"benefactorkindboxreqparam.KindBoxReqAddRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
@ -256,14 +256,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/admin/kindboxes/{id}": {
|
"/admin/kindboxes/assign-receiver-agent/{id}": {
|
||||||
"get": {
|
"patch": {
|
||||||
"security": [
|
"security": [
|
||||||
{
|
{
|
||||||
"AuthBearerAdmin": []
|
"AuthBearerAdmin": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "This endpoint retrieves a specific kind box by admin",
|
|
||||||
"consumes": [
|
"consumes": [
|
||||||
"application/json"
|
"application/json"
|
||||||
],
|
],
|
||||||
|
@ -273,22 +272,28 @@
|
||||||
"tags": [
|
"tags": [
|
||||||
"KindBox"
|
"KindBox"
|
||||||
],
|
],
|
||||||
"summary": "Get a specific kind box by admin",
|
"summary": "Admin assign receiver agent to kindbox",
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"description": "Kind box ID",
|
"description": "KindBox ID",
|
||||||
"name": "id",
|
"name": "id",
|
||||||
"in": "path",
|
"in": "path",
|
||||||
"required": true
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Assign Receiver Agent Request Body",
|
||||||
|
"name": "Request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/adminkindboxparam.AssignReceiverRequest"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"204": {
|
||||||
"description": "OK",
|
"description": "No Content"
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/adminkindboxparam.KindBoxGetResponse"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Bad request",
|
"description": "Bad request",
|
||||||
|
@ -344,48 +349,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"post": {
|
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"AuthBearerAdmin": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"consumes": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"produces": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"KindBoxReq"
|
|
||||||
],
|
|
||||||
"summary": "Add a new kind box request for a benefactor by admin",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"description": "New kind box request details",
|
|
||||||
"name": "Request",
|
|
||||||
"in": "body",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/adminkindboxreqparam.KindBoxReqAddRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "OK",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/adminkindboxreqparam.KindBoxReqAddResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"400": {
|
|
||||||
"description": "Bad request",
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/admin/kindboxreqs/accept-kind-box-req/{id}": {
|
"/admin/kindboxreqs/accept-kind-box-req/{id}": {
|
||||||
|
@ -490,135 +453,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/admin/kindboxreqs/awaiting-delivery": {
|
|
||||||
"get": {
|
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"AuthBearerAdmin": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Retrieves a list of all awaiting KindBox requests with filtering, sorting, and pagination options",
|
|
||||||
"consumes": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"produces": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"KindBoxReq"
|
|
||||||
],
|
|
||||||
"summary": "Get all awaiting delivery KindBox requests",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by ID",
|
|
||||||
"name": "filter_id",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by benefactor ID",
|
|
||||||
"name": "filter_benefactor_id",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
1,
|
|
||||||
2,
|
|
||||||
3
|
|
||||||
],
|
|
||||||
"type": "integer",
|
|
||||||
"format": "enum",
|
|
||||||
"description": "Filter by KindBox type",
|
|
||||||
"name": "filter_kind_box_type",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by count requested",
|
|
||||||
"name": "filter_count_requested",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by count accepted",
|
|
||||||
"name": "filter_count_accepted",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by deliver refer time ID",
|
|
||||||
"name": "filter_deliver_refer_time_id",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"format": "date",
|
|
||||||
"description": "Filter by deliver refer date",
|
|
||||||
"name": "filter_deliver_refer_date",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Filter by deliver address ID",
|
|
||||||
"name": "filter_deliver_address_id",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Page number",
|
|
||||||
"name": "page_number",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Page size",
|
|
||||||
"name": "page_size",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"id",
|
|
||||||
"benefactor_id",
|
|
||||||
"kind_box_type",
|
|
||||||
"count_requested",
|
|
||||||
"count_accepted",
|
|
||||||
"deliver_refer_time_id",
|
|
||||||
"deliver_refer_date",
|
|
||||||
"deliver_address_id"
|
|
||||||
],
|
|
||||||
"type": "string",
|
|
||||||
"description": "Sort by field",
|
|
||||||
"name": "sort_field",
|
|
||||||
"in": "query"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enum": [
|
|
||||||
"asc",
|
|
||||||
"desc"
|
|
||||||
],
|
|
||||||
"type": "string",
|
|
||||||
"description": "Sort order",
|
|
||||||
"name": "sort_direction",
|
|
||||||
"in": "query"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "OK",
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/adminkindboxreqparam.DeliveryAwaitingGetAllResponse"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"400": {
|
|
||||||
"description": "Bad request",
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/admin/kindboxreqs/awaiting-delivery/{id}": {
|
"/admin/kindboxreqs/awaiting-delivery/{id}": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
"security": [
|
||||||
|
@ -870,7 +704,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/benefactor/kindboxes": {
|
"/benefactor/kindboxes/": {
|
||||||
"get": {
|
"get": {
|
||||||
"security": [
|
"security": [
|
||||||
{
|
{
|
||||||
|
@ -946,57 +780,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/benefactor/kindboxes/{id}/emptying-requests": {
|
|
||||||
"patch": {
|
|
||||||
"security": [
|
|
||||||
{
|
|
||||||
"AuthBearerBenefactor": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"consumes": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"produces": [
|
|
||||||
"application/json"
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
"Benefactor"
|
|
||||||
],
|
|
||||||
"summary": "Register a new emptying request for a kind box by benefactor",
|
|
||||||
"parameters": [
|
|
||||||
{
|
|
||||||
"type": "integer",
|
|
||||||
"description": "KindBox ID",
|
|
||||||
"name": "id",
|
|
||||||
"in": "path",
|
|
||||||
"required": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"description": "Request body",
|
|
||||||
"name": "Request",
|
|
||||||
"in": "body",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/benefactorkindboxparam.KindBoxRegisterEmptyingRequest"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"204": {
|
|
||||||
"description": "No content",
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"400": {
|
|
||||||
"description": "Bad request",
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/benefactor/kindboxreqs/": {
|
"/benefactor/kindboxreqs/": {
|
||||||
"post": {
|
"post": {
|
||||||
"security": [
|
"security": [
|
||||||
|
@ -1313,56 +1096,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"adminkindboxparam.KindBoxGetResponse": {
|
"adminkindboxparam.AssignReceiverRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"amount": {
|
"receiver_agent_id": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
|
||||||
"benefactorID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"deliverAddressID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"deliverReferDate": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"deliveredAt": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"id": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"kindBoxReqID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"receiverAgentID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"returnAddressID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"returnReferDate": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"returnReferTimeID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"returnedAt": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"senderAgentID": {
|
|
||||||
"type": "integer"
|
|
||||||
},
|
|
||||||
"serialNumber": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"status": {
|
|
||||||
"$ref": "#/definitions/entity.KindBoxStatus"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"$ref": "#/definitions/entity.KindBoxType"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1380,20 +1118,6 @@
|
||||||
"adminkindboxreqparam.DeliverKindBoxReqResponse": {
|
"adminkindboxreqparam.DeliverKindBoxReqResponse": {
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"adminkindboxreqparam.DeliveryAwaitingGetAllResponse": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"all_awaiting_kind_box_req": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"$ref": "#/definitions/entity.KindBoxReq"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pagination": {
|
|
||||||
"$ref": "#/definitions/param.PaginationResponse"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"adminkindboxreqparam.DeliveryAwaitingGetResponse": {
|
"adminkindboxreqparam.DeliveryAwaitingGetResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -1466,47 +1190,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"adminkindboxreqparam.KindBoxReqAddRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"benefactor_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
},
|
|
||||||
"count_requested": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 2
|
|
||||||
},
|
|
||||||
"deliver_address_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
},
|
|
||||||
"deliver_refer_date": {
|
|
||||||
"type": "string",
|
|
||||||
"example": "2025-01-02 15:04:05"
|
|
||||||
},
|
|
||||||
"type_id": {
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/definitions/entity.KindBoxType"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"example": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"adminkindboxreqparam.KindBoxReqAddResponse": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"kindBoxReq": {
|
|
||||||
"$ref": "#/definitions/entity.KindBoxReq"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"adminkindboxreqparam.KindBoxReqGetAllResponse": {
|
"adminkindboxreqparam.KindBoxReqGetAllResponse": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"all_awaiting_kind_box_req": {
|
"all_kind_box_req": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/definitions/entity.KindBoxReq"
|
"$ref": "#/definitions/entity.KindBoxReq"
|
||||||
|
@ -1883,23 +1570,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"benefactorkindboxparam.KindBoxRegisterEmptyingRequest": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"return_address_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
},
|
|
||||||
"return_refer_date": {
|
|
||||||
"type": "string",
|
|
||||||
"example": "2025-01-02T15:04:05Z"
|
|
||||||
},
|
|
||||||
"return_refer_time_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"benefactorkindboxreqparam.KindBoxReqAddRequest": {
|
"benefactorkindboxreqparam.KindBoxReqAddRequest": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
@ -72,40 +72,10 @@ definitions:
|
||||||
example: "1234567890"
|
example: "1234567890"
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
adminkindboxparam.KindBoxGetResponse:
|
adminkindboxparam.AssignReceiverRequest:
|
||||||
properties:
|
properties:
|
||||||
amount:
|
receiver_agent_id:
|
||||||
type: integer
|
type: integer
|
||||||
benefactorID:
|
|
||||||
type: integer
|
|
||||||
deliverAddressID:
|
|
||||||
type: integer
|
|
||||||
deliverReferDate:
|
|
||||||
type: string
|
|
||||||
deliveredAt:
|
|
||||||
type: string
|
|
||||||
id:
|
|
||||||
type: integer
|
|
||||||
kindBoxReqID:
|
|
||||||
type: integer
|
|
||||||
receiverAgentID:
|
|
||||||
type: integer
|
|
||||||
returnAddressID:
|
|
||||||
type: integer
|
|
||||||
returnReferDate:
|
|
||||||
type: string
|
|
||||||
returnReferTimeID:
|
|
||||||
type: integer
|
|
||||||
returnedAt:
|
|
||||||
type: string
|
|
||||||
senderAgentID:
|
|
||||||
type: integer
|
|
||||||
serialNumber:
|
|
||||||
type: string
|
|
||||||
status:
|
|
||||||
$ref: '#/definitions/entity.KindBoxStatus'
|
|
||||||
type:
|
|
||||||
$ref: '#/definitions/entity.KindBoxType'
|
|
||||||
type: object
|
type: object
|
||||||
adminkindboxreqparam.AssignSenderRequest:
|
adminkindboxreqparam.AssignSenderRequest:
|
||||||
properties:
|
properties:
|
||||||
|
@ -116,15 +86,6 @@ definitions:
|
||||||
type: object
|
type: object
|
||||||
adminkindboxreqparam.DeliverKindBoxReqResponse:
|
adminkindboxreqparam.DeliverKindBoxReqResponse:
|
||||||
type: object
|
type: object
|
||||||
adminkindboxreqparam.DeliveryAwaitingGetAllResponse:
|
|
||||||
properties:
|
|
||||||
all_awaiting_kind_box_req:
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/entity.KindBoxReq'
|
|
||||||
type: array
|
|
||||||
pagination:
|
|
||||||
$ref: '#/definitions/param.PaginationResponse'
|
|
||||||
type: object
|
|
||||||
adminkindboxreqparam.DeliveryAwaitingGetResponse:
|
adminkindboxreqparam.DeliveryAwaitingGetResponse:
|
||||||
properties:
|
properties:
|
||||||
benefactorID:
|
benefactorID:
|
||||||
|
@ -172,33 +133,9 @@ definitions:
|
||||||
kind_box_req_status:
|
kind_box_req_status:
|
||||||
$ref: '#/definitions/entity.KindBoxReqStatus'
|
$ref: '#/definitions/entity.KindBoxReqStatus'
|
||||||
type: object
|
type: object
|
||||||
adminkindboxreqparam.KindBoxReqAddRequest:
|
|
||||||
properties:
|
|
||||||
benefactor_id:
|
|
||||||
example: 1
|
|
||||||
type: integer
|
|
||||||
count_requested:
|
|
||||||
example: 2
|
|
||||||
type: integer
|
|
||||||
deliver_address_id:
|
|
||||||
example: 1
|
|
||||||
type: integer
|
|
||||||
deliver_refer_date:
|
|
||||||
example: "2025-01-02 15:04:05"
|
|
||||||
type: string
|
|
||||||
type_id:
|
|
||||||
allOf:
|
|
||||||
- $ref: '#/definitions/entity.KindBoxType'
|
|
||||||
example: 1
|
|
||||||
type: object
|
|
||||||
adminkindboxreqparam.KindBoxReqAddResponse:
|
|
||||||
properties:
|
|
||||||
kindBoxReq:
|
|
||||||
$ref: '#/definitions/entity.KindBoxReq'
|
|
||||||
type: object
|
|
||||||
adminkindboxreqparam.KindBoxReqGetAllResponse:
|
adminkindboxreqparam.KindBoxReqGetAllResponse:
|
||||||
properties:
|
properties:
|
||||||
all_awaiting_kind_box_req:
|
all_kind_box_req:
|
||||||
items:
|
items:
|
||||||
$ref: '#/definitions/entity.KindBoxReq'
|
$ref: '#/definitions/entity.KindBoxReq'
|
||||||
type: array
|
type: array
|
||||||
|
@ -444,18 +381,6 @@ definitions:
|
||||||
type:
|
type:
|
||||||
$ref: '#/definitions/entity.KindBoxType'
|
$ref: '#/definitions/entity.KindBoxType'
|
||||||
type: object
|
type: object
|
||||||
benefactorkindboxparam.KindBoxRegisterEmptyingRequest:
|
|
||||||
properties:
|
|
||||||
return_address_id:
|
|
||||||
example: 1
|
|
||||||
type: integer
|
|
||||||
return_refer_date:
|
|
||||||
example: "2025-01-02T15:04:05Z"
|
|
||||||
type: string
|
|
||||||
return_refer_time_id:
|
|
||||||
example: 1
|
|
||||||
type: integer
|
|
||||||
type: object
|
|
||||||
benefactorkindboxreqparam.KindBoxReqAddRequest:
|
benefactorkindboxreqparam.KindBoxReqAddRequest:
|
||||||
properties:
|
properties:
|
||||||
benefactor_id:
|
benefactor_id:
|
||||||
|
@ -815,31 +740,34 @@ paths:
|
||||||
summary: Get all provinces
|
summary: Get all provinces
|
||||||
tags:
|
tags:
|
||||||
- Address
|
- Address
|
||||||
/admin/kindboxes/{id}:
|
/admin/kindboxes/assign-receiver-agent/{id}:
|
||||||
get:
|
patch:
|
||||||
consumes:
|
consumes:
|
||||||
- application/json
|
- application/json
|
||||||
description: This endpoint retrieves a specific kind box by admin
|
|
||||||
parameters:
|
parameters:
|
||||||
- description: Kind box ID
|
- description: KindBox ID
|
||||||
in: path
|
in: path
|
||||||
name: id
|
name: id
|
||||||
required: true
|
required: true
|
||||||
type: integer
|
type: integer
|
||||||
|
- description: Assign Receiver Agent Request Body
|
||||||
|
in: body
|
||||||
|
name: Request
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/adminkindboxparam.AssignReceiverRequest'
|
||||||
produces:
|
produces:
|
||||||
- application/json
|
- application/json
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"204":
|
||||||
description: OK
|
description: No Content
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/adminkindboxparam.KindBoxGetResponse'
|
|
||||||
"400":
|
"400":
|
||||||
description: Bad request
|
description: Bad request
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
security:
|
security:
|
||||||
- AuthBearerAdmin: []
|
- AuthBearerAdmin: []
|
||||||
summary: Get a specific kind box by admin
|
summary: Admin assign receiver agent to kindbox
|
||||||
tags:
|
tags:
|
||||||
- KindBox
|
- KindBox
|
||||||
/admin/kindboxreqs:
|
/admin/kindboxreqs:
|
||||||
|
@ -871,32 +799,6 @@ paths:
|
||||||
summary: Admin get all kindboxreq
|
summary: Admin get all kindboxreq
|
||||||
tags:
|
tags:
|
||||||
- KindBoxReq
|
- KindBoxReq
|
||||||
post:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
parameters:
|
|
||||||
- description: New kind box request details
|
|
||||||
in: body
|
|
||||||
name: Request
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/adminkindboxreqparam.KindBoxReqAddRequest'
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: OK
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/adminkindboxreqparam.KindBoxReqAddResponse'
|
|
||||||
"400":
|
|
||||||
description: Bad request
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
security:
|
|
||||||
- AuthBearerAdmin: []
|
|
||||||
summary: Add a new kind box request for a benefactor by admin
|
|
||||||
tags:
|
|
||||||
- KindBoxReq
|
|
||||||
/admin/kindboxreqs/accept-kind-box-req/{id}:
|
/admin/kindboxreqs/accept-kind-box-req/{id}:
|
||||||
patch:
|
patch:
|
||||||
consumes:
|
consumes:
|
||||||
|
@ -961,95 +863,6 @@ paths:
|
||||||
summary: Admin Assign Sender Agent to kindboxreq
|
summary: Admin Assign Sender Agent to kindboxreq
|
||||||
tags:
|
tags:
|
||||||
- KindBoxReq
|
- KindBoxReq
|
||||||
/admin/kindboxreqs/awaiting-delivery:
|
|
||||||
get:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
description: Retrieves a list of all awaiting KindBox requests with filtering,
|
|
||||||
sorting, and pagination options
|
|
||||||
parameters:
|
|
||||||
- description: Filter by ID
|
|
||||||
in: query
|
|
||||||
name: filter_id
|
|
||||||
type: integer
|
|
||||||
- description: Filter by benefactor ID
|
|
||||||
in: query
|
|
||||||
name: filter_benefactor_id
|
|
||||||
type: integer
|
|
||||||
- description: Filter by KindBox type
|
|
||||||
enum:
|
|
||||||
- 1
|
|
||||||
- 2
|
|
||||||
- 3
|
|
||||||
format: enum
|
|
||||||
in: query
|
|
||||||
name: filter_kind_box_type
|
|
||||||
type: integer
|
|
||||||
- description: Filter by count requested
|
|
||||||
in: query
|
|
||||||
name: filter_count_requested
|
|
||||||
type: integer
|
|
||||||
- description: Filter by count accepted
|
|
||||||
in: query
|
|
||||||
name: filter_count_accepted
|
|
||||||
type: integer
|
|
||||||
- description: Filter by deliver refer time ID
|
|
||||||
in: query
|
|
||||||
name: filter_deliver_refer_time_id
|
|
||||||
type: integer
|
|
||||||
- description: Filter by deliver refer date
|
|
||||||
format: date
|
|
||||||
in: query
|
|
||||||
name: filter_deliver_refer_date
|
|
||||||
type: string
|
|
||||||
- description: Filter by deliver address ID
|
|
||||||
in: query
|
|
||||||
name: filter_deliver_address_id
|
|
||||||
type: integer
|
|
||||||
- description: Page number
|
|
||||||
in: query
|
|
||||||
name: page_number
|
|
||||||
type: integer
|
|
||||||
- description: Page size
|
|
||||||
in: query
|
|
||||||
name: page_size
|
|
||||||
type: integer
|
|
||||||
- description: Sort by field
|
|
||||||
enum:
|
|
||||||
- id
|
|
||||||
- benefactor_id
|
|
||||||
- kind_box_type
|
|
||||||
- count_requested
|
|
||||||
- count_accepted
|
|
||||||
- deliver_refer_time_id
|
|
||||||
- deliver_refer_date
|
|
||||||
- deliver_address_id
|
|
||||||
in: query
|
|
||||||
name: sort_field
|
|
||||||
type: string
|
|
||||||
- description: Sort order
|
|
||||||
enum:
|
|
||||||
- asc
|
|
||||||
- desc
|
|
||||||
in: query
|
|
||||||
name: sort_direction
|
|
||||||
type: string
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"200":
|
|
||||||
description: OK
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/adminkindboxreqparam.DeliveryAwaitingGetAllResponse'
|
|
||||||
"400":
|
|
||||||
description: Bad request
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
security:
|
|
||||||
- AuthBearerAdmin: []
|
|
||||||
summary: Get all awaiting delivery KindBox requests
|
|
||||||
tags:
|
|
||||||
- KindBoxReq
|
|
||||||
/admin/kindboxreqs/awaiting-delivery/{id}:
|
/admin/kindboxreqs/awaiting-delivery/{id}:
|
||||||
get:
|
get:
|
||||||
consumes:
|
consumes:
|
||||||
|
@ -1206,7 +1019,7 @@ paths:
|
||||||
summary: Register an admin by super-admin
|
summary: Register an admin by super-admin
|
||||||
tags:
|
tags:
|
||||||
- Admin
|
- Admin
|
||||||
/benefactor/kindboxes:
|
/benefactor/kindboxes/:
|
||||||
get:
|
get:
|
||||||
consumes:
|
consumes:
|
||||||
- application/json
|
- application/json
|
||||||
|
@ -1254,38 +1067,6 @@ paths:
|
||||||
summary: Get a specific kind box for a benefactor
|
summary: Get a specific kind box for a benefactor
|
||||||
tags:
|
tags:
|
||||||
- KindBox
|
- KindBox
|
||||||
/benefactor/kindboxes/{id}/emptying-requests:
|
|
||||||
patch:
|
|
||||||
consumes:
|
|
||||||
- application/json
|
|
||||||
parameters:
|
|
||||||
- description: KindBox ID
|
|
||||||
in: path
|
|
||||||
name: id
|
|
||||||
required: true
|
|
||||||
type: integer
|
|
||||||
- description: Request body
|
|
||||||
in: body
|
|
||||||
name: Request
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/benefactorkindboxparam.KindBoxRegisterEmptyingRequest'
|
|
||||||
produces:
|
|
||||||
- application/json
|
|
||||||
responses:
|
|
||||||
"204":
|
|
||||||
description: No content
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
"400":
|
|
||||||
description: Bad request
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
security:
|
|
||||||
- AuthBearerBenefactor: []
|
|
||||||
summary: Register a new emptying request for a kind box by benefactor
|
|
||||||
tags:
|
|
||||||
- Benefactor
|
|
||||||
/benefactor/kindboxreqs/:
|
/benefactor/kindboxreqs/:
|
||||||
post:
|
post:
|
||||||
consumes:
|
consumes:
|
||||||
|
|
|
@ -13,4 +13,5 @@ const (
|
||||||
AdminAdminGetAllAgentPermission = AdminPermission("admin-getall_agent")
|
AdminAdminGetAllAgentPermission = AdminPermission("admin-getall_agent")
|
||||||
AdminKindBoxReqGetAwaitingDeliveryPermission = AdminPermission("kindboxreq-get_awaiting_delivery")
|
AdminKindBoxReqGetAwaitingDeliveryPermission = AdminPermission("kindboxreq-get_awaiting_delivery")
|
||||||
AdminKindBoxGetPermission = AdminPermission("kindbox-get")
|
AdminKindBoxGetPermission = AdminPermission("kindbox-get")
|
||||||
|
AdminKindBoxAssignReceiverAgentPermission = AdminPermission("kindbox-assign_receiver_agent")
|
||||||
)
|
)
|
||||||
|
|
|
@ -51,8 +51,8 @@ func InitBenefactorAddressValidator(cfg config.Config, redisAdapter redis.Adapte
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitAdminKindBoxValidator(db *mysql.DB) adminkindboxvalidator.Validator {
|
func InitAdminKindBoxValidator(db *mysql.DB, cfg config.Config) adminkindboxvalidator.Validator {
|
||||||
return adminkindboxvalidator.New(InitKindBoxRepo(db))
|
return adminkindboxvalidator.New(InitKindBoxRepo(db), InitAdminService(cfg, db))
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitBenefactorKindBoxValidator(cfg config.Config, redisAdapter redis.Adapter, db *mysql.DB) benefactorkindboxvalidator.Validator {
|
func InitBenefactorKindBoxValidator(cfg config.Config, redisAdapter redis.Adapter, db *mysql.DB) benefactorkindboxvalidator.Validator {
|
||||||
|
|
2
main.go
2
main.go
|
@ -65,7 +65,7 @@ func initDependencies(cfg config.Config, redisAdapter redis.Adapter, db *mysql.D
|
||||||
BenefactorKindBoxVld: initial.InitBenefactorKindBoxValidator(cfg, redisAdapter, db),
|
BenefactorKindBoxVld: initial.InitBenefactorKindBoxValidator(cfg, redisAdapter, db),
|
||||||
AdminKindBoxReqVld: initial.InitAdminKindBoxReqValidator(db, cfg),
|
AdminKindBoxReqVld: initial.InitAdminKindBoxReqValidator(db, cfg),
|
||||||
AdminVld: initial.InitAdminValidator(db),
|
AdminVld: initial.InitAdminValidator(db),
|
||||||
AdminKindBoxVld: initial.InitAdminKindBoxValidator(db),
|
AdminKindBoxVld: initial.InitAdminKindBoxValidator(db, cfg),
|
||||||
},
|
},
|
||||||
initial.Services{
|
initial.Services{
|
||||||
BenefactorSvc: initial.InitBenefactorService(cfg, redisAdapter, db),
|
BenefactorSvc: initial.InitBenefactorService(cfg, redisAdapter, db),
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package adminkindboxparam
|
||||||
|
|
||||||
|
type AssignReceiverRequest struct {
|
||||||
|
KindBoxID uint `json:"-" param:"id"`
|
||||||
|
ReceiverAgentID uint `json:"receiver_agent_id"`
|
||||||
|
}
|
|
@ -33,4 +33,5 @@ const (
|
||||||
ErrorMsgSortFieldIsRequired = "sort field is required"
|
ErrorMsgSortFieldIsRequired = "sort field is required"
|
||||||
ErrorMsgSortDirectionShouldBeAscOrDesc = "sort direction should be asc or desc"
|
ErrorMsgSortDirectionShouldBeAscOrDesc = "sort direction should be asc or desc"
|
||||||
ErrorMsgSortFieldIsNotValid = "sort field is not valid"
|
ErrorMsgSortFieldIsNotValid = "sort field is not valid"
|
||||||
|
ErrorMsgAssignReceiverAgentKindBoxStatus = "only ready to return kindboxes can be assigned to a receiver agent"
|
||||||
)
|
)
|
||||||
|
|
|
@ -75,3 +75,17 @@ func (d DB) GetAdminByID(ctx context.Context, adminID uint) (entity.Admin, error
|
||||||
|
|
||||||
return admin, nil
|
return admin, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d DB) AgentExistByID(ctx context.Context, agentID uint) (bool, error) {
|
||||||
|
const op = "mysqladmin.AgentExistByID"
|
||||||
|
|
||||||
|
query := `select count(*) from admins where role = ? and id = ?`
|
||||||
|
var count int
|
||||||
|
err := d.conn.Conn().QueryRowContext(ctx, query, entity.AdminAgentRole.String(), agentID).Scan(&count)
|
||||||
|
if err != nil {
|
||||||
|
return false, richerror.New(op).WithErr(err).
|
||||||
|
WithMessage(errmsg.ErrorMsgCantScanQueryResult).WithKind(richerror.KindUnexpected)
|
||||||
|
}
|
||||||
|
|
||||||
|
return count > 0, nil
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package mysqlkindbox
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
|
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (d DB) AssignReceiverAgent(ctx context.Context, kindBox entity.KindBox) error {
|
||||||
|
const op = "mysqlkindbox.AssignReceiverAgent"
|
||||||
|
|
||||||
|
query := `UPDATE kind_boxes SET receiver_agent_id = ?, status = ? WHERE status = ? AND id = ?`
|
||||||
|
_, err := d.conn.Conn().ExecContext(ctx, query,
|
||||||
|
kindBox.ReceiverAgentID, entity.KindBoxAssignedReceiverAgentStatus.String(), entity.KindBoxReadyToReturnStatus.String(), kindBox.ID)
|
||||||
|
if err != nil {
|
||||||
|
return richerror.New(op).WithErr(err).
|
||||||
|
WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -9,7 +9,8 @@ ALTER TABLE `admin_access_controls` MODIFY COLUMN `permission`
|
||||||
'kindboxreq-assign_sender_agent',
|
'kindboxreq-assign_sender_agent',
|
||||||
'admin-getall_agent',
|
'admin-getall_agent',
|
||||||
'kindboxreq-get_awaiting_delivery',
|
'kindboxreq-get_awaiting_delivery',
|
||||||
'kindbox-get'
|
'kindbox-get',
|
||||||
|
'kindbox-assign_receiver_agent'
|
||||||
) NOT NULL;
|
) NOT NULL;
|
||||||
|
|
||||||
-- +migrate Down
|
-- +migrate Down
|
|
@ -17,7 +17,9 @@ INSERT INTO `admin_access_controls` (`id`, `actor_id`, `actor_type`,`permission`
|
||||||
(15, 1 , 'role','kindboxreq-get_awaiting_delivery'),
|
(15, 1 , 'role','kindboxreq-get_awaiting_delivery'),
|
||||||
(16, 3 , 'role','kindboxreq-get_awaiting_delivery'),
|
(16, 3 , 'role','kindboxreq-get_awaiting_delivery'),
|
||||||
(17, 1 , 'role','kindbox-get'),
|
(17, 1 , 'role','kindbox-get'),
|
||||||
(18, 2 , 'role','kindbox-get');
|
(18, 2 , 'role','kindbox-get'),
|
||||||
|
(19, 1 , 'role','kindbox-assign_receiver_agent'),
|
||||||
|
(20, 2 , 'role','kindbox-assign_receiver_agent');
|
||||||
|
|
||||||
|
|
||||||
-- +migrate Down
|
-- +migrate Down
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
package adminservice
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (s Service) AgentExistByID(ctx context.Context, agentID uint) (bool, error) {
|
||||||
|
const op = "adminservice.AgentExistByID"
|
||||||
|
|
||||||
|
exists, err := s.repo.AgentExistByID(ctx, agentID)
|
||||||
|
if err != nil {
|
||||||
|
return false, richerror.New(op).WithErr(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return exists, nil
|
||||||
|
}
|
|
@ -19,6 +19,7 @@ type Repository interface {
|
||||||
GetAdminByPhoneNumber(ctx context.Context, phoneNumber string) (entity.Admin, error)
|
GetAdminByPhoneNumber(ctx context.Context, phoneNumber string) (entity.Admin, error)
|
||||||
GetAdminByID(ctx context.Context, adminID uint) (entity.Admin, error)
|
GetAdminByID(ctx context.Context, adminID uint) (entity.Admin, error)
|
||||||
GetAllAgent(ctx context.Context) ([]entity.Admin, error)
|
GetAllAgent(ctx context.Context) ([]entity.Admin, error)
|
||||||
|
AgentExistByID(ctx context.Context, agentID uint) (bool, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package adminkindboxservice
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
|
param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
|
||||||
|
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (s Service) AssignReceiverAgent(ctx context.Context, req param.AssignReceiverRequest) error {
|
||||||
|
const op = "AdminKindBoxService.AssignReceiverAgent"
|
||||||
|
|
||||||
|
err := s.repo.AssignReceiverAgent(ctx, entity.KindBox{
|
||||||
|
ID: req.KindBoxID,
|
||||||
|
ReceiverAgentID: req.ReceiverAgentID,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return richerror.New(op).WithErr(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -10,6 +10,7 @@ type Repository interface {
|
||||||
AddBatchKindBox(ctx context.Context, kindBoxes []entity.KindBox) error
|
AddBatchKindBox(ctx context.Context, kindBoxes []entity.KindBox) error
|
||||||
AddKindBox(ctx context.Context, kindBox entity.KindBox) error
|
AddKindBox(ctx context.Context, kindBox entity.KindBox) error
|
||||||
GetKindBox(ctx context.Context, kindBoxID uint) (entity.KindBox, error)
|
GetKindBox(ctx context.Context, kindBoxID uint) (entity.KindBox, error)
|
||||||
|
AssignReceiverAgent(ctx context.Context, kindBox entity.KindBox) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
package adminkindboxvalidator
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box"
|
||||||
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
|
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
||||||
|
validation "github.com/go-ozzo/ozzo-validation/v4"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (v Validator) ValidateAssignReceiverAgent(req param.AssignReceiverRequest) (map[string]string, error) {
|
||||||
|
const op = "adminkindboxvalidator.ValidateAssignReceiverAgent"
|
||||||
|
|
||||||
|
if err := validation.ValidateStruct(&req,
|
||||||
|
|
||||||
|
validation.Field(&req.KindBoxID, validation.Required,
|
||||||
|
validation.By(v.doesKindBoxExist),
|
||||||
|
validation.By(v.checkKindBoxStatusForAssigningReceiverAgent)),
|
||||||
|
|
||||||
|
validation.Field(&req.ReceiverAgentID, validation.Required,
|
||||||
|
validation.By(v.doesAgentExist)),
|
||||||
|
); err != nil {
|
||||||
|
fieldErrors := make(map[string]string)
|
||||||
|
|
||||||
|
var errV validation.Errors
|
||||||
|
if errors.As(err, &errV) {
|
||||||
|
for key, value := range errV {
|
||||||
|
if value != nil {
|
||||||
|
fieldErrors[key] = value.Error()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fieldErrors, richerror.New(op).
|
||||||
|
WithMessage(errmsg.ErrorMsgInvalidInput).
|
||||||
|
WithKind(richerror.KindInvalid).
|
||||||
|
WithMeta(map[string]interface{}{"req": req}).
|
||||||
|
WithErr(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return map[string]string{}, nil
|
||||||
|
}
|
|
@ -4,19 +4,26 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
||||||
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Repository interface {
|
type Repository interface {
|
||||||
KindBoxExist(ctx context.Context, kindBoxID uint) (bool, error)
|
KindBoxExist(ctx context.Context, kindBoxID uint) (bool, error)
|
||||||
|
GetKindBox(ctx context.Context, kindBoxID uint) (entity.KindBox, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type AdminSvc interface {
|
||||||
|
AgentExistByID(ctx context.Context, agentID uint) (bool, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Validator struct {
|
type Validator struct {
|
||||||
repo Repository
|
repo Repository
|
||||||
|
adminSvc AdminSvc
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(repo Repository) Validator {
|
func New(repo Repository, adminSvc AdminSvc) Validator {
|
||||||
return Validator{repo: repo}
|
return Validator{repo: repo, adminSvc: adminSvc}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v Validator) doesKindBoxExist(value interface{}) error {
|
func (v Validator) doesKindBoxExist(value interface{}) error {
|
||||||
|
@ -34,3 +41,35 @@ func (v Validator) doesKindBoxExist(value interface{}) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (v Validator) checkKindBoxStatusForAssigningReceiverAgent(value interface{}) error {
|
||||||
|
kindboxID, ok := value.(uint)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
||||||
|
}
|
||||||
|
kindBox, err := v.repo.GetKindBox(context.Background(), kindboxID)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
||||||
|
}
|
||||||
|
if kindBox.Status != entity.KindBoxReadyToReturnStatus {
|
||||||
|
return fmt.Errorf(errmsg.ErrorMsgAssignReceiverAgentKindBoxStatus)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v Validator) doesAgentExist(value interface{}) error {
|
||||||
|
agentID, ok := value.(uint)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
||||||
|
}
|
||||||
|
exists, err := v.adminSvc.AgentExistByID(context.Background(), agentID)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return fmt.Errorf(errmsg.ErrorMsgNotFound)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue