letter incoming
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"eslogad-be/internal/contract"
|
||||
"eslogad-be/internal/entities"
|
||||
"eslogad-be/internal/repository"
|
||||
"eslogad-be/internal/transformer"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type DispositionRouteServiceImpl struct {
|
||||
repo *repository.DispositionRouteRepository
|
||||
}
|
||||
|
||||
func NewDispositionRouteService(repo *repository.DispositionRouteRepository) *DispositionRouteServiceImpl {
|
||||
return &DispositionRouteServiceImpl{repo: repo}
|
||||
}
|
||||
|
||||
func (s *DispositionRouteServiceImpl) Create(ctx context.Context, req *contract.CreateDispositionRouteRequest) (*contract.DispositionRouteResponse, error) {
|
||||
entity := &entities.DispositionRoute{FromDepartmentID: req.FromDepartmentID, ToDepartmentID: req.ToDepartmentID}
|
||||
if req.IsActive != nil {
|
||||
entity.IsActive = *req.IsActive
|
||||
}
|
||||
if req.AllowedActions != nil {
|
||||
entity.AllowedActions = entities.JSONB(*req.AllowedActions)
|
||||
}
|
||||
if err := s.repo.Create(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.DispositionRoutesToContract([]entities.DispositionRoute{*entity})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *DispositionRouteServiceImpl) Update(ctx context.Context, id uuid.UUID, req *contract.UpdateDispositionRouteRequest) (*contract.DispositionRouteResponse, error) {
|
||||
entity, err := s.repo.Get(ctx, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if req.IsActive != nil {
|
||||
entity.IsActive = *req.IsActive
|
||||
}
|
||||
if req.AllowedActions != nil {
|
||||
entity.AllowedActions = entities.JSONB(*req.AllowedActions)
|
||||
}
|
||||
if err := s.repo.Update(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.DispositionRoutesToContract([]entities.DispositionRoute{*entity})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *DispositionRouteServiceImpl) Get(ctx context.Context, id uuid.UUID) (*contract.DispositionRouteResponse, error) {
|
||||
entity, err := s.repo.Get(ctx, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.DispositionRoutesToContract([]entities.DispositionRoute{*entity})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *DispositionRouteServiceImpl) ListByFromDept(ctx context.Context, from uuid.UUID) (*contract.ListDispositionRoutesResponse, error) {
|
||||
list, err := s.repo.ListByFromDept(ctx, from)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &contract.ListDispositionRoutesResponse{Routes: transformer.DispositionRoutesToContract(list)}, nil
|
||||
}
|
||||
func (s *DispositionRouteServiceImpl) SetActive(ctx context.Context, id uuid.UUID, active bool) error {
|
||||
return s.repo.SetActive(ctx, id, active)
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
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)
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"eslogad-be/internal/contract"
|
||||
"eslogad-be/internal/entities"
|
||||
"eslogad-be/internal/repository"
|
||||
"eslogad-be/internal/transformer"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type MasterServiceImpl struct {
|
||||
labelRepo *repository.LabelRepository
|
||||
priorityRepo *repository.PriorityRepository
|
||||
institutionRepo *repository.InstitutionRepository
|
||||
dispRepo *repository.DispositionActionRepository
|
||||
}
|
||||
|
||||
func NewMasterService(label *repository.LabelRepository, priority *repository.PriorityRepository, institution *repository.InstitutionRepository, disp *repository.DispositionActionRepository) *MasterServiceImpl {
|
||||
return &MasterServiceImpl{labelRepo: label, priorityRepo: priority, institutionRepo: institution, dispRepo: disp}
|
||||
}
|
||||
|
||||
// Labels
|
||||
func (s *MasterServiceImpl) CreateLabel(ctx context.Context, req *contract.CreateLabelRequest) (*contract.LabelResponse, error) {
|
||||
entity := &entities.Label{Name: req.Name, Color: req.Color}
|
||||
if err := s.labelRepo.Create(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.LabelsToContract([]entities.Label{*entity})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *MasterServiceImpl) UpdateLabel(ctx context.Context, id uuid.UUID, req *contract.UpdateLabelRequest) (*contract.LabelResponse, error) {
|
||||
entity := &entities.Label{ID: id}
|
||||
if req.Name != nil {
|
||||
entity.Name = *req.Name
|
||||
}
|
||||
if req.Color != nil {
|
||||
entity.Color = req.Color
|
||||
}
|
||||
if err := s.labelRepo.Update(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
e, err := s.labelRepo.Get(ctx, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.LabelsToContract([]entities.Label{*e})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *MasterServiceImpl) DeleteLabel(ctx context.Context, id uuid.UUID) error {
|
||||
return s.labelRepo.Delete(ctx, id)
|
||||
}
|
||||
func (s *MasterServiceImpl) ListLabels(ctx context.Context) (*contract.ListLabelsResponse, error) {
|
||||
list, err := s.labelRepo.List(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &contract.ListLabelsResponse{Labels: transformer.LabelsToContract(list)}, nil
|
||||
}
|
||||
|
||||
// Priorities
|
||||
func (s *MasterServiceImpl) CreatePriority(ctx context.Context, req *contract.CreatePriorityRequest) (*contract.PriorityResponse, error) {
|
||||
entity := &entities.Priority{Name: req.Name, Level: req.Level}
|
||||
if err := s.priorityRepo.Create(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.PrioritiesToContract([]entities.Priority{*entity})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *MasterServiceImpl) UpdatePriority(ctx context.Context, id uuid.UUID, req *contract.UpdatePriorityRequest) (*contract.PriorityResponse, error) {
|
||||
entity := &entities.Priority{ID: id}
|
||||
if req.Name != nil {
|
||||
entity.Name = *req.Name
|
||||
}
|
||||
if req.Level != nil {
|
||||
entity.Level = *req.Level
|
||||
}
|
||||
if err := s.priorityRepo.Update(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
e, err := s.priorityRepo.Get(ctx, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.PrioritiesToContract([]entities.Priority{*e})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *MasterServiceImpl) DeletePriority(ctx context.Context, id uuid.UUID) error {
|
||||
return s.priorityRepo.Delete(ctx, id)
|
||||
}
|
||||
func (s *MasterServiceImpl) ListPriorities(ctx context.Context) (*contract.ListPrioritiesResponse, error) {
|
||||
list, err := s.priorityRepo.List(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &contract.ListPrioritiesResponse{Priorities: transformer.PrioritiesToContract(list)}, nil
|
||||
}
|
||||
|
||||
// Institutions
|
||||
func (s *MasterServiceImpl) CreateInstitution(ctx context.Context, req *contract.CreateInstitutionRequest) (*contract.InstitutionResponse, error) {
|
||||
entity := &entities.Institution{Name: req.Name, Type: entities.InstitutionType(req.Type), Address: req.Address, ContactPerson: req.ContactPerson, Phone: req.Phone, Email: req.Email}
|
||||
if err := s.institutionRepo.Create(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.InstitutionsToContract([]entities.Institution{*entity})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *MasterServiceImpl) UpdateInstitution(ctx context.Context, id uuid.UUID, req *contract.UpdateInstitutionRequest) (*contract.InstitutionResponse, error) {
|
||||
entity := &entities.Institution{ID: id}
|
||||
if req.Name != nil {
|
||||
entity.Name = *req.Name
|
||||
}
|
||||
if req.Type != nil {
|
||||
entity.Type = entities.InstitutionType(*req.Type)
|
||||
}
|
||||
if req.Address != nil {
|
||||
entity.Address = req.Address
|
||||
}
|
||||
if req.ContactPerson != nil {
|
||||
entity.ContactPerson = req.ContactPerson
|
||||
}
|
||||
if req.Phone != nil {
|
||||
entity.Phone = req.Phone
|
||||
}
|
||||
if req.Email != nil {
|
||||
entity.Email = req.Email
|
||||
}
|
||||
if err := s.institutionRepo.Update(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
e, err := s.institutionRepo.Get(ctx, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.InstitutionsToContract([]entities.Institution{*e})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *MasterServiceImpl) DeleteInstitution(ctx context.Context, id uuid.UUID) error {
|
||||
return s.institutionRepo.Delete(ctx, id)
|
||||
}
|
||||
func (s *MasterServiceImpl) ListInstitutions(ctx context.Context) (*contract.ListInstitutionsResponse, error) {
|
||||
list, err := s.institutionRepo.List(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &contract.ListInstitutionsResponse{Institutions: transformer.InstitutionsToContract(list)}, nil
|
||||
}
|
||||
|
||||
// Disposition Actions
|
||||
func (s *MasterServiceImpl) CreateDispositionAction(ctx context.Context, req *contract.CreateDispositionActionRequest) (*contract.DispositionActionResponse, error) {
|
||||
entity := &entities.DispositionAction{Code: req.Code, Label: req.Label, Description: req.Description}
|
||||
if req.RequiresNote != nil {
|
||||
entity.RequiresNote = *req.RequiresNote
|
||||
}
|
||||
if req.GroupName != nil {
|
||||
entity.GroupName = req.GroupName
|
||||
}
|
||||
if req.SortOrder != nil {
|
||||
entity.SortOrder = req.SortOrder
|
||||
}
|
||||
if req.IsActive != nil {
|
||||
entity.IsActive = *req.IsActive
|
||||
}
|
||||
if err := s.dispRepo.Create(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.DispositionActionsToContract([]entities.DispositionAction{*entity})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *MasterServiceImpl) UpdateDispositionAction(ctx context.Context, id uuid.UUID, req *contract.UpdateDispositionActionRequest) (*contract.DispositionActionResponse, error) {
|
||||
entity := &entities.DispositionAction{ID: id}
|
||||
if req.Code != nil {
|
||||
entity.Code = *req.Code
|
||||
}
|
||||
if req.Label != nil {
|
||||
entity.Label = *req.Label
|
||||
}
|
||||
if req.Description != nil {
|
||||
entity.Description = req.Description
|
||||
}
|
||||
if req.RequiresNote != nil {
|
||||
entity.RequiresNote = *req.RequiresNote
|
||||
}
|
||||
if req.GroupName != nil {
|
||||
entity.GroupName = req.GroupName
|
||||
}
|
||||
if req.SortOrder != nil {
|
||||
entity.SortOrder = req.SortOrder
|
||||
}
|
||||
if req.IsActive != nil {
|
||||
entity.IsActive = *req.IsActive
|
||||
}
|
||||
if err := s.dispRepo.Update(ctx, entity); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
e, err := s.dispRepo.Get(ctx, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
resp := transformer.DispositionActionsToContract([]entities.DispositionAction{*e})[0]
|
||||
return &resp, nil
|
||||
}
|
||||
func (s *MasterServiceImpl) DeleteDispositionAction(ctx context.Context, id uuid.UUID) error {
|
||||
return s.dispRepo.Delete(ctx, id)
|
||||
}
|
||||
func (s *MasterServiceImpl) ListDispositionActions(ctx context.Context) (*contract.ListDispositionActionsResponse, error) {
|
||||
list, err := s.dispRepo.List(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &contract.ListDispositionActionsResponse{Actions: transformer.DispositionActionsToContract(list)}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user