forked from ebhomengo/niki
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package order
|
|
|
|
import (
|
|
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
|
"git.gocasts.ir/ebhomengo/niki/purchaseapp/entity"
|
|
"git.gocasts.ir/ebhomengo/niki/types"
|
|
)
|
|
|
|
type Service struct {
|
|
repo Repo
|
|
}
|
|
|
|
type Repo interface {
|
|
CreateOrder(order entity.Order, orderItems []entity.OrderItem) (types.ID, error)
|
|
UpdateOrderProcessStatus(orderID types.ID, status string) (bool, error)
|
|
}
|
|
|
|
func New(orderRepo Repo) Service {
|
|
return Service{repo: orderRepo}
|
|
}
|
|
|
|
func (s Service) CreateOrder(order entity.Order, orderItems []entity.OrderItem) (CreateOrderResponse, error) {
|
|
const Op = "purchaseapp.service.CreateOrder"
|
|
orderID, err := s.repo.CreateOrder(order, orderItems)
|
|
|
|
if err != nil {
|
|
return CreateOrderResponse{}, richerror.New(Op).WithErr(err)
|
|
}
|
|
|
|
return CreateOrderResponse{OrderID: orderID}, nil
|
|
}
|
|
|
|
func (s Service) UpdateOrderProcessStatus(orderID types.ID, status string) (bool, error) {
|
|
|
|
const Op = "purchaseapp.service.UpdateOrderProcessStatus"
|
|
_, err := s.repo.UpdateOrderProcessStatus(orderID, status)
|
|
if err != nil {
|
|
return false, richerror.New(Op).WithErr(err)
|
|
}
|
|
|
|
return true, nil
|
|
}
|