forked from ebhomengo/niki
				
			pull from dev
This commit is contained in:
		
						commit
						79be4d0a0e
					
				| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
package benefactorhandler
 | 
					package benefactoraddresshandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
| 
						 | 
					@ -10,13 +10,14 @@ import (
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h Handler) AddAddress(c echo.Context) error {
 | 
					func (h Handler) AddAddress(c echo.Context) error {
 | 
				
			||||||
	claims := claim.GetClaimsFromEchoContext(c)
 | 
						req := param.BenefactorAddAddressRequest{}
 | 
				
			||||||
	req := param.BenefactorAddAddressRequest{BenefactorID: claims.UserID}
 | 
					 | 
				
			||||||
	if bErr := c.Bind(&req); bErr != nil {
 | 
						if bErr := c.Bind(&req); bErr != nil {
 | 
				
			||||||
		return echo.NewHTTPError(http.StatusBadRequest)
 | 
							return echo.NewHTTPError(http.StatusBadRequest)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						claims := claim.GetClaimsFromEchoContext(c)
 | 
				
			||||||
 | 
						req.BenefactorID = claims.UserID
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if fieldErrors, err := h.benefactorVld.ValidateAddAddress(req); err != nil {
 | 
						if fieldErrors, err := h.addressVld.ValidateAddAddress(req); err != nil {
 | 
				
			||||||
		msg, code := httpmsg.Error(err)
 | 
							msg, code := httpmsg.Error(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return c.JSON(code, echo.Map{
 | 
							return c.JSON(code, echo.Map{
 | 
				
			||||||
| 
						 | 
					@ -24,7 +25,7 @@ func (h Handler) AddAddress(c echo.Context) error {
 | 
				
			||||||
			"errors":  fieldErrors,
 | 
								"errors":  fieldErrors,
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	resp, sErr := h.benefactorAddressSvc.Add(c.Request().Context(), req)
 | 
						resp, sErr := h.addressSvc.Add(c.Request().Context(), req)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if sErr != nil {
 | 
						if sErr != nil {
 | 
				
			||||||
		msg, code := httpmsg.Error(sErr)
 | 
							msg, code := httpmsg.Error(sErr)
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
package benefactorbasehandler
 | 
					package benefactoraddresshandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
package benefactorbasehandler
 | 
					package benefactoraddresshandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					package benefactoraddresshandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						authservice "git.gocasts.ir/ebhomengo/niki/service/auth/benefactor"
 | 
				
			||||||
 | 
						benefactoraddressservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/address"
 | 
				
			||||||
 | 
						benefactoraddressvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/address"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Handler struct {
 | 
				
			||||||
 | 
						authConfig authservice.Config
 | 
				
			||||||
 | 
						authSvc    authservice.Service
 | 
				
			||||||
 | 
						addressSvc benefactoraddressservice.Service
 | 
				
			||||||
 | 
						addressVld benefactoraddressvalidator.Validator
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func New(
 | 
				
			||||||
 | 
						authConfig authservice.Config,
 | 
				
			||||||
 | 
						authSvc authservice.Service,
 | 
				
			||||||
 | 
						addressSvc benefactoraddressservice.Service,
 | 
				
			||||||
 | 
						addressVld benefactoraddressvalidator.Validator,
 | 
				
			||||||
 | 
					) Handler {
 | 
				
			||||||
 | 
						return Handler{
 | 
				
			||||||
 | 
							authConfig: authConfig,
 | 
				
			||||||
 | 
							authSvc:    authSvc,
 | 
				
			||||||
 | 
							addressSvc: addressSvc,
 | 
				
			||||||
 | 
							addressVld: addressVld,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					package benefactoraddresshandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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("/address")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						r.GET("/provinces", h.GetAllProvinces)
 | 
				
			||||||
 | 
						r.GET("/cities", h.GetAllCities)
 | 
				
			||||||
 | 
						r.POST("/", h.AddAddress, middleware.Auth(h.authSvc, h.authConfig),
 | 
				
			||||||
 | 
							middleware.BenefactorAuthorization(entity.UserBenefactorRole))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,15 +0,0 @@
 | 
				
			||||||
package benefactorbasehandler
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	benefactoraddressservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/address"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type Handler struct {
 | 
					 | 
				
			||||||
	addressSvc benefactoraddressservice.Service
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func New(addressSvc benefactoraddressservice.Service) Handler {
 | 
					 | 
				
			||||||
	return Handler{
 | 
					 | 
				
			||||||
		addressSvc: addressSvc,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,10 +0,0 @@
 | 
				
			||||||
package benefactorbasehandler
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "github.com/labstack/echo/v4"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (h Handler) SetRoutes(e *echo.Echo) {
 | 
					 | 
				
			||||||
	r := e.Group("/base")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	r.GET("/provinces", h.GetAllProvinces)
 | 
					 | 
				
			||||||
	r.GET("/cities", h.GetAllCities)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -2,30 +2,26 @@ package benefactorhandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	authservice "git.gocasts.ir/ebhomengo/niki/service/auth/benefactor"
 | 
						authservice "git.gocasts.ir/ebhomengo/niki/service/auth/benefactor"
 | 
				
			||||||
	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"
 | 
				
			||||||
	benefactorvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/benefactor"
 | 
						benefactorvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/benefactor"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Handler struct {
 | 
					type Handler struct {
 | 
				
			||||||
	authConfig           authservice.Config
 | 
						authConfig    authservice.Config
 | 
				
			||||||
	authSvc              authservice.Service
 | 
						authSvc       authservice.Service
 | 
				
			||||||
	benefactorSvc        benefactorservice.Service
 | 
						benefactorSvc benefactorservice.Service
 | 
				
			||||||
	benefactorVld        benefactorvalidator.Validator
 | 
						benefactorVld benefactorvalidator.Validator
 | 
				
			||||||
	benefactorAddressSvc benefactoraddressservice.Service
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func New(authConfig authservice.Config,
 | 
					func New(authConfig authservice.Config,
 | 
				
			||||||
	authSvc authservice.Service,
 | 
						authSvc authservice.Service,
 | 
				
			||||||
	benefactorSvc benefactorservice.Service,
 | 
						benefactorSvc benefactorservice.Service,
 | 
				
			||||||
	benefactorVld benefactorvalidator.Validator,
 | 
						benefactorVld benefactorvalidator.Validator,
 | 
				
			||||||
	benefactorAddressSvc benefactoraddressservice.Service,
 | 
					 | 
				
			||||||
) Handler {
 | 
					) Handler {
 | 
				
			||||||
	return Handler{
 | 
						return Handler{
 | 
				
			||||||
		authConfig:           authConfig,
 | 
							authConfig:    authConfig,
 | 
				
			||||||
		authSvc:              authSvc,
 | 
							authSvc:       authSvc,
 | 
				
			||||||
		benefactorSvc:        benefactorSvc,
 | 
							benefactorSvc: benefactorSvc,
 | 
				
			||||||
		benefactorVld:        benefactorVld,
 | 
							benefactorVld: benefactorVld,
 | 
				
			||||||
		benefactorAddressSvc: benefactorAddressSvc,
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,6 @@
 | 
				
			||||||
package benefactorhandler
 | 
					package benefactorhandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"git.gocasts.ir/ebhomengo/niki/delivery/http_server/middleware"
 | 
					 | 
				
			||||||
	"git.gocasts.ir/ebhomengo/niki/entity"
 | 
					 | 
				
			||||||
	"github.com/labstack/echo/v4"
 | 
						"github.com/labstack/echo/v4"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +9,4 @@ func (h Handler) SetRoutes(e *echo.Echo) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	r.POST("/send-otp", h.SendOtp)
 | 
						r.POST("/send-otp", h.SendOtp)
 | 
				
			||||||
	r.POST("/login-register", h.loginOrRegister)
 | 
						r.POST("/login-register", h.loginOrRegister)
 | 
				
			||||||
	r.POST("/address", h.AddAddress, middleware.Auth(h.authSvc, h.authConfig),
 | 
					 | 
				
			||||||
		middleware.BenefactorAuthorization(entity.UserBenefactorRole))
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,11 +10,12 @@ import (
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (h Handler) Add(c echo.Context) error {
 | 
					func (h Handler) Add(c echo.Context) error {
 | 
				
			||||||
	claims := claim.GetClaimsFromEchoContext(c)
 | 
						req := param.KindBoxReqAddRequest{}
 | 
				
			||||||
	req := param.KindBoxReqAddRequest{BenefactorID: claims.UserID}
 | 
					 | 
				
			||||||
	if bErr := c.Bind(&req); bErr != nil {
 | 
						if bErr := c.Bind(&req); bErr != nil {
 | 
				
			||||||
		return echo.NewHTTPError(http.StatusBadRequest)
 | 
							return echo.NewHTTPError(http.StatusBadRequest)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						claims := claim.GetClaimsFromEchoContext(c)
 | 
				
			||||||
 | 
						req.BenefactorID = claims.UserID
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if fieldErrors, err := h.benefactorKindBoxReqVld.ValidateAddRequest(req); err != nil {
 | 
						if fieldErrors, err := h.benefactorKindBoxReqVld.ValidateAddRequest(req); err != nil {
 | 
				
			||||||
		msg, code := httpmsg.Error(err)
 | 
							msg, code := httpmsg.Error(err)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ import (
 | 
				
			||||||
	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"
 | 
				
			||||||
	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"
 | 
				
			||||||
	benefactorbasehandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/base"
 | 
						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"
 | 
				
			||||||
	benefactorkindboxreqhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/kind_box_req"
 | 
						benefactorkindboxreqhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/kind_box_req"
 | 
				
			||||||
	adminservice "git.gocasts.ir/ebhomengo/niki/service/admin/admin"
 | 
						adminservice "git.gocasts.ir/ebhomengo/niki/service/admin/admin"
 | 
				
			||||||
| 
						 | 
					@ -18,6 +18,7 @@ import (
 | 
				
			||||||
	benefactorkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box_req"
 | 
						benefactorkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box_req"
 | 
				
			||||||
	adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin"
 | 
						adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin"
 | 
				
			||||||
	adminkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box_req"
 | 
						adminkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box_req"
 | 
				
			||||||
 | 
						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"
 | 
				
			||||||
	benefactorkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/kind_box_req"
 | 
						benefactorkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/kind_box_req"
 | 
				
			||||||
	echo "github.com/labstack/echo/v4"
 | 
						echo "github.com/labstack/echo/v4"
 | 
				
			||||||
| 
						 | 
					@ -29,7 +30,7 @@ type Server struct {
 | 
				
			||||||
	Router                      *echo.Echo
 | 
						Router                      *echo.Echo
 | 
				
			||||||
	benefactorHandler           benefactorhandler.Handler
 | 
						benefactorHandler           benefactorhandler.Handler
 | 
				
			||||||
	benefactorKindBoxReqHandler benefactorkindboxreqhandler.Handler
 | 
						benefactorKindBoxReqHandler benefactorkindboxreqhandler.Handler
 | 
				
			||||||
	benefactorBaseHandler       benefactorbasehandler.Handler
 | 
						benefactorAddressHandler    benefactoraddresshandler.Handler
 | 
				
			||||||
	adminHandler                adminhandler.Handler
 | 
						adminHandler                adminhandler.Handler
 | 
				
			||||||
	adminKindBoxReqHandler      adminkindboxreqhandler.Handler
 | 
						adminKindBoxReqHandler      adminkindboxreqhandler.Handler
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -42,6 +43,7 @@ func New(
 | 
				
			||||||
	benefactorKindBoxReqSvc benefactorkindboxreqservice.Service,
 | 
						benefactorKindBoxReqSvc benefactorkindboxreqservice.Service,
 | 
				
			||||||
	benefactorKindBoxReqVld benefactorkindboxreqvalidator.Validator,
 | 
						benefactorKindBoxReqVld benefactorkindboxreqvalidator.Validator,
 | 
				
			||||||
	benefactorAddressSvc benefactoraddressservice.Service,
 | 
						benefactorAddressSvc benefactoraddressservice.Service,
 | 
				
			||||||
 | 
						benefactorAddressVld benefactoraddressvalidator.Validator,
 | 
				
			||||||
	adminSvc adminservice.Service,
 | 
						adminSvc adminservice.Service,
 | 
				
			||||||
	adminVld adminvalidator.Validator,
 | 
						adminVld adminvalidator.Validator,
 | 
				
			||||||
	adminAuthSvc adminauthservice.Service,
 | 
						adminAuthSvc adminauthservice.Service,
 | 
				
			||||||
| 
						 | 
					@ -51,9 +53,9 @@ func New(
 | 
				
			||||||
	return Server{
 | 
						return Server{
 | 
				
			||||||
		Router:                      echo.New(),
 | 
							Router:                      echo.New(),
 | 
				
			||||||
		config:                      cfg,
 | 
							config:                      cfg,
 | 
				
			||||||
		benefactorHandler:           benefactorhandler.New(cfg.Auth, authSvc, benefactorSvc, benefactorVld, benefactorAddressSvc),
 | 
							benefactorHandler:           benefactorhandler.New(cfg.Auth, authSvc, benefactorSvc, benefactorVld),
 | 
				
			||||||
		benefactorKindBoxReqHandler: benefactorkindboxreqhandler.New(cfg.Auth, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld),
 | 
							benefactorKindBoxReqHandler: benefactorkindboxreqhandler.New(cfg.Auth, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld),
 | 
				
			||||||
		benefactorBaseHandler:       benefactorbasehandler.New(benefactorAddressSvc),
 | 
							benefactorAddressHandler:    benefactoraddresshandler.New(cfg.Auth, authSvc, benefactorAddressSvc, benefactorAddressVld),
 | 
				
			||||||
		adminHandler:                adminhandler.New(cfg.AdminAuth, adminAuthSvc, adminSvc, adminVld),
 | 
							adminHandler:                adminhandler.New(cfg.AdminAuth, adminAuthSvc, adminSvc, adminVld),
 | 
				
			||||||
		adminKindBoxReqHandler:      adminkindboxreqhandler.New(cfg.Auth, authSvc, adminKinBoxReqSvc, adminKinBoxReqVld),
 | 
							adminKindBoxReqHandler:      adminkindboxreqhandler.New(cfg.Auth, authSvc, adminKinBoxReqSvc, adminKinBoxReqVld),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -68,7 +70,7 @@ func (s Server) Serve() {
 | 
				
			||||||
	s.Router.GET("/health-check", s.healthCheck)
 | 
						s.Router.GET("/health-check", s.healthCheck)
 | 
				
			||||||
	s.benefactorHandler.SetRoutes(s.Router)
 | 
						s.benefactorHandler.SetRoutes(s.Router)
 | 
				
			||||||
	s.benefactorKindBoxReqHandler.SetRoutes(s.Router)
 | 
						s.benefactorKindBoxReqHandler.SetRoutes(s.Router)
 | 
				
			||||||
	s.benefactorBaseHandler.SetRoutes(s.Router)
 | 
						s.benefactorAddressHandler.SetRoutes(s.Router)
 | 
				
			||||||
	s.adminHandler.SetRoutes(s.Router)
 | 
						s.adminHandler.SetRoutes(s.Router)
 | 
				
			||||||
	s.adminKindBoxReqHandler.SetRoutes(s.Router)
 | 
						s.adminKindBoxReqHandler.SetRoutes(s.Router)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										27
									
								
								main.go
								
								
								
								
							
							
						
						
									
										27
									
								
								main.go
								
								
								
								
							| 
						 | 
					@ -24,6 +24,7 @@ import (
 | 
				
			||||||
	benefactorkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box_req"
 | 
						benefactorkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box_req"
 | 
				
			||||||
	adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin"
 | 
						adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin"
 | 
				
			||||||
	adminkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box_req"
 | 
						adminkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box_req"
 | 
				
			||||||
 | 
						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"
 | 
				
			||||||
	benefactorkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/kind_box_req"
 | 
						benefactorkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/kind_box_req"
 | 
				
			||||||
	_ "github.com/go-sql-driver/mysql"
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
| 
						 | 
					@ -35,10 +36,21 @@ func main() {
 | 
				
			||||||
	mgr := migrator.New(cfg.Mysql)
 | 
						mgr := migrator.New(cfg.Mysql)
 | 
				
			||||||
	mgr.Up()
 | 
						mgr.Up()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	authSvc, benefactorSvc, benefactorVld, benefactorKindBoxReqSvc, benefactorKindBoxReqVld, benefactorAddressSvc,
 | 
						authSvc,
 | 
				
			||||||
		adminSvc, adminVld, adminAuthSvc, adminKindBoxReqSvc, adminKindBoxReqVld := setupServices(cfg)
 | 
							benefactorSvc,
 | 
				
			||||||
 | 
							benefactorVld,
 | 
				
			||||||
 | 
							benefactorKindBoxReqSvc,
 | 
				
			||||||
 | 
							benefactorKindBoxReqVld,
 | 
				
			||||||
 | 
							benefactorAddressSvc,
 | 
				
			||||||
 | 
							benefactorAddressVld,
 | 
				
			||||||
 | 
							adminSvc,
 | 
				
			||||||
 | 
							adminVld,
 | 
				
			||||||
 | 
							adminAuthSvc,
 | 
				
			||||||
 | 
							adminKindBoxReqSvc,
 | 
				
			||||||
 | 
							adminKindBoxReqVld := setupServices(cfg)
 | 
				
			||||||
	server := httpserver.New(cfg, benefactorSvc, benefactorVld, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld,
 | 
						server := httpserver.New(cfg, benefactorSvc, benefactorVld, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld,
 | 
				
			||||||
		benefactorAddressSvc, adminSvc, adminVld, adminAuthSvc, adminKindBoxReqSvc, adminKindBoxReqVld)
 | 
							benefactorAddressSvc, benefactorAddressVld, adminSvc, adminVld, adminAuthSvc, adminKindBoxReqSvc, adminKindBoxReqVld)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	server.Serve()
 | 
						server.Serve()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,8 +58,12 @@ func main() {
 | 
				
			||||||
func setupServices(cfg config.Config) (
 | 
					func setupServices(cfg config.Config) (
 | 
				
			||||||
	authSvc authservice.Service, benefactorSvc benefactorservice.Service, benefactorVld benefactorvalidator.Validator,
 | 
						authSvc authservice.Service, benefactorSvc benefactorservice.Service, benefactorVld benefactorvalidator.Validator,
 | 
				
			||||||
	benefactorKindBoxReqSvc benefactorkindboxreqservice.Service, benefactorKindBoxReqVld benefactorkindboxreqvalidator.Validator,
 | 
						benefactorKindBoxReqSvc benefactorkindboxreqservice.Service, benefactorKindBoxReqVld benefactorkindboxreqvalidator.Validator,
 | 
				
			||||||
	benefactorAddressSvc benefactoraddressservice.Service, adminSvc adminservice.Service, adminVld adminvalidator.Validator, adminAuthSvc adminauthservice.Service,
 | 
						benefactorAddressSvc benefactoraddressservice.Service,
 | 
				
			||||||
 | 
						benefactorAddressVld benefactoraddressvalidator.Validator,
 | 
				
			||||||
 | 
						adminSvc adminservice.Service, adminVld adminvalidator.Validator,
 | 
				
			||||||
 | 
						adminAuthSvc adminauthservice.Service,
 | 
				
			||||||
	adminKindBoxReqSvc adminkindboxreqservice.Service, adminKindBoxReqVld adminkindboxreqvalidator.Validator,
 | 
						adminKindBoxReqSvc adminkindboxreqservice.Service, adminKindBoxReqVld adminkindboxreqvalidator.Validator,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
) {
 | 
					) {
 | 
				
			||||||
	authSvc = authservice.New(cfg.Auth)
 | 
						authSvc = authservice.New(cfg.Auth)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,7 +79,8 @@ func setupServices(cfg config.Config) (
 | 
				
			||||||
	benefactorSvc = benefactorservice.New(cfg.BenefactorSvc, RedisOtp, otpSmsProvider, authGenerator, benefactorMysql)
 | 
						benefactorSvc = benefactorservice.New(cfg.BenefactorSvc, RedisOtp, otpSmsProvider, authGenerator, benefactorMysql)
 | 
				
			||||||
	benefactorAddressMysql := mysqladdress.New(MysqlRepo)
 | 
						benefactorAddressMysql := mysqladdress.New(MysqlRepo)
 | 
				
			||||||
	benefactorAddressSvc = benefactoraddressservice.New(benefactorAddressMysql)
 | 
						benefactorAddressSvc = benefactoraddressservice.New(benefactorAddressMysql)
 | 
				
			||||||
	benefactorVld = benefactorvalidator.New(benefactorSvc, benefactorAddressSvc)
 | 
						benefactorAddressVld = benefactoraddressvalidator.New(benefactorSvc, benefactorAddressMysql)
 | 
				
			||||||
 | 
						benefactorVld = benefactorvalidator.New()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	benefactorKindBoxReqMysql := mysqlkindboxreq.New(MysqlRepo)
 | 
						benefactorKindBoxReqMysql := mysqlkindboxreq.New(MysqlRepo)
 | 
				
			||||||
	benefactorKindBoxReqSvc = benefactorkindboxreqservice.New(benefactorKindBoxReqMysql)
 | 
						benefactorKindBoxReqSvc = benefactorkindboxreqservice.New(benefactorKindBoxReqMysql)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +0,0 @@
 | 
				
			||||||
package addressparam
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type CityExistByIDRequest struct {
 | 
					 | 
				
			||||||
	ID uint
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
type CityExistByIDResponse struct {
 | 
					 | 
				
			||||||
	Existed bool
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,8 +0,0 @@
 | 
				
			||||||
package addressparam
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type ProvinceExistByIDRequest struct {
 | 
					 | 
				
			||||||
	ID uint
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
type ProvinceExistByIDResponse struct {
 | 
					 | 
				
			||||||
	Existed bool
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,19 +0,0 @@
 | 
				
			||||||
package benefactoraddressservice
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"context"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
 | 
					 | 
				
			||||||
	richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (s Service) CityExistByID(ctx context.Context, req addressparam.CityExistByIDRequest) (addressparam.CityExistByIDResponse, error) {
 | 
					 | 
				
			||||||
	const op = "benefactoraddressservice.CityExistByID"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	isExisted, err := s.repo.IsExistCityByID(ctx, req.ID)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return addressparam.CityExistByIDResponse{}, richerror.New(op).WithErr(err).WithKind(richerror.KindUnexpected)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return addressparam.CityExistByIDResponse{Existed: isExisted}, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,19 +0,0 @@
 | 
				
			||||||
package benefactoraddressservice
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"context"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
 | 
					 | 
				
			||||||
	richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (s Service) ProvinceExistByID(ctx context.Context, req addressparam.ProvinceExistByIDRequest) (addressparam.ProvinceExistByIDResponse, error) {
 | 
					 | 
				
			||||||
	const op = "benefactoraddressservice.ProvinceExistByID"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	isExisted, err := s.repo.IsExistProvinceByID(ctx, req.ID)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return addressparam.ProvinceExistByIDResponse{}, richerror.New(op).WithErr(err).WithKind(richerror.KindUnexpected)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return addressparam.ProvinceExistByIDResponse{Existed: isExisted}, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -11,8 +11,6 @@ type Repository interface {
 | 
				
			||||||
	GetAddressByID(ctx context.Context, id uint) (*entity.Address, error)
 | 
						GetAddressByID(ctx context.Context, id uint) (*entity.Address, error)
 | 
				
			||||||
	GetAllProvinces(ctx context.Context) ([]entity.Province, error)
 | 
						GetAllProvinces(ctx context.Context) ([]entity.Province, error)
 | 
				
			||||||
	GetAllCities(ctx context.Context) ([]entity.City, error)
 | 
						GetAllCities(ctx context.Context) ([]entity.City, error)
 | 
				
			||||||
	IsExistProvinceByID(ctx context.Context, id uint) (bool, error)
 | 
					 | 
				
			||||||
	IsExistCityByID(ctx context.Context, id uint) (bool, error)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Service struct {
 | 
					type Service struct {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ func (v Validator) ValidateLoginWithPhoneNumberRequest(req adminserviceparam.Log
 | 
				
			||||||
	if err := validation.ValidateStruct(&req,
 | 
						if err := validation.ValidateStruct(&req,
 | 
				
			||||||
		// TODO - add regex
 | 
							// TODO - add regex
 | 
				
			||||||
		validation.Field(&req.Password, validation.Required, validation.NotNil,
 | 
							validation.Field(&req.Password, validation.Required, validation.NotNil,
 | 
				
			||||||
			validation.Length(8, 0)),
 | 
								validation.Length(minLengthPassword, maxLengthPassword)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		validation.Field(&req.PhoneNumber,
 | 
							validation.Field(&req.PhoneNumber,
 | 
				
			||||||
			validation.Required,
 | 
								validation.Required,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,13 +16,13 @@ func (v Validator) ValidateRegisterRequest(req adminserviceparam.RegisterRequest
 | 
				
			||||||
	if err := validation.ValidateStruct(&req,
 | 
						if err := validation.ValidateStruct(&req,
 | 
				
			||||||
		// TODO - add length of code config from benefactor config
 | 
							// TODO - add length of code config from benefactor config
 | 
				
			||||||
		validation.Field(&req.FirstName,
 | 
							validation.Field(&req.FirstName,
 | 
				
			||||||
			validation.Length(3, 40)),
 | 
								validation.Length(minLengthFirstName, maxLengthFirstName)),
 | 
				
			||||||
		validation.Field(&req.LastName,
 | 
							validation.Field(&req.LastName,
 | 
				
			||||||
			validation.Length(3, 40)),
 | 
								validation.Length(minLengthLastName, maxLengthLastName)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// TODO - add regex
 | 
							// TODO - add regex
 | 
				
			||||||
		validation.Field(&req.Password, validation.Required, validation.NotNil,
 | 
							validation.Field(&req.Password, validation.Required, validation.NotNil,
 | 
				
			||||||
			validation.Length(8, 0)),
 | 
								validation.Length(minLengthPassword, maxLengthPassword)),
 | 
				
			||||||
		validation.Field(&req.Gender, validation.By(v.IsGenderValid)),
 | 
							validation.Field(&req.Gender, validation.By(v.IsGenderValid)),
 | 
				
			||||||
		validation.Field(&req.Role, validation.By(v.IsRoleValid), validation.Required),
 | 
							validation.Field(&req.Role, validation.By(v.IsRoleValid), validation.Required),
 | 
				
			||||||
		validation.Field(&req.Status, validation.By(v.IsStatusValid), validation.Required),
 | 
							validation.Field(&req.Status, validation.By(v.IsStatusValid), validation.Required),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,13 @@ import (
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	phoneNumberRegex = "^09\\d{9}$"
 | 
						phoneNumberRegex   = "^09\\d{9}$"
 | 
				
			||||||
 | 
						minLengthFirstName = 3
 | 
				
			||||||
 | 
						maxLengthFirstName = 40
 | 
				
			||||||
 | 
						minLengthLastName  = 3
 | 
				
			||||||
 | 
						maxLengthLastName  = 40
 | 
				
			||||||
 | 
						minLengthPassword  = 8
 | 
				
			||||||
 | 
						maxLengthPassword  = 32
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Repository interface {
 | 
					type Repository interface {
 | 
				
			||||||
| 
						 | 
					@ -36,6 +42,7 @@ func (v Validator) doesAdminExistByPhoneNumber(value interface{}) error {
 | 
				
			||||||
	if !adminExisted {
 | 
						if !adminExisted {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgPhoneNumberOrPassIsIncorrect)
 | 
							return fmt.Errorf(errmsg.ErrorMsgPhoneNumberOrPassIsIncorrect)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,6 +58,7 @@ func (v Validator) IsPhoneNumberUnique(value interface{}) error {
 | 
				
			||||||
	if adminExisted {
 | 
						if adminExisted {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgPhoneNumberIsNotUnique)
 | 
							return fmt.Errorf(errmsg.ErrorMsgPhoneNumberIsNotUnique)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,6 +74,7 @@ func (v Validator) doesAdminExistByEmail(value interface{}) error {
 | 
				
			||||||
	if adminExisted {
 | 
						if adminExisted {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgPhoneNumberIsNotUnique)
 | 
							return fmt.Errorf(errmsg.ErrorMsgPhoneNumberIsNotUnique)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -75,7 +84,7 @@ func (v Validator) IsRoleValid(value interface{}) error {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
							return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if isValid := role.IsValid(); isValid != true {
 | 
						if isValid := role.IsValid(); !isValid {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
							return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,7 +100,7 @@ func (v Validator) IsGenderValid(value interface{}) error {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
							return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if isValid := gender.IsValid(); isValid != true {
 | 
						if isValid := gender.IsValid(); !isValid {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
							return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,7 +113,7 @@ func (v Validator) IsStatusValid(value interface{}) error {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
							return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if isValid := status.IsValid(); isValid != true {
 | 
						if isValid := status.IsValid(); !isValid {
 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
							return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
package benefactorvalidator
 | 
					package benefactoraddressvalidator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,70 @@
 | 
				
			||||||
 | 
					package benefactoraddressvalidator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						param "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactore"
 | 
				
			||||||
 | 
						errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type BenefactorSvc interface {
 | 
				
			||||||
 | 
						BenefactorExistByID(ctx context.Context, request param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					type Repository interface {
 | 
				
			||||||
 | 
						IsExistCityByID(ctx context.Context, id uint) (bool, error)
 | 
				
			||||||
 | 
						IsExistProvinceByID(ctx context.Context, id uint) (bool, error)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					type Validator struct {
 | 
				
			||||||
 | 
						benefactorSvc BenefactorSvc
 | 
				
			||||||
 | 
						repository    Repository
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func New(benefactorSvc BenefactorSvc, repository Repository) Validator {
 | 
				
			||||||
 | 
						return Validator{benefactorSvc: benefactorSvc, repository: repository}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (v Validator) doesBenefactorExist(value interface{}) error {
 | 
				
			||||||
 | 
						benefactorID, ok := value.(uint)
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						_, err := v.benefactorSvc.BenefactorExistByID(context.Background(), param.BenefactorExistByIDRequest{ID: benefactorID})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// TODO: check benefactor ID given from user most check with claims (benefactorID)
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (v Validator) doesProvinceExist(value interface{}) error {
 | 
				
			||||||
 | 
						provinceID, ok := value.(uint)
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						isExisted, err := v.repository.IsExistProvinceByID(context.Background(), provinceID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !isExisted {
 | 
				
			||||||
 | 
							return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (v Validator) doesCityExist(value interface{}) error {
 | 
				
			||||||
 | 
						cityID, ok := value.(uint)
 | 
				
			||||||
 | 
						if !ok {
 | 
				
			||||||
 | 
							return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						isExisted, err := v.repository.IsExistCityByID(context.Background(), cityID)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !isExisted {
 | 
				
			||||||
 | 
							return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1,75 +1,11 @@
 | 
				
			||||||
package benefactorvalidator
 | 
					package benefactorvalidator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"context"
 | 
					 | 
				
			||||||
	"fmt"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
 | 
					 | 
				
			||||||
	param "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactore"
 | 
					 | 
				
			||||||
	errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	phoneNumberRegex = "^09\\d{9}$"
 | 
						phoneNumberRegex = "^09\\d{9}$"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type BenefactorSvc interface {
 | 
					type Validator struct{}
 | 
				
			||||||
	BenefactorExistByID(ctx context.Context, request param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
type BenefactorAddressSvc interface {
 | 
					 | 
				
			||||||
	ProvinceExistByID(ctx context.Context, request addressparam.ProvinceExistByIDRequest) (addressparam.ProvinceExistByIDResponse, error)
 | 
					 | 
				
			||||||
	CityExistByID(ctx context.Context, request addressparam.CityExistByIDRequest) (addressparam.CityExistByIDResponse, error)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
type Validator struct {
 | 
					 | 
				
			||||||
	benefactorSvc        BenefactorSvc
 | 
					 | 
				
			||||||
	benefactorAddressSvc BenefactorAddressSvc
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
func New(benefactorSvc BenefactorSvc, benefactorAddressSvc BenefactorAddressSvc) Validator {
 | 
					func New() Validator {
 | 
				
			||||||
	return Validator{benefactorSvc: benefactorSvc, benefactorAddressSvc: benefactorAddressSvc}
 | 
						return Validator{}
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (v Validator) doesBenefactorExist(value interface{}) error {
 | 
					 | 
				
			||||||
	benefactorID, ok := value.(uint)
 | 
					 | 
				
			||||||
	if !ok {
 | 
					 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	_, err := v.benefactorSvc.BenefactorExistByID(context.Background(), param.BenefactorExistByIDRequest{ID: benefactorID})
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (v Validator) doesProvinceExist(value interface{}) error {
 | 
					 | 
				
			||||||
	provinceID, ok := value.(uint)
 | 
					 | 
				
			||||||
	if !ok {
 | 
					 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	province, err := v.benefactorAddressSvc.ProvinceExistByID(context.Background(), addressparam.ProvinceExistByIDRequest{ID: provinceID})
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if !province.Existed {
 | 
					 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (v Validator) doesCityExist(value interface{}) error {
 | 
					 | 
				
			||||||
	cityID, ok := value.(uint)
 | 
					 | 
				
			||||||
	if !ok {
 | 
					 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	city, err := v.benefactorAddressSvc.CityExistByID(context.Background(), addressparam.CityExistByIDRequest{ID: cityID})
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if !city.Existed {
 | 
					 | 
				
			||||||
		return fmt.Errorf(errmsg.ErrorMsgNotFound)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue