github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/sys/invite/impl_initiatecancelacceptedinvite.go (about)

     1  /*
     2   * Copyright (c) 2023-present unTill Pro, Ltd.
     3   */
     4  
     5  package invite
     6  
     7  import (
     8  	"net/http"
     9  
    10  	"github.com/voedger/voedger/pkg/istructs"
    11  	"github.com/voedger/voedger/pkg/istructsmem"
    12  	"github.com/voedger/voedger/pkg/state"
    13  	coreutils "github.com/voedger/voedger/pkg/utils"
    14  )
    15  
    16  func provideCmdInitiateCancelAcceptedInvite(cfg *istructsmem.AppConfigType, timeFunc coreutils.TimeFunc) {
    17  	cfg.Resources.Add(istructsmem.NewCommandFunction(
    18  		qNameCmdInitiateCancelAcceptedInvite,
    19  		execCmdInitiateCancelAcceptedInvite(timeFunc),
    20  	))
    21  }
    22  
    23  func execCmdInitiateCancelAcceptedInvite(timeFunc coreutils.TimeFunc) func(args istructs.ExecCommandArgs) (err error) {
    24  	return func(args istructs.ExecCommandArgs) (err error) {
    25  		skbCDocInvite, err := args.State.KeyBuilder(state.Record, qNameCDocInvite)
    26  		if err != nil {
    27  			return
    28  		}
    29  		skbCDocInvite.PutRecordID(state.Field_ID, args.ArgumentObject.AsRecordID(field_InviteID))
    30  		svCDocInvite, ok, err := args.State.CanExist(skbCDocInvite)
    31  		if err != nil {
    32  			return
    33  		}
    34  		if !ok {
    35  			return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteNotExists)
    36  		}
    37  
    38  		if !isValidInviteState(svCDocInvite.AsInt32(field_State), qNameCmdInitiateCancelAcceptedInvite) {
    39  			return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteStateInvalid)
    40  		}
    41  
    42  		svbCDocInvite, err := args.Intents.UpdateValue(skbCDocInvite, svCDocInvite)
    43  		if err != nil {
    44  			return
    45  		}
    46  		svbCDocInvite.PutInt64(field_Updated, timeFunc().UnixMilli())
    47  		svbCDocInvite.PutInt32(field_State, State_ToBeCancelled)
    48  
    49  		return err
    50  	}
    51  }