forked from ebhomengo/niki
				
			pull from dev
This commit is contained in:
		
						commit
						79be4d0a0e
					
				| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package benefactorhandler
 | 
			
		||||
package benefactoraddresshandler
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
| 
						 | 
				
			
			@ -10,13 +10,14 @@ import (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
func (h Handler) AddAddress(c echo.Context) error {
 | 
			
		||||
	claims := claim.GetClaimsFromEchoContext(c)
 | 
			
		||||
	req := param.BenefactorAddAddressRequest{BenefactorID: claims.UserID}
 | 
			
		||||
	req := param.BenefactorAddAddressRequest{}
 | 
			
		||||
	if bErr := c.Bind(&req); bErr != nil {
 | 
			
		||||
		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)
 | 
			
		||||
 | 
			
		||||
		return c.JSON(code, echo.Map{
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +25,7 @@ func (h Handler) AddAddress(c echo.Context) error {
 | 
			
		|||
			"errors":  fieldErrors,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	resp, sErr := h.benefactorAddressSvc.Add(c.Request().Context(), req)
 | 
			
		||||
	resp, sErr := h.addressSvc.Add(c.Request().Context(), req)
 | 
			
		||||
 | 
			
		||||
	if sErr != nil {
 | 
			
		||||
		msg, code := httpmsg.Error(sErr)
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package benefactorbasehandler
 | 
			
		||||
package benefactoraddresshandler
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package benefactorbasehandler
 | 
			
		||||
package benefactoraddresshandler
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"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,7 +2,6 @@ package benefactorhandler
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	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"
 | 
			
		||||
	benefactorvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/benefactor"
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -12,20 +11,17 @@ type Handler struct {
 | 
			
		|||
	authSvc       authservice.Service
 | 
			
		||||
	benefactorSvc benefactorservice.Service
 | 
			
		||||
	benefactorVld benefactorvalidator.Validator
 | 
			
		||||
	benefactorAddressSvc benefactoraddressservice.Service
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func New(authConfig authservice.Config,
 | 
			
		||||
	authSvc authservice.Service,
 | 
			
		||||
	benefactorSvc benefactorservice.Service,
 | 
			
		||||
	benefactorVld benefactorvalidator.Validator,
 | 
			
		||||
	benefactorAddressSvc benefactoraddressservice.Service,
 | 
			
		||||
) Handler {
 | 
			
		||||
	return Handler{
 | 
			
		||||
		authConfig:    authConfig,
 | 
			
		||||
		authSvc:       authSvc,
 | 
			
		||||
		benefactorSvc: benefactorSvc,
 | 
			
		||||
		benefactorVld: benefactorVld,
 | 
			
		||||
		benefactorAddressSvc: benefactorAddressSvc,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,6 @@
 | 
			
		|||
package benefactorhandler
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.gocasts.ir/ebhomengo/niki/delivery/http_server/middleware"
 | 
			
		||||
	"git.gocasts.ir/ebhomengo/niki/entity"
 | 
			
		||||
	"github.com/labstack/echo/v4"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -11,6 +9,4 @@ func (h Handler) SetRoutes(e *echo.Echo) {
 | 
			
		|||
 | 
			
		||||
	r.POST("/send-otp", h.SendOtp)
 | 
			
		||||
	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 {
 | 
			
		||||
	claims := claim.GetClaimsFromEchoContext(c)
 | 
			
		||||
	req := param.KindBoxReqAddRequest{BenefactorID: claims.UserID}
 | 
			
		||||
	req := param.KindBoxReqAddRequest{}
 | 
			
		||||
	if bErr := c.Bind(&req); bErr != nil {
 | 
			
		||||
		return echo.NewHTTPError(http.StatusBadRequest)
 | 
			
		||||
	}
 | 
			
		||||
	claims := claim.GetClaimsFromEchoContext(c)
 | 
			
		||||
	req.BenefactorID = claims.UserID
 | 
			
		||||
 | 
			
		||||
	if fieldErrors, err := h.benefactorKindBoxReqVld.ValidateAddRequest(req); err != nil {
 | 
			
		||||
		msg, code := httpmsg.Error(err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ import (
 | 
			
		|||
	config "git.gocasts.ir/ebhomengo/niki/config"
 | 
			
		||||
	adminhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/admin"
 | 
			
		||||
	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"
 | 
			
		||||
	benefactorkindboxreqhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/kind_box_req"
 | 
			
		||||
	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"
 | 
			
		||||
	adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin"
 | 
			
		||||
	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"
 | 
			
		||||
	benefactorkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/kind_box_req"
 | 
			
		||||
	echo "github.com/labstack/echo/v4"
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +30,7 @@ type Server struct {
 | 
			
		|||
	Router                      *echo.Echo
 | 
			
		||||
	benefactorHandler           benefactorhandler.Handler
 | 
			
		||||
	benefactorKindBoxReqHandler benefactorkindboxreqhandler.Handler
 | 
			
		||||
	benefactorBaseHandler       benefactorbasehandler.Handler
 | 
			
		||||
	benefactorAddressHandler    benefactoraddresshandler.Handler
 | 
			
		||||
	adminHandler                adminhandler.Handler
 | 
			
		||||
	adminKindBoxReqHandler      adminkindboxreqhandler.Handler
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -42,6 +43,7 @@ func New(
 | 
			
		|||
	benefactorKindBoxReqSvc benefactorkindboxreqservice.Service,
 | 
			
		||||
	benefactorKindBoxReqVld benefactorkindboxreqvalidator.Validator,
 | 
			
		||||
	benefactorAddressSvc benefactoraddressservice.Service,
 | 
			
		||||
	benefactorAddressVld benefactoraddressvalidator.Validator,
 | 
			
		||||
	adminSvc adminservice.Service,
 | 
			
		||||
	adminVld adminvalidator.Validator,
 | 
			
		||||
	adminAuthSvc adminauthservice.Service,
 | 
			
		||||
| 
						 | 
				
			
			@ -51,9 +53,9 @@ func New(
 | 
			
		|||
	return Server{
 | 
			
		||||
		Router:                      echo.New(),
 | 
			
		||||
		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),
 | 
			
		||||
		benefactorBaseHandler:       benefactorbasehandler.New(benefactorAddressSvc),
 | 
			
		||||
		benefactorAddressHandler:    benefactoraddresshandler.New(cfg.Auth, authSvc, benefactorAddressSvc, benefactorAddressVld),
 | 
			
		||||
		adminHandler:                adminhandler.New(cfg.AdminAuth, adminAuthSvc, adminSvc, adminVld),
 | 
			
		||||
		adminKindBoxReqHandler:      adminkindboxreqhandler.New(cfg.Auth, authSvc, adminKinBoxReqSvc, adminKinBoxReqVld),
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +70,7 @@ func (s Server) Serve() {
 | 
			
		|||
	s.Router.GET("/health-check", s.healthCheck)
 | 
			
		||||
	s.benefactorHandler.SetRoutes(s.Router)
 | 
			
		||||
	s.benefactorKindBoxReqHandler.SetRoutes(s.Router)
 | 
			
		||||
	s.benefactorBaseHandler.SetRoutes(s.Router)
 | 
			
		||||
	s.benefactorAddressHandler.SetRoutes(s.Router)
 | 
			
		||||
	s.adminHandler.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"
 | 
			
		||||
	adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin"
 | 
			
		||||
	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"
 | 
			
		||||
	benefactorkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/kind_box_req"
 | 
			
		||||
	_ "github.com/go-sql-driver/mysql"
 | 
			
		||||
| 
						 | 
				
			
			@ -35,10 +36,21 @@ func main() {
 | 
			
		|||
	mgr := migrator.New(cfg.Mysql)
 | 
			
		||||
	mgr.Up()
 | 
			
		||||
 | 
			
		||||
	authSvc, benefactorSvc, benefactorVld, benefactorKindBoxReqSvc, benefactorKindBoxReqVld, benefactorAddressSvc,
 | 
			
		||||
		adminSvc, adminVld, adminAuthSvc, adminKindBoxReqSvc, adminKindBoxReqVld := setupServices(cfg)
 | 
			
		||||
	authSvc,
 | 
			
		||||
		benefactorSvc,
 | 
			
		||||
		benefactorVld,
 | 
			
		||||
		benefactorKindBoxReqSvc,
 | 
			
		||||
		benefactorKindBoxReqVld,
 | 
			
		||||
		benefactorAddressSvc,
 | 
			
		||||
		benefactorAddressVld,
 | 
			
		||||
		adminSvc,
 | 
			
		||||
		adminVld,
 | 
			
		||||
		adminAuthSvc,
 | 
			
		||||
		adminKindBoxReqSvc,
 | 
			
		||||
		adminKindBoxReqVld := setupServices(cfg)
 | 
			
		||||
	server := httpserver.New(cfg, benefactorSvc, benefactorVld, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld,
 | 
			
		||||
		benefactorAddressSvc, adminSvc, adminVld, adminAuthSvc, adminKindBoxReqSvc, adminKindBoxReqVld)
 | 
			
		||||
		benefactorAddressSvc, benefactorAddressVld, adminSvc, adminVld, adminAuthSvc, adminKindBoxReqSvc, adminKindBoxReqVld)
 | 
			
		||||
 | 
			
		||||
	server.Serve()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -46,8 +58,12 @@ func main() {
 | 
			
		|||
func setupServices(cfg config.Config) (
 | 
			
		||||
	authSvc authservice.Service, benefactorSvc benefactorservice.Service, benefactorVld benefactorvalidator.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,
 | 
			
		||||
 | 
			
		||||
) {
 | 
			
		||||
	authSvc = authservice.New(cfg.Auth)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +79,8 @@ func setupServices(cfg config.Config) (
 | 
			
		|||
	benefactorSvc = benefactorservice.New(cfg.BenefactorSvc, RedisOtp, otpSmsProvider, authGenerator, benefactorMysql)
 | 
			
		||||
	benefactorAddressMysql := mysqladdress.New(MysqlRepo)
 | 
			
		||||
	benefactorAddressSvc = benefactoraddressservice.New(benefactorAddressMysql)
 | 
			
		||||
	benefactorVld = benefactorvalidator.New(benefactorSvc, benefactorAddressSvc)
 | 
			
		||||
	benefactorAddressVld = benefactoraddressvalidator.New(benefactorSvc, benefactorAddressMysql)
 | 
			
		||||
	benefactorVld = benefactorvalidator.New()
 | 
			
		||||
 | 
			
		||||
	benefactorKindBoxReqMysql := mysqlkindboxreq.New(MysqlRepo)
 | 
			
		||||
	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)
 | 
			
		||||
	GetAllProvinces(ctx context.Context) ([]entity.Province, 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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ func (v Validator) ValidateLoginWithPhoneNumberRequest(req adminserviceparam.Log
 | 
			
		|||
	if err := validation.ValidateStruct(&req,
 | 
			
		||||
		// TODO - add regex
 | 
			
		||||
		validation.Field(&req.Password, validation.Required, validation.NotNil,
 | 
			
		||||
			validation.Length(8, 0)),
 | 
			
		||||
			validation.Length(minLengthPassword, maxLengthPassword)),
 | 
			
		||||
 | 
			
		||||
		validation.Field(&req.PhoneNumber,
 | 
			
		||||
			validation.Required,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,13 +16,13 @@ func (v Validator) ValidateRegisterRequest(req adminserviceparam.RegisterRequest
 | 
			
		|||
	if err := validation.ValidateStruct(&req,
 | 
			
		||||
		// TODO - add length of code config from benefactor config
 | 
			
		||||
		validation.Field(&req.FirstName,
 | 
			
		||||
			validation.Length(3, 40)),
 | 
			
		||||
			validation.Length(minLengthFirstName, maxLengthFirstName)),
 | 
			
		||||
		validation.Field(&req.LastName,
 | 
			
		||||
			validation.Length(3, 40)),
 | 
			
		||||
			validation.Length(minLengthLastName, maxLengthLastName)),
 | 
			
		||||
 | 
			
		||||
		// TODO - add regex
 | 
			
		||||
		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.Role, validation.By(v.IsRoleValid), validation.Required),
 | 
			
		||||
		validation.Field(&req.Status, validation.By(v.IsStatusValid), validation.Required),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,12 @@ import (
 | 
			
		|||
 | 
			
		||||
const (
 | 
			
		||||
	phoneNumberRegex   = "^09\\d{9}$"
 | 
			
		||||
	minLengthFirstName = 3
 | 
			
		||||
	maxLengthFirstName = 40
 | 
			
		||||
	minLengthLastName  = 3
 | 
			
		||||
	maxLengthLastName  = 40
 | 
			
		||||
	minLengthPassword  = 8
 | 
			
		||||
	maxLengthPassword  = 32
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Repository interface {
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +42,7 @@ func (v Validator) doesAdminExistByPhoneNumber(value interface{}) error {
 | 
			
		|||
	if !adminExisted {
 | 
			
		||||
		return fmt.Errorf(errmsg.ErrorMsgPhoneNumberOrPassIsIncorrect)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -51,6 +58,7 @@ func (v Validator) IsPhoneNumberUnique(value interface{}) error {
 | 
			
		|||
	if adminExisted {
 | 
			
		||||
		return fmt.Errorf(errmsg.ErrorMsgPhoneNumberIsNotUnique)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +74,7 @@ func (v Validator) doesAdminExistByEmail(value interface{}) error {
 | 
			
		|||
	if adminExisted {
 | 
			
		||||
		return fmt.Errorf(errmsg.ErrorMsgPhoneNumberIsNotUnique)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +84,7 @@ func (v Validator) IsRoleValid(value interface{}) error {
 | 
			
		|||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if isValid := role.IsValid(); isValid != true {
 | 
			
		||||
	if isValid := role.IsValid(); !isValid {
 | 
			
		||||
		return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +100,7 @@ func (v Validator) IsGenderValid(value interface{}) error {
 | 
			
		|||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if isValid := gender.IsValid(); isValid != true {
 | 
			
		||||
	if isValid := gender.IsValid(); !isValid {
 | 
			
		||||
		return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +113,7 @@ func (v Validator) IsStatusValid(value interface{}) error {
 | 
			
		|||
		return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if isValid := status.IsValid(); isValid != true {
 | 
			
		||||
	if isValid := status.IsValid(); !isValid {
 | 
			
		||||
		return fmt.Errorf(errmsg.ErrorMsgInvalidInput)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
package benefactorvalidator
 | 
			
		||||
package benefactoraddressvalidator
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"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
 | 
			
		||||
 | 
			
		||||
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 (
 | 
			
		||||
	phoneNumberRegex = "^09\\d{9}$"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type BenefactorSvc interface {
 | 
			
		||||
	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
 | 
			
		||||
}
 | 
			
		||||
type Validator struct{}
 | 
			
		||||
 | 
			
		||||
func New(benefactorSvc BenefactorSvc, benefactorAddressSvc BenefactorAddressSvc) Validator {
 | 
			
		||||
	return Validator{benefactorSvc: benefactorSvc, benefactorAddressSvc: benefactorAddressSvc}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
func New() Validator {
 | 
			
		||||
	return Validator{}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue