forked from ebhomengo/niki
				
			feat(service): Get all province
This commit is contained in:
		
							parent
							
								
									5c41903221
								
							
						
					
					
						commit
						3d9590000e
					
				| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					package benefactorbasehandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
 | 
				
			||||||
 | 
						httpmsg "git.gocasts.ir/ebhomengo/niki/pkg/http_msg"
 | 
				
			||||||
 | 
						"github.com/labstack/echo/v4"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h Handler) GetAllProvinces(c echo.Context) error {
 | 
				
			||||||
 | 
						var req addressparam.GetAllProvincesRequest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						listProvinces, err := h.addressSvc.GetAllProvinces(c.Request().Context(), req)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							msg, code := httpmsg.Error(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return echo.NewHTTPError(code, msg)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return c.JSON(http.StatusOK, listProvinces)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					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,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					package benefactorbasehandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "github.com/labstack/echo/v4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (h Handler) SetRoutes(e *echo.Echo) {
 | 
				
			||||||
 | 
						r := e.Group("/base")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						r.GET("/provinces", h.GetAllProvinces)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -4,9 +4,11 @@ import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config "git.gocasts.ir/ebhomengo/niki/config"
 | 
						config "git.gocasts.ir/ebhomengo/niki/config"
 | 
				
			||||||
 | 
						benefactorbasehandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/benefactor/base"
 | 
				
			||||||
	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"
 | 
				
			||||||
	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"
 | 
				
			||||||
	benefactorkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box_req"
 | 
						benefactorkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box_req"
 | 
				
			||||||
	benefactorvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/benefactor"
 | 
						benefactorvalidator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/benefactor"
 | 
				
			||||||
| 
						 | 
					@ -19,7 +21,8 @@ type Server struct {
 | 
				
			||||||
	config                      config.Config
 | 
						config                      config.Config
 | 
				
			||||||
	Router                      *echo.Echo
 | 
						Router                      *echo.Echo
 | 
				
			||||||
	benefactorHandler           benefactorhandler.Handler
 | 
						benefactorHandler           benefactorhandler.Handler
 | 
				
			||||||
	benefactorkindboxreqhandler benefactorkindboxreqhandler.Handler
 | 
						benefactorKindBoxReqHandler benefactorkindboxreqhandler.Handler
 | 
				
			||||||
 | 
						benefactorBaseHandler       benefactorbasehandler.Handler
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func New(
 | 
					func New(
 | 
				
			||||||
| 
						 | 
					@ -29,12 +32,14 @@ func New(
 | 
				
			||||||
	authSvc authservice.Service,
 | 
						authSvc authservice.Service,
 | 
				
			||||||
	benefactorKindBoxReqSvc benefactorkindboxreqservice.Service,
 | 
						benefactorKindBoxReqSvc benefactorkindboxreqservice.Service,
 | 
				
			||||||
	benefactorKindBoxReqVld benefactorkindboxreqvalidator.Validator,
 | 
						benefactorKindBoxReqVld benefactorkindboxreqvalidator.Validator,
 | 
				
			||||||
 | 
						benefactorAddressSvc benefactoraddressservice.Service,
 | 
				
			||||||
) Server {
 | 
					) Server {
 | 
				
			||||||
	return Server{
 | 
						return Server{
 | 
				
			||||||
		Router:                      echo.New(),
 | 
							Router:                      echo.New(),
 | 
				
			||||||
		config:                      cfg,
 | 
							config:                      cfg,
 | 
				
			||||||
		benefactorHandler:           benefactorhandler.New(cfg.Auth, benefactorSvc, benefactorVld),
 | 
							benefactorHandler:           benefactorhandler.New(cfg.Auth, benefactorSvc, benefactorVld),
 | 
				
			||||||
		benefactorkindboxreqhandler: benefactorkindboxreqhandler.New(cfg.Auth, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld),
 | 
							benefactorKindBoxReqHandler: benefactorkindboxreqhandler.New(cfg.Auth, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld),
 | 
				
			||||||
 | 
							benefactorBaseHandler:       benefactorbasehandler.New(benefactorAddressSvc),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,7 +51,8 @@ func (s Server) Serve() {
 | 
				
			||||||
	// Routes
 | 
						// Routes
 | 
				
			||||||
	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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Start server
 | 
						// Start server
 | 
				
			||||||
	address := fmt.Sprintf(":%d", s.config.HTTPServer.Port)
 | 
						address := fmt.Sprintf(":%d", s.config.HTTPServer.Port)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								main.go
								
								
								
								
							
							
						
						
									
										15
									
								
								main.go
								
								
								
								
							| 
						 | 
					@ -27,15 +27,16 @@ func main() {
 | 
				
			||||||
	mgr := migrator.New(cfg.Mysql)
 | 
						mgr := migrator.New(cfg.Mysql)
 | 
				
			||||||
	mgr.Up()
 | 
						mgr.Up()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	authSvc, benefactorSvc, benefactorVld, benefactorKindBoxReqSvc, benefactorKindBoxReqVld := setupServices(cfg)
 | 
						authSvc, benefactorSvc, benefactorVld, benefactorKindBoxReqSvc, benefactorKindBoxReqVld, benefactorAddressSvc := setupServices(cfg)
 | 
				
			||||||
	server := httpserver.New(cfg, benefactorSvc, benefactorVld, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld)
 | 
						server := httpserver.New(cfg, benefactorSvc, benefactorVld, authSvc, benefactorKindBoxReqSvc, benefactorKindBoxReqVld, benefactorAddressSvc)
 | 
				
			||||||
	server.Serve()
 | 
						server.Serve()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//nolint:nakedret // we are sure of this
 | 
					//nolint:nakedret,gocritic // we are sure of this
 | 
				
			||||||
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,
 | 
				
			||||||
) {
 | 
					) {
 | 
				
			||||||
	authSvc = authservice.New(cfg.Auth)
 | 
						authSvc = authservice.New(cfg.Auth)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,13 +53,13 @@ func setupServices(cfg config.Config) (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	benefactorVld = benefactorvalidator.New()
 | 
						benefactorVld = benefactorvalidator.New()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	benefactorkindBoxReqMysql := mysqlkindboxreq.New(MysqlRepo)
 | 
						benefactorKindBoxReqMysql := mysqlkindboxreq.New(MysqlRepo)
 | 
				
			||||||
	benefactorKindBoxReqSvc = benefactorkindboxreqservice.New(benefactorkindBoxReqMysql)
 | 
						benefactorKindBoxReqSvc = benefactorkindboxreqservice.New(benefactorKindBoxReqMysql)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	benefactorAddressMysql := mysqladdress.New(MysqlRepo)
 | 
						benefactorAddressMysql := mysqladdress.New(MysqlRepo)
 | 
				
			||||||
	benefactorAddressSvc := benefactoraddressservice.New(benefactorAddressMysql)
 | 
						benefactorAddressSvc = benefactoraddressservice.New(benefactorAddressMysql)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	benefactorKindBoxReqVld = benefactorkindboxreqvalidator.New(benefactorkindBoxReqMysql, benefactorSvc, benefactorAddressSvc)
 | 
						benefactorKindBoxReqVld = benefactorkindboxreqvalidator.New(benefactorKindBoxReqMysql, benefactorSvc, benefactorAddressSvc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					package addressparam
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import "git.gocasts.ir/ebhomengo/niki/entity"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type (
 | 
				
			||||||
 | 
						GetAllProvincesRequest  struct{}
 | 
				
			||||||
 | 
						GetAllProvincesResponse struct {
 | 
				
			||||||
 | 
							Provinces []entity.Province `json:"provinces"`
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					package mysqladdress
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.gocasts.ir/ebhomengo/niki/entity"
 | 
				
			||||||
 | 
						errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
 | 
				
			||||||
 | 
						richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
 | 
				
			||||||
 | 
						"git.gocasts.ir/ebhomengo/niki/repository/mysql"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (d DB) GetAllProvinces(ctx context.Context) ([]entity.Province, error) {
 | 
				
			||||||
 | 
						const op = "mysqladdress.IsExistAddressByID"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						provinces := make([]entity.Province, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rows, err := d.conn.Conn().QueryContext(ctx, `SELECT * FROM provinces;`)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, richerror.New(op).WithErr(err).
 | 
				
			||||||
 | 
								WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer rows.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for rows.Next() {
 | 
				
			||||||
 | 
							province, err := scanProvince(rows)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, richerror.New(op).WithErr(err).
 | 
				
			||||||
 | 
									WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							provinces = append(provinces, province)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if err := rows.Err(); err != nil {
 | 
				
			||||||
 | 
							return nil, richerror.New(op).WithErr(err).
 | 
				
			||||||
 | 
								WithMessage(errmsg.ErrorMsgSomethingWentWrong).WithKind(richerror.KindUnexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return provinces, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func scanProvince(scanner mysql.Scanner) (entity.Province, error) {
 | 
				
			||||||
 | 
						var createdAt time.Time
 | 
				
			||||||
 | 
						var province entity.Province
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err := scanner.Scan(&province.ID, &province.Name, &createdAt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return province, err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					-- +migrate Up
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (1, 'آذربایجان شرقی');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (2, 'آذربایجان غربی');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (3, 'اردبیل');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (4, 'اصفهان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (5, 'البرز');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (6, 'ایلام');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (7, 'بوشهر');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (8, 'تهران');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (9, 'چهارمحال و بختیاری');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (10, 'خراسان جنوبی');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (11, 'خراسان رضوی');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (12, 'خراسان شمالی');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (13, 'خوزستان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (14, 'زنجان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (15, 'سمنان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (16, 'سیستان و بلوچستان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (17, 'فارس');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (18, 'قزوین');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (19, 'قم');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (20, 'كردستان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (21, 'كرمان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (22, 'كرمانشاه');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (23, 'کهگیلویه و بویراحمد');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (24, 'گلستان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (25, 'گیلان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (26, 'لرستان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (27, 'مازندران');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (28, 'مركزی');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (29, 'هرمزگان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (30, 'همدان');
 | 
				
			||||||
 | 
					INSERT INTO `provinces` (`id`, `name`) VALUES (31, 'یزد');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- +migrate Down
 | 
				
			||||||
 | 
					DELETE FROM `provinces` WHERE id BETWEEN '1' AND '31';
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ import (
 | 
				
			||||||
type Repository interface {
 | 
					type Repository interface {
 | 
				
			||||||
	CreateBenefactorAddress(ctx context.Context, address entity.Address) (entity.Address, error)
 | 
						CreateBenefactorAddress(ctx context.Context, address entity.Address) (entity.Address, error)
 | 
				
			||||||
	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)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Service struct {
 | 
					type Service struct {
 | 
				
			||||||
| 
						 | 
					@ -50,3 +51,14 @@ func (s Service) AddressExistByID(ctx context.Context, req param.GetAddressByIDR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return param.GetAddressByIDResponse{Address: address}, nil
 | 
						return param.GetAddressByIDResponse{Address: address}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s Service) GetAllProvinces(ctx context.Context, _ param.GetAllProvincesRequest) (param.GetAllProvincesResponse, error) {
 | 
				
			||||||
 | 
						const op = "benefactoraddressservice.GetAllProvinces"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						provinces, err := s.repo.GetAllProvinces(ctx)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return param.GetAllProvincesResponse{}, richerror.New(op).WithErr(err).WithKind(richerror.KindUnexpected)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return param.GetAllProvincesResponse{Provinces: provinces}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue