75 lines
3.0 KiB
Go
75 lines
3.0 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
complaint "wucher/internal/domain/complaint"
|
|
"wucher/internal/shared/pkg/userctx"
|
|
)
|
|
|
|
type ComplaintService struct{ repo complaint.Repository }
|
|
|
|
func NewComplaintService(repo complaint.Repository) *ComplaintService {
|
|
return &ComplaintService{repo: repo}
|
|
}
|
|
|
|
func (s *ComplaintService) Create(ctx context.Context, row *complaint.Complaint) error {
|
|
return s.repo.Create(ctx, row)
|
|
}
|
|
func (s *ComplaintService) Update(ctx context.Context, row *complaint.Complaint) error {
|
|
return s.repo.Update(ctx, row)
|
|
}
|
|
func (s *ComplaintService) Delete(ctx context.Context, id []byte, deletedBy []byte) error {
|
|
return s.repo.Delete(ctx, id, deletedBy)
|
|
}
|
|
func (s *ComplaintService) GetByID(ctx context.Context, id []byte) (*complaint.Complaint, error) {
|
|
return s.repo.GetByID(ctx, id)
|
|
}
|
|
func (s *ComplaintService) ListByHelicopter(ctx context.Context, helicopterID []byte, limit, offset int) ([]complaint.Complaint, int64, error) {
|
|
return s.repo.ListByHelicopter(ctx, helicopterID, limit, offset)
|
|
}
|
|
func (s *ComplaintService) List(ctx context.Context, filter complaint.ListFilter, sort string, limit, offset int) ([]complaint.Complaint, int64, error) {
|
|
return s.repo.List(ctx, filter, sort, limit, offset)
|
|
}
|
|
func (s *ComplaintService) HelicopterHasOpenComplaint(ctx context.Context, helicopterID []byte) (bool, error) {
|
|
return s.repo.HelicopterHasOpenComplaint(ctx, helicopterID)
|
|
}
|
|
func (s *ComplaintService) ActiveGroundingByHelicopterIDs(ctx context.Context, helicopterIDs [][]byte) ([]complaint.Complaint, error) {
|
|
return s.repo.ActiveGroundingByHelicopterIDs(ctx, helicopterIDs)
|
|
}
|
|
func (s *ComplaintService) OpenByHelicopterIDs(ctx context.Context, helicopterIDs [][]byte) ([]complaint.Complaint, error) {
|
|
return s.repo.OpenByHelicopterIDs(ctx, helicopterIDs)
|
|
}
|
|
func (s *ComplaintService) HelicopterHasUnactionedComplaint(ctx context.Context, helicopterID []byte) (bool, error) {
|
|
return s.repo.HelicopterHasUnactionedComplaint(ctx, helicopterID)
|
|
}
|
|
func (s *ComplaintService) MarkFixedByHelicopter(ctx context.Context, helicopterID []byte, easaID []byte, actor []byte) error {
|
|
return s.repo.MarkFixedByHelicopter(ctx, helicopterID, easaID, actor)
|
|
}
|
|
func (s *ComplaintService) MarkFixedByComplaint(ctx context.Context, complaintID []byte, easaID []byte, actor []byte) error {
|
|
return s.repo.MarkFixedByComplaint(ctx, complaintID, easaID, actor)
|
|
}
|
|
func (s *ComplaintService) MarkFixedByFlight(ctx context.Context, flightID []byte, easaID []byte, actor []byte) error {
|
|
return s.repo.MarkFixedByFlight(ctx, flightID, easaID, actor)
|
|
}
|
|
func (s *ComplaintService) ResolveUserNames(ctx context.Context, complaints []complaint.Complaint) (map[string]string, error) {
|
|
out := make(map[string]string)
|
|
add := func(id []byte) {
|
|
if len(id) == 0 {
|
|
return
|
|
}
|
|
if _, ok := out[string(id)]; ok {
|
|
return
|
|
}
|
|
if n := userctx.GetDisplayName(ctx, id); n != "" {
|
|
out[string(id)] = n
|
|
}
|
|
}
|
|
for i := range complaints {
|
|
add(complaints[i].ReportedBy)
|
|
add(complaints[i].MELClassifiedBy)
|
|
add(complaints[i].NSRDecidedBy)
|
|
}
|
|
return out, nil
|
|
}
|