forked from ebhomengo/niki
				
			feat(niki): agent get return awaiting kindbox (#81)
This commit is contained in:
		
							parent
							
								
									cd18bd2e71
								
							
						
					
					
						commit
						b119b08830
					
				| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					package agentkindboxhandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						param "git.gocasts.ir/ebhomengo/niki/param/agent/kind_box"
 | 
				
			||||||
 | 
						"git.gocasts.ir/ebhomengo/niki/pkg/claim"
 | 
				
			||||||
 | 
						httpmsg "git.gocasts.ir/ebhomengo/niki/pkg/http_msg"
 | 
				
			||||||
 | 
						"github.com/labstack/echo/v4"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Get godoc
 | 
				
			||||||
 | 
					// @Summary      Get a kind box that is awaiting return by agent
 | 
				
			||||||
 | 
					// @Tags         KindBox
 | 
				
			||||||
 | 
					// @Accept       json
 | 
				
			||||||
 | 
					// @Produce      json
 | 
				
			||||||
 | 
					// @Param        id path int true "KindBox ID"
 | 
				
			||||||
 | 
					// @Success      200  {object}  param.GetKindBoxResponse
 | 
				
			||||||
 | 
					// @Failure      400  {string}  "Bad Request"
 | 
				
			||||||
 | 
					// @Failure      401  {string}  "invalid or expired jwt"
 | 
				
			||||||
 | 
					// @Failure      403  {string}  "user not allowed"
 | 
				
			||||||
 | 
					// @Failure      422  {object}  httpmsg.ErrorResponse
 | 
				
			||||||
 | 
					// @Failure      500  {string}  "something went wrong"
 | 
				
			||||||
 | 
					// @Security 	 AuthBearerAdmin
 | 
				
			||||||
 | 
					// @Router       /agents/kindboxes/{id} [get]
 | 
				
			||||||
 | 
					func (h Handler) Get(c echo.Context) error {
 | 
				
			||||||
 | 
						var req param.GetKindBoxRequest
 | 
				
			||||||
 | 
						if bErr := c.Bind(&req); bErr != nil {
 | 
				
			||||||
 | 
							return echo.NewHTTPError(http.StatusBadRequest)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						claims := claim.GetClaimsFromEchoContext(c)
 | 
				
			||||||
 | 
						req.AgentID = claims.UserID
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if fieldErrors, err := h.agentKindBoxVld.ValidateGetRequest(req); err != nil {
 | 
				
			||||||
 | 
							msg, code := httpmsg.Error(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return c.JSON(code, httpmsg.ErrorResponse{
 | 
				
			||||||
 | 
								Message: msg,
 | 
				
			||||||
 | 
								Errors:  fieldErrors,
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						resp, sErr := h.agentKindBoxSvc.Get(c.Request().Context(), req)
 | 
				
			||||||
 | 
						if sErr != nil {
 | 
				
			||||||
 | 
							msg, code := httpmsg.Error(sErr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return echo.NewHTTPError(code, msg)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return c.JSON(http.StatusOK, resp)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					package agentkindboxhandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						adminauthorizationservice "git.gocasts.ir/ebhomengo/niki/service/admin/authorization"
 | 
				
			||||||
 | 
						agentkindboxservice "git.gocasts.ir/ebhomengo/niki/service/agent/kind_box"
 | 
				
			||||||
 | 
						authservice "git.gocasts.ir/ebhomengo/niki/service/auth"
 | 
				
			||||||
 | 
						agentkindboxvalidator "git.gocasts.ir/ebhomengo/niki/validator/agent/kind_box"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Handler struct {
 | 
				
			||||||
 | 
						authConfig        authservice.Config
 | 
				
			||||||
 | 
						authSvc           authservice.Service
 | 
				
			||||||
 | 
						agentKindBoxSvc   agentkindboxservice.Service
 | 
				
			||||||
 | 
						agentKindBoxVld   agentkindboxvalidator.Validator
 | 
				
			||||||
 | 
						adminAuthorizeSvc adminauthorizationservice.Service
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func New(authConfig authservice.Config, authSvc authservice.Service,
 | 
				
			||||||
 | 
						agentKindBoxSvc agentkindboxservice.Service, agentKindBoxVld agentkindboxvalidator.Validator,
 | 
				
			||||||
 | 
						adminAuthorizeSvc adminauthorizationservice.Service,
 | 
				
			||||||
 | 
					) Handler {
 | 
				
			||||||
 | 
						return Handler{
 | 
				
			||||||
 | 
							authConfig:        authConfig,
 | 
				
			||||||
 | 
							authSvc:           authSvc,
 | 
				
			||||||
 | 
							agentKindBoxSvc:   agentKindBoxSvc,
 | 
				
			||||||
 | 
							agentKindBoxVld:   agentKindBoxVld,
 | 
				
			||||||
 | 
							adminAuthorizeSvc: adminAuthorizeSvc,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					package agentkindboxhandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"git.gocasts.ir/ebhomengo/niki/delivery/http_server/middleware"
 | 
				
			||||||
 | 
						"git.gocasts.ir/ebhomengo/niki/entity"
 | 
				
			||||||
 | 
						"github.com/labstack/echo/v4"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h Handler) SetRoutes(e *echo.Echo) {
 | 
				
			||||||
 | 
						r := e.Group("/agents/kindboxes")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						r.Use(middleware.Auth(h.authSvc, h.authConfig))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						r.GET("/:id", h.Get, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxGetAwaitingReturnPermission))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2,11 +2,14 @@ package httpserver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						agentkindboxservice "git.gocasts.ir/ebhomengo/niki/service/agent/kind_box"
 | 
				
			||||||
 | 
						agentkindboxvalidator "git.gocasts.ir/ebhomengo/niki/validator/agent/kind_box"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config "git.gocasts.ir/ebhomengo/niki/config"
 | 
						config "git.gocasts.ir/ebhomengo/niki/config"
 | 
				
			||||||
	adminhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/admin"
 | 
						adminhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/admin"
 | 
				
			||||||
	adminKindBoxHandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/kind_box"
 | 
						adminKindBoxHandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/kind_box"
 | 
				
			||||||
	adminkindboxreqhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/kind_box_req"
 | 
						adminkindboxreqhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/kind_box_req"
 | 
				
			||||||
 | 
						agentkindboxhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/agent/kind_box"
 | 
				
			||||||
	benefactoraddresshandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/address"
 | 
						benefactoraddresshandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/address"
 | 
				
			||||||
	benefactorhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/benefactor"
 | 
						benefactorhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/benefactor"
 | 
				
			||||||
	benefactorkindboxhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/kind_box"
 | 
						benefactorkindboxhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/kind_box"
 | 
				
			||||||
| 
						 | 
					@ -43,6 +46,7 @@ type Server struct {
 | 
				
			||||||
	adminHandler                adminhandler.Handler
 | 
						adminHandler                adminhandler.Handler
 | 
				
			||||||
	adminKindBoxReqHandler      adminkindboxreqhandler.Handler
 | 
						adminKindBoxReqHandler      adminkindboxreqhandler.Handler
 | 
				
			||||||
	adminKindBoxHandler         adminKindBoxHandler.Handler
 | 
						adminKindBoxHandler         adminKindBoxHandler.Handler
 | 
				
			||||||
 | 
						agentKindBoxHandler         agentkindboxhandler.Handler
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func New(
 | 
					func New(
 | 
				
			||||||
| 
						 | 
					@ -64,6 +68,8 @@ func New(
 | 
				
			||||||
	adminAuthorizeSvc adminauthorizationservice.Service,
 | 
						adminAuthorizeSvc adminauthorizationservice.Service,
 | 
				
			||||||
	adminKindBoxSvc adminkindboxservice.Service,
 | 
						adminKindBoxSvc adminkindboxservice.Service,
 | 
				
			||||||
	adminKindBoxVld adminkindboxvalidator.Validator,
 | 
						adminKindBoxVld adminkindboxvalidator.Validator,
 | 
				
			||||||
 | 
						agentKindBoxSvc agentkindboxservice.Service,
 | 
				
			||||||
 | 
						agentKindBoxVld agentkindboxvalidator.Validator,
 | 
				
			||||||
) Server {
 | 
					) Server {
 | 
				
			||||||
	return Server{
 | 
						return Server{
 | 
				
			||||||
		Router:                      echo.New(),
 | 
							Router:                      echo.New(),
 | 
				
			||||||
| 
						 | 
					@ -75,6 +81,7 @@ func New(
 | 
				
			||||||
		adminHandler:                adminhandler.New(cfg.AdminAuth, adminAuthSvc, adminSvc, adminVld, adminAuthorizeSvc),
 | 
							adminHandler:                adminhandler.New(cfg.AdminAuth, adminAuthSvc, adminSvc, adminVld, adminAuthorizeSvc),
 | 
				
			||||||
		adminKindBoxReqHandler:      adminkindboxreqhandler.New(cfg.Auth, adminAuthSvc, adminKinBoxReqSvc, adminKinBoxReqVld, adminAuthorizeSvc),
 | 
							adminKindBoxReqHandler:      adminkindboxreqhandler.New(cfg.Auth, adminAuthSvc, adminKinBoxReqSvc, adminKinBoxReqVld, adminAuthorizeSvc),
 | 
				
			||||||
		adminKindBoxHandler:         adminKindBoxHandler.New(cfg.Auth, adminAuthSvc, adminKindBoxSvc, adminKindBoxVld, adminAuthorizeSvc),
 | 
							adminKindBoxHandler:         adminKindBoxHandler.New(cfg.Auth, adminAuthSvc, adminKindBoxSvc, adminKindBoxVld, adminAuthorizeSvc),
 | 
				
			||||||
 | 
							agentKindBoxHandler:         agentkindboxhandler.New(cfg.AdminAuth, adminAuthSvc, agentKindBoxSvc, agentKindBoxVld, adminAuthorizeSvc),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,6 +99,8 @@ func (s Server) Serve() {
 | 
				
			||||||
	s.adminHandler.SetRoutes(s.Router)
 | 
						s.adminHandler.SetRoutes(s.Router)
 | 
				
			||||||
	s.adminKindBoxReqHandler.SetRoutes(s.Router)
 | 
						s.adminKindBoxReqHandler.SetRoutes(s.Router)
 | 
				
			||||||
	s.adminKindBoxHandler.SetRoutes(s.Router)
 | 
						s.adminKindBoxHandler.SetRoutes(s.Router)
 | 
				
			||||||
 | 
						s.agentKindBoxHandler.SetRoutes(s.Router)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Start server
 | 
						// Start server
 | 
				
			||||||
	address := fmt.Sprintf(":%d", s.config.HTTPServer.Port)
 | 
						address := fmt.Sprintf(":%d", s.config.HTTPServer.Port)
 | 
				
			||||||
	fmt.Printf("start echo server on %s\n", address)
 | 
						fmt.Printf("start echo server on %s\n", address)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										122
									
								
								docs/docs.go
								
								
								
								
							
							
						
						
									
										122
									
								
								docs/docs.go
								
								
								
								
							| 
						 | 
					@ -1391,6 +1391,72 @@ const docTemplate = `{
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "/agents/kindboxes/{id}": {
 | 
				
			||||||
 | 
					            "get": {
 | 
				
			||||||
 | 
					                "security": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "AuthBearerAdmin": []
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "KindBox"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "Get a kind box that is awaiting return by agent",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "KindBox ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "OK",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/kind_box.GetKindBoxResponse"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "400": {
 | 
				
			||||||
 | 
					                        "description": "Bad Request",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "type": "string"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "401": {
 | 
				
			||||||
 | 
					                        "description": "invalid or expired jwt",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "type": "string"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "403": {
 | 
				
			||||||
 | 
					                        "description": "user not allowed",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "type": "string"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "422": {
 | 
				
			||||||
 | 
					                        "description": "Unprocessable Entity",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/httpmsg.ErrorResponse"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "500": {
 | 
				
			||||||
 | 
					                        "description": "something went wrong",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "type": "string"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "/benefactor/kindboxes": {
 | 
					        "/benefactor/kindboxes": {
 | 
				
			||||||
            "get": {
 | 
					            "get": {
 | 
				
			||||||
                "security": [
 | 
					                "security": [
 | 
				
			||||||
| 
						 | 
					@ -3220,6 +3286,62 @@ const docTemplate = `{
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "kind_box.GetKindBoxResponse": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "amount": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "benefactorID": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "deliverAddressID": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "deliverReferDate": {
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "deliverReferTimeID": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "deliveredAt": {
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "id": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "kindBoxReqID": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "kindBoxType": {
 | 
				
			||||||
 | 
					                    "$ref": "#/definitions/entity.KindBoxType"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "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"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "param.PaginationResponse": {
 | 
					        "param.PaginationResponse": {
 | 
				
			||||||
            "type": "object",
 | 
					            "type": "object",
 | 
				
			||||||
            "properties": {
 | 
					            "properties": {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1380,6 +1380,72 @@
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "/agents/kindboxes/{id}": {
 | 
				
			||||||
 | 
					            "get": {
 | 
				
			||||||
 | 
					                "security": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "AuthBearerAdmin": []
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "consumes": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "produces": [
 | 
				
			||||||
 | 
					                    "application/json"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "tags": [
 | 
				
			||||||
 | 
					                    "KindBox"
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "summary": "Get a kind box that is awaiting return by agent",
 | 
				
			||||||
 | 
					                "parameters": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "type": "integer",
 | 
				
			||||||
 | 
					                        "description": "KindBox ID",
 | 
				
			||||||
 | 
					                        "name": "id",
 | 
				
			||||||
 | 
					                        "in": "path",
 | 
				
			||||||
 | 
					                        "required": true
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "responses": {
 | 
				
			||||||
 | 
					                    "200": {
 | 
				
			||||||
 | 
					                        "description": "OK",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/kind_box.GetKindBoxResponse"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "400": {
 | 
				
			||||||
 | 
					                        "description": "Bad Request",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "type": "string"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "401": {
 | 
				
			||||||
 | 
					                        "description": "invalid or expired jwt",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "type": "string"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "403": {
 | 
				
			||||||
 | 
					                        "description": "user not allowed",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "type": "string"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "422": {
 | 
				
			||||||
 | 
					                        "description": "Unprocessable Entity",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "$ref": "#/definitions/httpmsg.ErrorResponse"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    "500": {
 | 
				
			||||||
 | 
					                        "description": "something went wrong",
 | 
				
			||||||
 | 
					                        "schema": {
 | 
				
			||||||
 | 
					                            "type": "string"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "/benefactor/kindboxes": {
 | 
					        "/benefactor/kindboxes": {
 | 
				
			||||||
            "get": {
 | 
					            "get": {
 | 
				
			||||||
                "security": [
 | 
					                "security": [
 | 
				
			||||||
| 
						 | 
					@ -3209,6 +3275,62 @@
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "kind_box.GetKindBoxResponse": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					                "amount": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "benefactorID": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "deliverAddressID": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "deliverReferDate": {
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "deliverReferTimeID": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "deliveredAt": {
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "id": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "kindBoxReqID": {
 | 
				
			||||||
 | 
					                    "type": "integer"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "kindBoxType": {
 | 
				
			||||||
 | 
					                    "$ref": "#/definitions/entity.KindBoxType"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "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"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        "param.PaginationResponse": {
 | 
					        "param.PaginationResponse": {
 | 
				
			||||||
            "type": "object",
 | 
					            "type": "object",
 | 
				
			||||||
            "properties": {
 | 
					            "properties": {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -789,6 +789,43 @@ definitions:
 | 
				
			||||||
      message:
 | 
					      message:
 | 
				
			||||||
        type: string
 | 
					        type: string
 | 
				
			||||||
    type: object
 | 
					    type: object
 | 
				
			||||||
 | 
					  kind_box.GetKindBoxResponse:
 | 
				
			||||||
 | 
					    properties:
 | 
				
			||||||
 | 
					      amount:
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      benefactorID:
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      deliverAddressID:
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      deliverReferDate:
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      deliverReferTimeID:
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      deliveredAt:
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
 | 
					      id:
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      kindBoxReqID:
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      kindBoxType:
 | 
				
			||||||
 | 
					        $ref: '#/definitions/entity.KindBoxType'
 | 
				
			||||||
 | 
					      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: object
 | 
				
			||||||
  param.PaginationResponse:
 | 
					  param.PaginationResponse:
 | 
				
			||||||
    properties:
 | 
					    properties:
 | 
				
			||||||
      page_number:
 | 
					      page_number:
 | 
				
			||||||
| 
						 | 
					@ -1704,6 +1741,48 @@ paths:
 | 
				
			||||||
      summary: Register an admin by super-admin
 | 
					      summary: Register an admin by super-admin
 | 
				
			||||||
      tags:
 | 
					      tags:
 | 
				
			||||||
      - Admin
 | 
					      - Admin
 | 
				
			||||||
 | 
					  /agents/kindboxes/{id}:
 | 
				
			||||||
 | 
					    get:
 | 
				
			||||||
 | 
					      consumes:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      parameters:
 | 
				
			||||||
 | 
					      - description: KindBox ID
 | 
				
			||||||
 | 
					        in: path
 | 
				
			||||||
 | 
					        name: id
 | 
				
			||||||
 | 
					        required: true
 | 
				
			||||||
 | 
					        type: integer
 | 
				
			||||||
 | 
					      produces:
 | 
				
			||||||
 | 
					      - application/json
 | 
				
			||||||
 | 
					      responses:
 | 
				
			||||||
 | 
					        "200":
 | 
				
			||||||
 | 
					          description: OK
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/kind_box.GetKindBoxResponse'
 | 
				
			||||||
 | 
					        "400":
 | 
				
			||||||
 | 
					          description: Bad Request
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            type: string
 | 
				
			||||||
 | 
					        "401":
 | 
				
			||||||
 | 
					          description: invalid or expired jwt
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            type: string
 | 
				
			||||||
 | 
					        "403":
 | 
				
			||||||
 | 
					          description: user not allowed
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            type: string
 | 
				
			||||||
 | 
					        "422":
 | 
				
			||||||
 | 
					          description: Unprocessable Entity
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            $ref: '#/definitions/httpmsg.ErrorResponse'
 | 
				
			||||||
 | 
					        "500":
 | 
				
			||||||
 | 
					          description: something went wrong
 | 
				
			||||||
 | 
					          schema:
 | 
				
			||||||
 | 
					            type: string
 | 
				
			||||||
 | 
					      security:
 | 
				
			||||||
 | 
					      - AuthBearerAdmin: []
 | 
				
			||||||
 | 
					      summary: Get a kind box that is awaiting return by agent
 | 
				
			||||||
 | 
					      tags:
 | 
				
			||||||
 | 
					      - KindBox
 | 
				
			||||||
  /benefactor/kindboxes:
 | 
					  /benefactor/kindboxes:
 | 
				
			||||||
    get:
 | 
					    get:
 | 
				
			||||||
      consumes:
 | 
					      consumes:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,4 +17,5 @@ const (
 | 
				
			||||||
	AdminKindBoxGetAllPermission                 = AdminPermission("kindbox-getall")
 | 
						AdminKindBoxGetAllPermission                 = AdminPermission("kindbox-getall")
 | 
				
			||||||
	AdminKindBoxReqUpdatePermission              = AdminPermission("kindboxreq-update")
 | 
						AdminKindBoxReqUpdatePermission              = AdminPermission("kindboxreq-update")
 | 
				
			||||||
	AdminKindBoxReqGetPermission                 = AdminPermission("kindboxreq-get")
 | 
						AdminKindBoxReqGetPermission                 = AdminPermission("kindboxreq-get")
 | 
				
			||||||
 | 
						AdminKindBoxGetAwaitingReturnPermission      = AdminPermission("kindbox-get_awaiting_return")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,7 @@ import (
 | 
				
			||||||
	adminkindboxservice "git.gocasts.ir/ebhomengo/niki/service/admin/kind_box"
 | 
						adminkindboxservice "git.gocasts.ir/ebhomengo/niki/service/admin/kind_box"
 | 
				
			||||||
	adminkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/admin/kind_box_req"
 | 
						adminkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/admin/kind_box_req"
 | 
				
			||||||
	adminrefertimeservice "git.gocasts.ir/ebhomengo/niki/service/admin/refer_time"
 | 
						adminrefertimeservice "git.gocasts.ir/ebhomengo/niki/service/admin/refer_time"
 | 
				
			||||||
 | 
						agentkindboxservice "git.gocasts.ir/ebhomengo/niki/service/agent/kind_box"
 | 
				
			||||||
	benefactoraddressservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/address"
 | 
						benefactoraddressservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/address"
 | 
				
			||||||
	benefactorservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/benefactor"
 | 
						benefactorservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/benefactor"
 | 
				
			||||||
	benefactorkindboxservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box"
 | 
						benefactorkindboxservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box"
 | 
				
			||||||
| 
						 | 
					@ -28,6 +29,7 @@ type Services struct {
 | 
				
			||||||
	BenefactorAddressSvc    benefactoraddressservice.Service
 | 
						BenefactorAddressSvc    benefactoraddressservice.Service
 | 
				
			||||||
	BenefactorKindBoxSvc    benefactorkindboxservice.Service
 | 
						BenefactorKindBoxSvc    benefactorkindboxservice.Service
 | 
				
			||||||
	AdminKindBoxSvc         adminkindboxservice.Service
 | 
						AdminKindBoxSvc         adminkindboxservice.Service
 | 
				
			||||||
 | 
						AgentKindBoxSvc         agentkindboxservice.Service
 | 
				
			||||||
	AdminSvc                adminservice.Service
 | 
						AdminSvc                adminservice.Service
 | 
				
			||||||
	AdminKindBoxReqSvc      adminkindboxreqservice.Service
 | 
						AdminKindBoxReqSvc      adminkindboxreqservice.Service
 | 
				
			||||||
	AdminReferTimeSvc       adminrefertimeservice.Service
 | 
						AdminReferTimeSvc       adminrefertimeservice.Service
 | 
				
			||||||
| 
						 | 
					@ -66,6 +68,10 @@ func InitAdminKindBoxService(db *mysql.DB) adminkindboxservice.Service {
 | 
				
			||||||
	return adminkindboxservice.New(InitKindBoxRepo(db))
 | 
						return adminkindboxservice.New(InitKindBoxRepo(db))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func InitAgentKindBoxService(db *mysql.DB) agentkindboxservice.Service {
 | 
				
			||||||
 | 
						return agentkindboxservice.New(InitKindBoxRepo(db))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func InitAdminKindBoxReqService(db *mysql.DB) adminkindboxreqservice.Service {
 | 
					func InitAdminKindBoxReqService(db *mysql.DB) adminkindboxreqservice.Service {
 | 
				
			||||||
	return adminkindboxreqservice.New(InitBenefactorKindBoxReqDB(db), InitAdminKindBoxService(db))
 | 
						return adminkindboxreqservice.New(InitBenefactorKindBoxReqDB(db), InitAdminKindBoxService(db))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,7 @@ import (
 | 
				
			||||||
	adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin"
 | 
						adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin"
 | 
				
			||||||
	adminkindboxvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box"
 | 
						adminkindboxvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box"
 | 
				
			||||||
	adminkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box_req"
 | 
						adminkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box_req"
 | 
				
			||||||
 | 
						agentkindboxvalidator "git.gocasts.ir/ebhomengo/niki/validator/agent/kind_box"
 | 
				
			||||||
	benefactoraddressvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/address"
 | 
						benefactoraddressvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/address"
 | 
				
			||||||
	benefactorvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/benefactor"
 | 
						benefactorvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/benefactor"
 | 
				
			||||||
	benefactorkindboxvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/kind_box"
 | 
						benefactorkindboxvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/kind_box"
 | 
				
			||||||
| 
						 | 
					@ -21,6 +22,7 @@ type Validators struct {
 | 
				
			||||||
	AdminKindBoxReqVld      adminkindboxreqvalidator.Validator
 | 
						AdminKindBoxReqVld      adminkindboxreqvalidator.Validator
 | 
				
			||||||
	AdminVld                adminvalidator.Validator
 | 
						AdminVld                adminvalidator.Validator
 | 
				
			||||||
	AdminKindBoxVld         adminkindboxvalidator.Validator
 | 
						AdminKindBoxVld         adminkindboxvalidator.Validator
 | 
				
			||||||
 | 
						AgentKindBoxVld         agentkindboxvalidator.Validator
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func InitAdminKindBoxReqValidator(db *mysql.DB, cfg config.Config) adminkindboxreqvalidator.Validator {
 | 
					func InitAdminKindBoxReqValidator(db *mysql.DB, cfg config.Config) adminkindboxreqvalidator.Validator {
 | 
				
			||||||
| 
						 | 
					@ -55,6 +57,10 @@ func InitAdminKindBoxValidator(db *mysql.DB, cfg config.Config) adminkindboxvali
 | 
				
			||||||
	return adminkindboxvalidator.New(InitKindBoxRepo(db), InitAdminService(cfg, db))
 | 
						return adminkindboxvalidator.New(InitKindBoxRepo(db), InitAdminService(cfg, db))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func InitAgentKindBoxValidator(db *mysql.DB) agentkindboxvalidator.Validator {
 | 
				
			||||||
 | 
						return agentkindboxvalidator.New(InitKindBoxRepo(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 {
 | 
				
			||||||
	return benefactorkindboxvalidator.New(
 | 
						return benefactorkindboxvalidator.New(
 | 
				
			||||||
		InitKindBoxRepo(db),
 | 
							InitKindBoxRepo(db),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								main.go
								
								
								
								
							
							
						
						
									
										6
									
								
								main.go
								
								
								
								
							| 
						 | 
					@ -2,7 +2,6 @@ package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"flag"
 | 
						"flag"
 | 
				
			||||||
 | 
					 | 
				
			||||||
	"git.gocasts.ir/ebhomengo/niki/adapter/redis"
 | 
						"git.gocasts.ir/ebhomengo/niki/adapter/redis"
 | 
				
			||||||
	"git.gocasts.ir/ebhomengo/niki/config"
 | 
						"git.gocasts.ir/ebhomengo/niki/config"
 | 
				
			||||||
	httpserver "git.gocasts.ir/ebhomengo/niki/delivery/http_server"
 | 
						httpserver "git.gocasts.ir/ebhomengo/niki/delivery/http_server"
 | 
				
			||||||
| 
						 | 
					@ -67,6 +66,7 @@ func initDependencies(cfg config.Config, redisAdapter redis.Adapter, db *mysql.D
 | 
				
			||||||
			AdminKindBoxReqVld:      initial.InitAdminKindBoxReqValidator(db, cfg),
 | 
								AdminKindBoxReqVld:      initial.InitAdminKindBoxReqValidator(db, cfg),
 | 
				
			||||||
			AdminVld:                initial.InitAdminValidator(db),
 | 
								AdminVld:                initial.InitAdminValidator(db),
 | 
				
			||||||
			AdminKindBoxVld:         initial.InitAdminKindBoxValidator(db, cfg),
 | 
								AdminKindBoxVld:         initial.InitAdminKindBoxValidator(db, cfg),
 | 
				
			||||||
 | 
								AgentKindBoxVld:         initial.InitAgentKindBoxValidator(db),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		initial.Services{
 | 
							initial.Services{
 | 
				
			||||||
			BenefactorSvc:           initial.InitBenefactorService(cfg, redisAdapter, db),
 | 
								BenefactorSvc:           initial.InitBenefactorService(cfg, redisAdapter, db),
 | 
				
			||||||
| 
						 | 
					@ -74,6 +74,7 @@ func initDependencies(cfg config.Config, redisAdapter redis.Adapter, db *mysql.D
 | 
				
			||||||
			BenefactorAddressSvc:    initial.InitBenefactorAddressService(db),
 | 
								BenefactorAddressSvc:    initial.InitBenefactorAddressService(db),
 | 
				
			||||||
			BenefactorKindBoxSvc:    initial.InitBenefactorKindBoxService(db),
 | 
								BenefactorKindBoxSvc:    initial.InitBenefactorKindBoxService(db),
 | 
				
			||||||
			AdminKindBoxSvc:         initial.InitAdminKindBoxService(db),
 | 
								AdminKindBoxSvc:         initial.InitAdminKindBoxService(db),
 | 
				
			||||||
 | 
								AgentKindBoxSvc:         initial.InitAgentKindBoxService(db),
 | 
				
			||||||
			AdminKindBoxReqSvc:      initial.InitAdminKindBoxReqService(db),
 | 
								AdminKindBoxReqSvc:      initial.InitAdminKindBoxReqService(db),
 | 
				
			||||||
			AdminSvc:                initial.InitAdminService(cfg, db),
 | 
								AdminSvc:                initial.InitAdminService(cfg, db),
 | 
				
			||||||
			AdminReferTimeSvc:       initial.InitAdminReferTimeService(db),
 | 
								AdminReferTimeSvc:       initial.InitAdminReferTimeService(db),
 | 
				
			||||||
| 
						 | 
					@ -92,7 +93,8 @@ func initAndRunServer(cfg config.Config, dependencies *Dependencies) {
 | 
				
			||||||
		dependencies.BenefactorKindBoxSvc, dependencies.BenefactorKindBoxVld,
 | 
							dependencies.BenefactorKindBoxSvc, dependencies.BenefactorKindBoxVld,
 | 
				
			||||||
		dependencies.AdminSvc, dependencies.AdminVld, dependencies.AdminAuthSvc,
 | 
							dependencies.AdminSvc, dependencies.AdminVld, dependencies.AdminAuthSvc,
 | 
				
			||||||
		dependencies.AdminKindBoxReqSvc, dependencies.AdminKindBoxReqVld, dependencies.AdminAuthorizationSvc,
 | 
							dependencies.AdminKindBoxReqSvc, dependencies.AdminKindBoxReqVld, dependencies.AdminAuthorizationSvc,
 | 
				
			||||||
		dependencies.AdminKindBoxSvc, dependencies.AdminKindBoxVld)
 | 
							dependencies.AdminKindBoxSvc, dependencies.AdminKindBoxVld,
 | 
				
			||||||
 | 
							dependencies.AgentKindBoxSvc, dependencies.AgentKindBoxVld)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	server.Serve()
 | 
						server.Serve()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					package kind_box
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "git.gocasts.ir/ebhomengo/niki/entity"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type GetKindBoxRequest struct {
 | 
				
			||||||
 | 
						KindBoxID uint `param:"id"`
 | 
				
			||||||
 | 
						AgentID   uint
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type GetKindBoxResponse struct {
 | 
				
			||||||
 | 
						entity.KindBox
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
package mysqlkindbox
 | 
					package mysqlkindbox
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "git.gocasts.ir/ebhomengo/niki/repository/mysql"
 | 
					import (
 | 
				
			||||||
 | 
						"git.gocasts.ir/ebhomengo/niki/repository/mysql"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type DB struct {
 | 
					type DB struct {
 | 
				
			||||||
	conn *mysql.DB
 | 
						conn *mysql.DB
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@ package mysqlkindbox
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
 | 
						"git.gocasts.ir/ebhomengo/niki/entity"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
 | 
						errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
 | 
				
			||||||
	richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
						richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
				
			||||||
| 
						 | 
					@ -20,6 +21,25 @@ func (d DB) BenefactorKindBoxExist(ctx context.Context, benefactorID, kindBoxID
 | 
				
			||||||
	return count > 0, nil
 | 
						return count > 0, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d DB) KindBoxExistForAgent(ctx context.Context, kindBoxID, agentID uint) (bool, error) {
 | 
				
			||||||
 | 
						const op = "mysqlkindbox.KindBoxExistForAgent"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						query := `SELECT COUNT(*) FROM kind_boxes WHERE id = ? AND receiver_agent_id = ? AND status = ? AND deleted_at IS NULL`
 | 
				
			||||||
 | 
						stmt, err := d.conn.PrepareStatement(op, query)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return false, richerror.New(op).WithErr(err).
 | 
				
			||||||
 | 
								WithMessage(errmsg.ErrorMsgCantPrepareStatement).WithKind(richerror.KindUnexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var count int
 | 
				
			||||||
 | 
						if err = stmt.QueryRowContext(ctx, kindBoxID, agentID, entity.KindBoxAssignedReceiverAgentStatus.String()).Scan(&count); err != nil {
 | 
				
			||||||
 | 
							return false, richerror.New(op).WithErr(err).
 | 
				
			||||||
 | 
								WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return count > 0, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (d DB) KindBoxExist(ctx context.Context, kindBoxID uint) (bool, error) {
 | 
					func (d DB) KindBoxExist(ctx context.Context, kindBoxID uint) (bool, error) {
 | 
				
			||||||
	const op = "mysqlkindbox.KindBoxExist"
 | 
						const op = "mysqlkindbox.KindBoxExist"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					package mysqlkindbox
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"database/sql"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"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) GetAwaitingReturnByAgent(ctx context.Context, kindBoxID uint, agentID uint) (entity.KindBox, error) {
 | 
				
			||||||
 | 
						const op = "mysqlkindbox.GetAwaitingReturnByAgent"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						query := `SELECT * FROM kind_boxes WHERE id = ? AND receiver_agent_id = ? AND status = ? AND deleted_at IS NULL`
 | 
				
			||||||
 | 
						stmt, err := d.conn.PrepareStatement(op, query)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return entity.KindBox{}, richerror.New(op).WithErr(err).
 | 
				
			||||||
 | 
								WithMessage(errmsg.ErrorMsgCantPrepareStatement).WithKind(richerror.KindUnexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						row := stmt.QueryRowContext(ctx, kindBoxID, agentID, entity.KindBoxAssignedReceiverAgentStatus.String())
 | 
				
			||||||
 | 
						k, err := scanKindBox(row)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if errors.Is(err, sql.ErrNoRows) {
 | 
				
			||||||
 | 
								return entity.KindBox{}, richerror.New(op).WithErr(err).
 | 
				
			||||||
 | 
									WithMessage(errmsg.ErrorMsgNotFound).WithKind(richerror.KindNotFound)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return entity.KindBox{}, richerror.New(op).WithErr(err).
 | 
				
			||||||
 | 
								WithMessage(errmsg.ErrorMsgCantScanQueryResult).WithKind(richerror.KindUnexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return k, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,8 @@ ALTER TABLE `admin_access_controls` MODIFY COLUMN `permission`
 | 
				
			||||||
        'kindbox-assign_receiver_agent',
 | 
					        'kindbox-assign_receiver_agent',
 | 
				
			||||||
        'kindbox-getall',
 | 
					        'kindbox-getall',
 | 
				
			||||||
        'kindboxreq-update',
 | 
					        'kindboxreq-update',
 | 
				
			||||||
        'kindboxreq-get'
 | 
					        'kindboxreq-get',
 | 
				
			||||||
 | 
					        'kindbox-get_awaiting_return'
 | 
				
			||||||
    ) NOT NULL;
 | 
					    ) NOT NULL;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
-- +migrate Down
 | 
					-- +migrate Down
 | 
				
			||||||
| 
						 | 
					@ -1,37 +1,39 @@
 | 
				
			||||||
-- +migrate Up
 | 
					-- +migrate Up
 | 
				
			||||||
INSERT INTO `admin_access_controls` (`id`, `actor_id`, `actor_type`,`permission`)
 | 
					INSERT INTO `admin_access_controls` (`id`, `actor_id`, `actor_type`,`permission`)
 | 
				
			||||||
    VALUES 
 | 
					VALUES
 | 
				
			||||||
        (DEFAULT, 1 , 'role','admin-register'),
 | 
					    (DEFAULT, 1 , 'role','admin-register'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','admin-getall_agent'),
 | 
					    (DEFAULT, 1 , 'role','admin-getall_agent'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','admin-getall_agent'),
 | 
					    (DEFAULT, 2 , 'role','admin-getall_agent'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-add'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-add'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-add'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-add'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-accept'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-accept'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-accept'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-accept'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-reject'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-reject'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-reject'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-reject'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-assign_sender_agent'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-assign_sender_agent'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-assign_sender_agent'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-assign_sender_agent'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-deliver'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-deliver'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-deliver'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-deliver'),
 | 
				
			||||||
        (DEFAULT, 3 , 'role','kindboxreq-deliver'),
 | 
					    (DEFAULT, 3 , 'role','kindboxreq-deliver'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-get'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-get'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-get'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-get'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-getall'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-getall'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-getall'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-getall'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-update'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-update'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-update'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-update'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindboxreq-get_awaiting_delivery'),
 | 
					    (DEFAULT, 1 , 'role','kindboxreq-get_awaiting_delivery'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindboxreq-get_awaiting_delivery'),
 | 
					    (DEFAULT, 2 , 'role','kindboxreq-get_awaiting_delivery'),
 | 
				
			||||||
        (DEFAULT, 3 , 'role','kindboxreq-get_awaiting_delivery'),
 | 
					    (DEFAULT, 3 , 'role','kindboxreq-get_awaiting_delivery'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindbox-assign_receiver_agent'),
 | 
					    (DEFAULT, 1 , 'role','kindbox-assign_receiver_agent'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindbox-assign_receiver_agent'),
 | 
					    (DEFAULT, 2 , 'role','kindbox-assign_receiver_agent'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindbox-get'),
 | 
					    (DEFAULT, 1 , 'role','kindbox-get'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindbox-get'),
 | 
					    (DEFAULT, 2 , 'role','kindbox-get'),
 | 
				
			||||||
        (DEFAULT, 1 , 'role','kindbox-getall'),
 | 
					    (DEFAULT, 1 , 'role','kindbox-getall'),
 | 
				
			||||||
        (DEFAULT, 2 , 'role','kindbox-getall');
 | 
					    (DEFAULT, 2 , 'role','kindbox-getall'),
 | 
				
			||||||
 | 
					    (DEFAULT, 1 , 'role','kindbox-get_awaiting_return'),
 | 
				
			||||||
 | 
					    (DEFAULT, 3 , 'role','kindbox-get_awaiting_return');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					package agentkindboxservice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						param "git.gocasts.ir/ebhomengo/niki/param/agent/kind_box"
 | 
				
			||||||
 | 
						richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s Service) Get(ctx context.Context, req param.GetKindBoxRequest) (param.GetKindBoxResponse, error) {
 | 
				
			||||||
 | 
						const op = "agentkindboxservice.Get"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						kindBox, err := s.repo.GetAwaitingReturnByAgent(ctx, req.KindBoxID, req.AgentID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return param.GetKindBoxResponse{}, richerror.New(op).WithErr(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return param.GetKindBoxResponse{
 | 
				
			||||||
 | 
							KindBox: kindBox,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					package agentkindboxservice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.gocasts.ir/ebhomengo/niki/entity"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Repository interface {
 | 
				
			||||||
 | 
						GetAwaitingReturnByAgent(ctx context.Context, kindBoxID uint, agentID uint) (entity.KindBox, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Service struct {
 | 
				
			||||||
 | 
						repo Repository
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func New(repository Repository) Service {
 | 
				
			||||||
 | 
						return Service{
 | 
				
			||||||
 | 
							repo: repository,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,36 @@
 | 
				
			||||||
 | 
					package agentkindboxvalidator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						param "git.gocasts.ir/ebhomengo/niki/param/agent/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) ValidateGetRequest(req param.GetKindBoxRequest) (map[string]string, error) {
 | 
				
			||||||
 | 
						const op = "agentkindboxvalidator.ValidateGetRequest"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := validation.ValidateStruct(&req,
 | 
				
			||||||
 | 
							validation.Field(&req.KindBoxID, validation.Required, validation.By(v.doesKindBoxExistForAgent(req.AgentID))),
 | 
				
			||||||
 | 
						); 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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					package agentkindboxvalidator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Repository interface {
 | 
				
			||||||
 | 
						KindBoxExistForAgent(ctx context.Context, kindBoxID, agentID uint) (bool, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Validator struct {
 | 
				
			||||||
 | 
						repo Repository
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func New(repo Repository) Validator {
 | 
				
			||||||
 | 
						return Validator{repo: repo}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (v Validator) doesKindBoxExistForAgent(agentID uint) func(value interface{}) error {
 | 
				
			||||||
 | 
						return func(value interface{}) error {
 | 
				
			||||||
 | 
							kindBoxID, ok := value.(uint)
 | 
				
			||||||
 | 
							if !ok {
 | 
				
			||||||
 | 
								return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							exists, err := v.repo.KindBoxExistForAgent(context.Background(), kindBoxID, agentID)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if !exists {
 | 
				
			||||||
 | 
								return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue