111 lines
4.4 KiB
Go
111 lines
4.4 KiB
Go
|
|
package services
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"furtuna-be/internal/common/mycontext"
|
||
|
|
"furtuna-be/internal/services/branch"
|
||
|
|
"furtuna-be/internal/services/order"
|
||
|
|
"furtuna-be/internal/services/oss"
|
||
|
|
"furtuna-be/internal/services/partner"
|
||
|
|
"furtuna-be/internal/services/product"
|
||
|
|
"furtuna-be/internal/services/studio"
|
||
|
|
"furtuna-be/internal/services/users"
|
||
|
|
|
||
|
|
"furtuna-be/config"
|
||
|
|
"furtuna-be/internal/entity"
|
||
|
|
"furtuna-be/internal/repository"
|
||
|
|
"furtuna-be/internal/services/auth"
|
||
|
|
"furtuna-be/internal/services/event"
|
||
|
|
)
|
||
|
|
|
||
|
|
type ServiceManagerImpl struct {
|
||
|
|
AuthSvc Auth
|
||
|
|
EventSvc Event
|
||
|
|
UserSvc User
|
||
|
|
BranchSvc Branch
|
||
|
|
StudioSvc Studio
|
||
|
|
ProductSvc Product
|
||
|
|
OrderSvc Order
|
||
|
|
OSSSvc OSSService
|
||
|
|
PartnerSvc Partner
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewServiceManagerImpl(cfg *config.Config, repo *repository.RepoManagerImpl) *ServiceManagerImpl {
|
||
|
|
return &ServiceManagerImpl{
|
||
|
|
AuthSvc: auth.New(repo.Auth, repo.Crypto),
|
||
|
|
EventSvc: event.NewEventService(repo.Event),
|
||
|
|
UserSvc: users.NewUserService(repo.User, repo.Branch),
|
||
|
|
BranchSvc: branch.NewBranchService(repo.Branch),
|
||
|
|
StudioSvc: studio.NewStudioService(repo.Studio),
|
||
|
|
ProductSvc: product.NewProductService(repo.Product),
|
||
|
|
OrderSvc: order.NewOrderService(repo.Order, repo.Product, repo.Studio),
|
||
|
|
OSSSvc: oss.NewOSSService(repo.OSS),
|
||
|
|
PartnerSvc: partner.NewPartnerService(repo.Partner),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
type Auth interface {
|
||
|
|
AuthenticateUser(ctx context.Context, email, password string) (*entity.AuthenticateUser, error)
|
||
|
|
}
|
||
|
|
|
||
|
|
type Event interface {
|
||
|
|
Create(ctx context.Context, eventReq *entity.Event) (*entity.Event, error)
|
||
|
|
Update(ctx context.Context, id int64, eventReq *entity.Event) (*entity.Event, error)
|
||
|
|
GetByID(ctx context.Context, id int64) (*entity.Event, error)
|
||
|
|
GetAll(ctx context.Context, search entity.EventSearch) ([]*entity.Event, int, error)
|
||
|
|
Delete(ctx context.Context, id int64) error
|
||
|
|
}
|
||
|
|
|
||
|
|
type User interface {
|
||
|
|
Create(ctx mycontext.Context, userReq *entity.User) (*entity.User, error)
|
||
|
|
GetAll(ctx mycontext.Context, search entity.UserSearch) ([]*entity.User, int, error)
|
||
|
|
Update(ctx mycontext.Context, id int64, userReq *entity.User) (*entity.User, error)
|
||
|
|
GetByID(ctx mycontext.Context, id int64) (*entity.User, error)
|
||
|
|
Delete(ctx mycontext.Context, id int64) error
|
||
|
|
}
|
||
|
|
|
||
|
|
type Branch interface {
|
||
|
|
Create(ctx mycontext.Context, branchReq *entity.Branch) (*entity.Branch, error)
|
||
|
|
Update(ctx mycontext.Context, id int64, branchReq *entity.Branch) (*entity.Branch, error)
|
||
|
|
GetByID(ctx context.Context, id int64) (*entity.Branch, error)
|
||
|
|
GetAll(ctx context.Context, search entity.BranchSearch) ([]*entity.Branch, int, error)
|
||
|
|
Delete(ctx mycontext.Context, id int64) error
|
||
|
|
}
|
||
|
|
|
||
|
|
type Studio interface {
|
||
|
|
Create(ctx mycontext.Context, studioReq *entity.Studio) (*entity.Studio, error)
|
||
|
|
Update(ctx mycontext.Context, id int64, studioReq *entity.Studio) (*entity.Studio, error)
|
||
|
|
GetByID(ctx context.Context, id int64) (*entity.Studio, error)
|
||
|
|
Search(ctx context.Context, search entity.StudioSearch) ([]*entity.Studio, int, error)
|
||
|
|
}
|
||
|
|
|
||
|
|
type Product interface {
|
||
|
|
Create(ctx mycontext.Context, productReq *entity.Product) (*entity.Product, error)
|
||
|
|
Update(ctx mycontext.Context, id int64, productReq *entity.Product) (*entity.Product, error)
|
||
|
|
GetByID(ctx context.Context, id int64) (*entity.Product, error)
|
||
|
|
GetAll(ctx context.Context, search entity.ProductSearch) ([]*entity.Product, int, error)
|
||
|
|
Delete(ctx mycontext.Context, id int64) error
|
||
|
|
}
|
||
|
|
|
||
|
|
type Order interface {
|
||
|
|
Create(ctx mycontext.Context, req *entity.Order) error
|
||
|
|
UpdateStatus(ctx mycontext.Context, id int64, orderReq *entity.Order) (*entity.Order, error)
|
||
|
|
GetByID(ctx context.Context, id int64) (*entity.Order, error)
|
||
|
|
GetAll(ctx context.Context, search entity.OrderSearch) ([]*entity.Order, int, error)
|
||
|
|
GetTotalRevenue(ctx context.Context, search entity.OrderTotalRevenueSearch) (float64, int64, error)
|
||
|
|
GetYearlyRevenue(ctx context.Context, year int) (entity.OrderYearlyRevenueList, error)
|
||
|
|
GetBranchRevenue(ctx context.Context, req entity.OrderBranchRevenueSearch) (entity.OrderBranchRevenueList, error)
|
||
|
|
}
|
||
|
|
|
||
|
|
type OSSService interface {
|
||
|
|
UploadFile(ctx context.Context, req *entity.UploadFileRequest) (*entity.UploadFileResponse, error)
|
||
|
|
}
|
||
|
|
|
||
|
|
type Partner interface {
|
||
|
|
Create(ctx mycontext.Context, branchReq *entity.Partner) (*entity.Partner, error)
|
||
|
|
Update(ctx mycontext.Context, id int64, branchReq *entity.Partner) (*entity.Partner, error)
|
||
|
|
GetByID(ctx context.Context, id int64) (*entity.Partner, error)
|
||
|
|
GetAll(ctx context.Context, search entity.PartnerSearch) ([]*entity.Partner, int, error)
|
||
|
|
Delete(ctx mycontext.Context, id int64) error
|
||
|
|
}
|