64 lines
3.3 KiB
Go
64 lines
3.3 KiB
Go
|
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
|
||
|
|
"eslogad-be/internal/contract"
|
||
|
|
|
||
|
|
"github.com/google/uuid"
|
||
|
|
)
|
||
|
|
|
||
|
|
type LetterProcessor interface {
|
||
|
|
CreateIncomingLetter(ctx context.Context, req *contract.CreateIncomingLetterRequest) (*contract.IncomingLetterResponse, error)
|
||
|
|
GetIncomingLetterByID(ctx context.Context, id uuid.UUID) (*contract.IncomingLetterResponse, error)
|
||
|
|
ListIncomingLetters(ctx context.Context, req *contract.ListIncomingLettersRequest) (*contract.ListIncomingLettersResponse, error)
|
||
|
|
UpdateIncomingLetter(ctx context.Context, id uuid.UUID, req *contract.UpdateIncomingLetterRequest) (*contract.IncomingLetterResponse, error)
|
||
|
|
SoftDeleteIncomingLetter(ctx context.Context, id uuid.UUID) error
|
||
|
|
|
||
|
|
CreateDispositions(ctx context.Context, req *contract.CreateLetterDispositionRequest) (*contract.ListDispositionsResponse, error)
|
||
|
|
ListDispositionsByLetter(ctx context.Context, letterID uuid.UUID) (*contract.ListDispositionsResponse, error)
|
||
|
|
|
||
|
|
CreateDiscussion(ctx context.Context, letterID uuid.UUID, req *contract.CreateLetterDiscussionRequest) (*contract.LetterDiscussionResponse, error)
|
||
|
|
UpdateDiscussion(ctx context.Context, letterID uuid.UUID, discussionID uuid.UUID, req *contract.UpdateLetterDiscussionRequest) (*contract.LetterDiscussionResponse, error)
|
||
|
|
}
|
||
|
|
|
||
|
|
type LetterServiceImpl struct {
|
||
|
|
processor LetterProcessor
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewLetterService(processor LetterProcessor) *LetterServiceImpl {
|
||
|
|
return &LetterServiceImpl{processor: processor}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *LetterServiceImpl) CreateIncomingLetter(ctx context.Context, req *contract.CreateIncomingLetterRequest) (*contract.IncomingLetterResponse, error) {
|
||
|
|
return s.processor.CreateIncomingLetter(ctx, req)
|
||
|
|
}
|
||
|
|
func (s *LetterServiceImpl) GetIncomingLetterByID(ctx context.Context, id uuid.UUID) (*contract.IncomingLetterResponse, error) {
|
||
|
|
return s.processor.GetIncomingLetterByID(ctx, id)
|
||
|
|
}
|
||
|
|
func (s *LetterServiceImpl) ListIncomingLetters(ctx context.Context, req *contract.ListIncomingLettersRequest) (*contract.ListIncomingLettersResponse, error) {
|
||
|
|
return s.processor.ListIncomingLetters(ctx, req)
|
||
|
|
}
|
||
|
|
func (s *LetterServiceImpl) UpdateIncomingLetter(ctx context.Context, id uuid.UUID, req *contract.UpdateIncomingLetterRequest) (*contract.IncomingLetterResponse, error) {
|
||
|
|
return s.processor.UpdateIncomingLetter(ctx, id, req)
|
||
|
|
}
|
||
|
|
func (s *LetterServiceImpl) SoftDeleteIncomingLetter(ctx context.Context, id uuid.UUID) error {
|
||
|
|
return s.processor.SoftDeleteIncomingLetter(ctx, id)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *LetterServiceImpl) CreateDispositions(ctx context.Context, req *contract.CreateLetterDispositionRequest) (*contract.ListDispositionsResponse, error) {
|
||
|
|
return s.processor.CreateDispositions(ctx, req)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *LetterServiceImpl) ListDispositionsByLetter(ctx context.Context, letterID uuid.UUID) (*contract.ListDispositionsResponse, error) {
|
||
|
|
return s.processor.ListDispositionsByLetter(ctx, letterID)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *LetterServiceImpl) CreateDiscussion(ctx context.Context, letterID uuid.UUID, req *contract.CreateLetterDiscussionRequest) (*contract.LetterDiscussionResponse, error) {
|
||
|
|
return s.processor.CreateDiscussion(ctx, letterID, req)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *LetterServiceImpl) UpdateDiscussion(ctx context.Context, letterID uuid.UUID, discussionID uuid.UUID, req *contract.UpdateLetterDiscussionRequest) (*contract.LetterDiscussionResponse, error) {
|
||
|
|
return s.processor.UpdateDiscussion(ctx, letterID, discussionID, req)
|
||
|
|
}
|