init
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"apskel-pos-be/internal/contract"
|
||||
"apskel-pos-be/internal/processor"
|
||||
"apskel-pos-be/internal/transformer"
|
||||
"context"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type CustomerService interface {
|
||||
CreateCustomer(ctx context.Context, req *contract.CreateCustomerRequest, organizationID uuid.UUID) (*contract.CustomerResponse, error)
|
||||
GetCustomer(ctx context.Context, customerID, organizationID uuid.UUID) (*contract.CustomerResponse, error)
|
||||
ListCustomers(ctx context.Context, query *contract.ListCustomersRequest, organizationID uuid.UUID) (*contract.PaginatedCustomerResponse, error)
|
||||
UpdateCustomer(ctx context.Context, customerID, organizationID uuid.UUID, req *contract.UpdateCustomerRequest) (*contract.CustomerResponse, error)
|
||||
DeleteCustomer(ctx context.Context, customerID, organizationID uuid.UUID) error
|
||||
SetDefaultCustomer(ctx context.Context, customerID, organizationID uuid.UUID) (*contract.CustomerResponse, error)
|
||||
GetDefaultCustomer(ctx context.Context, organizationID uuid.UUID) (*contract.CustomerResponse, error)
|
||||
EnsureDefaultCustomer(ctx context.Context, organizationID uuid.UUID) (*contract.CustomerResponse, error)
|
||||
}
|
||||
|
||||
type CustomerServiceImpl struct {
|
||||
customerProcessor *processor.CustomerProcessor
|
||||
}
|
||||
|
||||
func NewCustomerService(customerProcessor *processor.CustomerProcessor) *CustomerServiceImpl {
|
||||
return &CustomerServiceImpl{
|
||||
customerProcessor: customerProcessor,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CustomerServiceImpl) CreateCustomer(ctx context.Context, req *contract.CreateCustomerRequest, organizationID uuid.UUID) (*contract.CustomerResponse, error) {
|
||||
modelReq := transformer.CreateCustomerRequestToModel(req)
|
||||
|
||||
customerResponse, err := s.customerProcessor.CreateCustomer(ctx, modelReq, organizationID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contractResponse := transformer.CustomerModelToResponse(customerResponse)
|
||||
return contractResponse, nil
|
||||
}
|
||||
|
||||
func (s *CustomerServiceImpl) GetCustomer(ctx context.Context, customerID, organizationID uuid.UUID) (*contract.CustomerResponse, error) {
|
||||
customerResponse, err := s.customerProcessor.GetCustomer(ctx, customerID, organizationID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contractResponse := transformer.CustomerModelToResponse(customerResponse)
|
||||
return contractResponse, nil
|
||||
}
|
||||
|
||||
func (s *CustomerServiceImpl) ListCustomers(ctx context.Context, query *contract.ListCustomersRequest, organizationID uuid.UUID) (*contract.PaginatedCustomerResponse, error) {
|
||||
modelQuery := transformer.ListCustomersRequestToModel(query)
|
||||
|
||||
customersResponse, err := s.customerProcessor.ListCustomers(ctx, modelQuery, organizationID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contractResponse := transformer.PaginatedCustomerResponseToContract(customersResponse)
|
||||
return contractResponse, nil
|
||||
}
|
||||
|
||||
func (s *CustomerServiceImpl) UpdateCustomer(ctx context.Context, customerID, organizationID uuid.UUID, req *contract.UpdateCustomerRequest) (*contract.CustomerResponse, error) {
|
||||
modelReq := transformer.UpdateCustomerRequestToModel(req)
|
||||
|
||||
customerResponse, err := s.customerProcessor.UpdateCustomer(ctx, customerID, organizationID, modelReq)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contractResponse := transformer.CustomerModelToResponse(customerResponse)
|
||||
return contractResponse, nil
|
||||
}
|
||||
|
||||
func (s *CustomerServiceImpl) DeleteCustomer(ctx context.Context, customerID, organizationID uuid.UUID) error {
|
||||
return s.customerProcessor.DeleteCustomer(ctx, customerID, organizationID)
|
||||
}
|
||||
|
||||
func (s *CustomerServiceImpl) SetDefaultCustomer(ctx context.Context, customerID, organizationID uuid.UUID) (*contract.CustomerResponse, error) {
|
||||
customerResponse, err := s.customerProcessor.SetDefaultCustomer(ctx, customerID, organizationID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contractResponse := transformer.CustomerModelToResponse(customerResponse)
|
||||
return contractResponse, nil
|
||||
}
|
||||
|
||||
func (s *CustomerServiceImpl) GetDefaultCustomer(ctx context.Context, organizationID uuid.UUID) (*contract.CustomerResponse, error) {
|
||||
customerResponse, err := s.customerProcessor.GetDefaultCustomer(ctx, organizationID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contractResponse := transformer.CustomerModelToResponse(customerResponse)
|
||||
return contractResponse, nil
|
||||
}
|
||||
|
||||
func (s *CustomerServiceImpl) EnsureDefaultCustomer(ctx context.Context, organizationID uuid.UUID) (*contract.CustomerResponse, error) {
|
||||
customerResponse, err := s.customerProcessor.EnsureDefaultCustomer(ctx, organizationID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
contractResponse := transformer.CustomerModelToResponse(customerResponse)
|
||||
return contractResponse, nil
|
||||
}
|
||||
Reference in New Issue
Block a user