diff --git a/pkg/service_internal/mapfixes.go b/pkg/service_internal/mapfixes.go index 5526b20..0827424 100644 --- a/pkg/service_internal/mapfixes.go +++ b/pkg/service_internal/mapfixes.go @@ -74,6 +74,45 @@ func (svc *Service) UpdateMapfixValidatedModel(ctx context.Context, params inter return nil } +// ActionMapfixValidate invokes actionMapfixValidate operation. +// +// Role Validator changes status from Submitting -> Submitted. +// +// POST /mapfixes/{MapfixID}/status/validator-submitted +func (svc *Service) ActionMapfixSubmitted(ctx context.Context, params internal.ActionMapfixSubmittedParams) error { + // transaction + target_status := model.MapfixStatusSubmitted + smap := datastore.Optional() + smap.Add("status_id", target_status) + err := svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusSubmitting}, smap) + if err != nil { + return err + } + + event_data := model.AuditEventDataAction{ + TargetStatus: uint32(target_status), + } + + EventData, err := json.Marshal(event_data) + if err != nil { + return err + } + + _, err = svc.DB.AuditEvents().Create(ctx, model.AuditEvent{ + ID: 0, + User: ValidtorUserID, + ResourceType: model.ResourceMapfix, + ResourceID: params.MapfixID, + EventType: model.AuditEventTypeAction, + EventData: EventData, + }) + if err != nil { + return err + } + + return nil +} + // ActionMapfixValidate invokes actionMapfixValidate operation. // // Role Validator changes status from Validating -> Validated. diff --git a/pkg/service_internal/submissions.go b/pkg/service_internal/submissions.go index 164eb60..3250ca7 100644 --- a/pkg/service_internal/submissions.go +++ b/pkg/service_internal/submissions.go @@ -73,6 +73,45 @@ func (svc *Service) UpdateSubmissionValidatedModel(ctx context.Context, params i return nil } +// ActionSubmissionValidate invokes actionSubmissionValidate operation. +// +// Role Validator changes status from Submitting -> Submitted. +// +// POST /submissions/{SubmissionID}/status/validator-submitted +func (svc *Service) ActionSubmissionSubmitted(ctx context.Context, params internal.ActionSubmissionSubmittedParams) error { + // transaction + target_status := model.SubmissionStatusSubmitted + smap := datastore.Optional() + smap.Add("status_id", target_status) + err := svc.DB.Submissions().IfStatusThenUpdate(ctx, params.SubmissionID, []model.SubmissionStatus{model.SubmissionStatusSubmitting}, smap) + if err != nil { + return err + } + + event_data := model.AuditEventDataAction{ + TargetStatus: uint32(target_status), + } + + EventData, err := json.Marshal(event_data) + if err != nil { + return err + } + + _, err = svc.DB.AuditEvents().Create(ctx, model.AuditEvent{ + ID: 0, + User: ValidtorUserID, + ResourceType: model.ResourceSubmission, + ResourceID: params.SubmissionID, + EventType: model.AuditEventTypeAction, + EventData: EventData, + }) + if err != nil { + return err + } + + return nil +} + // ActionSubmissionValidate invokes actionSubmissionValidate operation. // // Role Validator changes status from Validating -> Validated.