diff --git a/adapter/sms_provider/kavenegar/notification/send.go b/adapter/sms_provider/kavenegar/notification/send.go index e36c091..3b97a6f 100644 --- a/adapter/sms_provider/kavenegar/notification/send.go +++ b/adapter/sms_provider/kavenegar/notification/send.go @@ -7,7 +7,8 @@ import ( ) func (a *Adapter) Send(phoneNumber, message string) { - const op = "kavenegarnotification.SendNotification" + const op = "kavenegarnotification.Send" + var params *kavenegar.MessageSendParam if _, err := a.adapter.Client().Message.Send(a.adapter.Config().Sender, []string{phoneNumber}, message, params); err != nil { //nolint diff --git a/config.yml b/config.yml index dce7f19..201a498 100644 --- a/config.yml +++ b/config.yml @@ -28,8 +28,8 @@ benefactor_service: length_of_otp_code: 5 kavenegar_sms_provider: - api_key: 68556765576F785033342F774C336A7A5A574C7863497457706656364B6848534E63373661736A676B65553D - sender: "" + api_key: insert_your_api_key + sender: insert_sender_number otp_template_new_user: ebhomeverify otp_template_registered_user: ebhomeverify diff --git a/delivery/http_server/admin/kind_box_req/accept.go b/delivery/http_server/admin/kind_box_req/accept.go index 0208912..ba69733 100644 --- a/delivery/http_server/admin/kind_box_req/accept.go +++ b/delivery/http_server/admin/kind_box_req/accept.go @@ -48,5 +48,6 @@ func (h Handler) Accept(c echo.Context) error { return echo.NewHTTPError(code, msg) } go h.notificationSvc.KindBoxReqAccepted(params.NotificationKindBoxReqAccepted{KindBoxReqID: req.ID}) + return c.JSON(http.StatusOK, resp) } diff --git a/delivery/http_server/server.go b/delivery/http_server/server.go index 064b379..f673a48 100644 --- a/delivery/http_server/server.go +++ b/delivery/http_server/server.go @@ -2,7 +2,6 @@ package httpserver import ( "fmt" - "git.gocasts.ir/ebhomengo/niki/service/notification" "git.gocasts.ir/ebhomengo/niki/config" adminhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/admin" @@ -24,6 +23,7 @@ import ( benefactorservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/benefactor" benefactorkindboxservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box" benefactorkindboxreqservice "git.gocasts.ir/ebhomengo/niki/service/benefactor/kind_box_req" + "git.gocasts.ir/ebhomengo/niki/service/notification" adminvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/admin" adminkindboxvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box" adminkindboxreqvalidator "git.gocasts.ir/ebhomengo/niki/validator/admin/kind_box_req" diff --git a/internal/initial/service.go b/internal/initial/service.go index eacb7c8..0e3d9be 100644 --- a/internal/initial/service.go +++ b/internal/initial/service.go @@ -41,6 +41,7 @@ type Services struct { func initSmsOtp(cfg config.Config) *kavenegarotp.Adapter { return kavenegarotp.New(smsprovider.New(cfg.KavenegarSmsProvider)) } + func initSmsNotification(cfg config.Config) *kavenegarnotification.Adapter { return kavenegarnotification.New(smsprovider.New(cfg.KavenegarSmsProvider)) } @@ -49,8 +50,8 @@ func InitAdminService(cfg config.Config, db *mysql.DB) adminservice.Service { return adminservice.New(InitAdminMysql(db), InitAdminAuthService(cfg)) } -func InitBenefactorForAdminService(db *mysql.DB) benefactorforadminservice.Service { - return benefactorforadminservice.New(InitAdminMysql(db)) +func InitBenefactorForAdminService(cfg config.Config, redisAdapter redis.Adapter, db *mysql.DB) benefactorforadminservice.Service { + return benefactorforadminservice.New(InitAdminMysql(db), InitBenefactorService(cfg, redisAdapter, db)) } func InitBenefactorService(cfg config.Config, redisAdapter redis.Adapter, db *mysql.DB) benefactorservice.Service { @@ -93,6 +94,6 @@ func InitBenefactorKindBoxService(db *mysql.DB) benefactorkindboxservice.Service return benefactorkindboxservice.New(mysqlkindbox.New(db)) } -func InitNotificationService(cfg config.Config, db *mysql.DB) notification.Service { - return notification.New(initSmsNotification(cfg), InitAdminKindBoxReqService(db), InitBenefactorForAdminService(db)) +func InitNotificationService(cfg config.Config, redisAdapter redis.Adapter, db *mysql.DB) notification.Service { + return notification.New(initSmsNotification(cfg), InitAdminKindBoxReqService(db), InitBenefactorForAdminService(cfg, redisAdapter, db)) } diff --git a/internal/initial/validator.go b/internal/initial/validator.go index c598d5e..363ea30 100644 --- a/internal/initial/validator.go +++ b/internal/initial/validator.go @@ -25,8 +25,8 @@ type Validators struct { AgentKindBoxVld agentkindboxvalidator.Validator } -func InitAdminKindBoxReqValidator(db *mysql.DB, cfg config.Config) adminkindboxreqvalidator.Validator { - return adminkindboxreqvalidator.New(InitBenefactorKindBoxReqDB(db), InitAdminService(cfg, db), InitBenefactorForAdminService(db), InitAdminReferTimeService(db), InitBenefactorAddressService(db)) +func InitAdminKindBoxReqValidator(db *mysql.DB, cfg config.Config, redisAdapter redis.Adapter) adminkindboxreqvalidator.Validator { + return adminkindboxreqvalidator.New(InitBenefactorKindBoxReqDB(db), InitAdminService(cfg, db), InitBenefactorForAdminService(cfg, redisAdapter, db), InitAdminReferTimeService(db), InitBenefactorAddressService(db)) } func InitAdminValidator(db *mysql.DB) adminvalidator.Validator { diff --git a/main.go b/main.go index 049c691..4e1c06f 100644 --- a/main.go +++ b/main.go @@ -3,9 +3,8 @@ package main import ( "flag" "fmt" + "git.gocasts.ir/ebhomengo/niki/adapter/redis" - "git.gocasts.ir/ebhomengo/niki/adapter/sms_provider/kavenegar" - kavenegarnotification "git.gocasts.ir/ebhomengo/niki/adapter/sms_provider/kavenegar/notification" "git.gocasts.ir/ebhomengo/niki/config" httpserver "git.gocasts.ir/ebhomengo/niki/delivery/http_server" "git.gocasts.ir/ebhomengo/niki/internal/initial" @@ -41,8 +40,6 @@ func main() { migrate := parseFlags() cfg := config.C() - sms := kavenegarnotification.New(kavenegar.New(cfg.KavenegarSmsProvider)) - sms.Send("09915436059", "salam") db := initDatabase(cfg, migrate) defer func() { if err := db.CloseStatements(); err != nil { @@ -73,7 +70,7 @@ func initDependencies(cfg config.Config, redisAdapter redis.Adapter, db *mysql.D BenefactorKindBoxReqVld: initial.InitBenefactorKindBoxReqValidator(cfg, redisAdapter, db), BenefactorAddressVld: initial.InitBenefactorAddressValidator(cfg, redisAdapter, db), BenefactorKindBoxVld: initial.InitBenefactorKindBoxValidator(cfg, redisAdapter, db), - AdminKindBoxReqVld: initial.InitAdminKindBoxReqValidator(db, cfg), + AdminKindBoxReqVld: initial.InitAdminKindBoxReqValidator(db, cfg, redisAdapter), AdminVld: initial.InitAdminValidator(db), AdminKindBoxVld: initial.InitAdminKindBoxValidator(db, cfg), AgentKindBoxVld: initial.InitAgentKindBoxValidator(db), @@ -88,7 +85,7 @@ func initDependencies(cfg config.Config, redisAdapter redis.Adapter, db *mysql.D AdminKindBoxReqSvc: initial.InitAdminKindBoxReqService(db), AdminSvc: initial.InitAdminService(cfg, db), AdminReferTimeSvc: initial.InitAdminReferTimeService(db), - NotificationSvc: initial.InitNotificationService(cfg, db), + NotificationSvc: initial.InitNotificationService(cfg, redisAdapter, db), }, initial.AdminAuthorization{ AdminAuthorizationSvc: initial.InitAdminAuthorizationService(db), diff --git a/service/admin/benefactor/address.go b/service/admin/benefactor/address.go index 584dbc5..ae426df 100644 --- a/service/admin/benefactor/address.go +++ b/service/admin/benefactor/address.go @@ -1,4 +1,4 @@ -package benefactor +package adminbenefactorservice import ( "context" diff --git a/service/admin/benefactor/get.go b/service/admin/benefactor/get.go index 76bfd98..7a909ec 100644 --- a/service/admin/benefactor/get.go +++ b/service/admin/benefactor/get.go @@ -1,24 +1,26 @@ -package benefactor +package adminbenefactorservice import ( "context" + param "git.gocasts.ir/ebhomengo/niki/param/admin/admin" params "git.gocasts.ir/ebhomengo/niki/param/admin/benefactor" - richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error" ) func (s Service) GetByID(ctx context.Context, req params.GetBenefactorByIDRequest) (params.GetBenefactorByIDResponse, error) { - const op = "benefactorservice.Get" - bnf, gErr := s.repo.GetByID(ctx, req.BenefactorID) + const op = "adminbenefactorservice.GetByID" + + bnf, gErr := s.benefactorService.GetByID(ctx, req) if gErr != nil { return params.GetBenefactorByIDResponse{}, richerror.New(op).WithErr(gErr) } - return params.GetBenefactorByIDResponse{bnf}, nil + + return params.GetBenefactorByIDResponse{Benefactor: bnf.Benefactor}, nil } func (s Service) BenefactorExistByID(ctx context.Context, req param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error) { - const op = "adminservice.BenefactorExistByID" + const op = "adminbenefactorservice.BenefactorExistByID" isExisted, err := s.repo.IsExistBenefactorByID(ctx, req.ID) if err != nil { diff --git a/service/admin/benefactor/service.go b/service/admin/benefactor/service.go index c37a630..fac9418 100644 --- a/service/admin/benefactor/service.go +++ b/service/admin/benefactor/service.go @@ -1,26 +1,25 @@ -package benefactor +package adminbenefactorservice import ( "context" "git.gocasts.ir/ebhomengo/niki/entity" - param "git.gocasts.ir/ebhomengo/niki/param/admin/admin" + params "git.gocasts.ir/ebhomengo/niki/param/admin/benefactor" ) type Repository interface { - GetByID(ctx context.Context, benefactorID uint) (entity.Benefactor, error) IsExistBenefactorByID(ctx context.Context, id uint) (bool, error) GetAddressByID(ctx context.Context, id uint) (*entity.Address, error) } -type ForAdminSvc interface { - BenefactorExistByID(ctx context.Context, request param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error) - AddressExistByID(ctx context.Context, request param.GetAddressByIDRequest) (param.GetAddressByIDResponse, error) +type BenefactorService interface { + GetByID(ctx context.Context, req params.GetBenefactorByIDRequest) (params.GetBenefactorByIDResponse, error) } type Service struct { - repo Repository + repo Repository + benefactorService BenefactorService } -func New(repo Repository) Service { - return Service{repo: repo} +func New(repo Repository, benefactorService BenefactorService) Service { + return Service{repo: repo, benefactorService: benefactorService} } diff --git a/service/benefactor/benefactor/get.go b/service/benefactor/benefactor/get.go index 33df195..a0e2405 100644 --- a/service/benefactor/benefactor/get.go +++ b/service/benefactor/benefactor/get.go @@ -3,6 +3,7 @@ package benefactorservice import ( "context" + params "git.gocasts.ir/ebhomengo/niki/param/admin/benefactor" param "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactore" richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error" ) @@ -17,3 +18,14 @@ func (s Service) BenefactorExistByID(ctx context.Context, req param.BenefactorEx return param.BenefactorExistByIDResponse{Existed: isExisted}, nil } + +func (s Service) GetByID(ctx context.Context, req params.GetBenefactorByIDRequest) (params.GetBenefactorByIDResponse, error) { + const op = "benefactorservice.GetByID" + + bnf, gErr := s.repo.GetByID(ctx, req.BenefactorID) + if gErr != nil { + return params.GetBenefactorByIDResponse{}, richerror.New(op).WithErr(gErr) + } + + return params.GetBenefactorByIDResponse{Benefactor: bnf}, nil +} diff --git a/service/benefactor/benefactor/service.go b/service/benefactor/benefactor/service.go index 7d79838..98d4228 100644 --- a/service/benefactor/benefactor/service.go +++ b/service/benefactor/benefactor/service.go @@ -17,6 +17,7 @@ type Repository interface { IsExistBenefactorByPhoneNumber(ctx context.Context, phoneNumber string) (bool, entity.Benefactor, error) CreateBenefactor(ctx context.Context, benefactor entity.Benefactor) (entity.Benefactor, error) IsExistBenefactorByID(ctx context.Context, id uint) (bool, error) + GetByID(ctx context.Context, benefactorID uint) (entity.Benefactor, error) } type AuthGenerator interface { diff --git a/service/notification/kindboxreq_accepted.go b/service/notification/kindboxreq_accepted.go index 8a566f0..8dc8ef7 100644 --- a/service/notification/kindboxreq_accepted.go +++ b/service/notification/kindboxreq_accepted.go @@ -3,6 +3,7 @@ package notification import ( "context" "fmt" + params "git.gocasts.ir/ebhomengo/niki/param" bnfparam "git.gocasts.ir/ebhomengo/niki/param/admin/benefactor" kbparam "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box_req" @@ -10,10 +11,18 @@ import ( ) func (s Service) KindBoxReqAccepted(req params.NotificationKindBoxReqAccepted) { + const op = "notification.KindBoxReqAccepted" + ctx := context.Background() - kb, _ := s.KindBoxReqSvc.Get(ctx, kbparam.GetKindBoxReqRequest{ + kb, err := s.KindBoxReqSvc.Get(ctx, kbparam.GetKindBoxReqRequest{ KindBoxID: req.KindBoxReqID, }) - bnf, _ := s.BenefactorSvc.GetByID(ctx, bnfparam.GetBenefactorByIDRequest{BenefactorID: kb.BenefactorID}) + if err != nil { + fmt.Println(fmt.Errorf("error(%s):%w", op, err)) + } + bnf, gErr := s.BenefactorSvc.GetByID(ctx, bnfparam.GetBenefactorByIDRequest{BenefactorID: kb.BenefactorID}) + if err != nil { + fmt.Println(fmt.Errorf("error(%s):%w", op, gErr)) + } s.smsAdapter.Send(bnf.PhoneNumber, fmt.Sprintf(smsmsg.SmsMsgKindBoxReqAccepted, bnf.FirstName)) } diff --git a/service/notification/service.go b/service/notification/service.go index 6df7fe8..39b3cc2 100644 --- a/service/notification/service.go +++ b/service/notification/service.go @@ -2,6 +2,7 @@ package notification import ( "context" + params "git.gocasts.ir/ebhomengo/niki/param/admin/benefactor" param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box_req" )