github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/sys/invite/impl_cancelsentinvite.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 provideCmdCancelSentInvite(cfg *istructsmem.AppConfigType, timeFunc coreutils.TimeFunc) {
    17  	cfg.Resources.Add(istructsmem.NewCommandFunction(
    18  		qNameCmdCancelSentInvite,
    19  		execCmdCancelSentInvite(timeFunc),
    20  	))
    21  }
    22  
    23  func execCmdCancelSentInvite(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  
    35  		if !ok {
    36  			return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteNotExists)
    37  		}
    38  
    39  		if !isValidInviteState(svCDocInvite.AsInt32(field_State), qNameCmdCancelSentInvite) {
    40  			return coreutils.NewHTTPError(http.StatusBadRequest, ErrInviteStateInvalid)
    41  		}
    42  
    43  		svbCDocInvite, err := args.Intents.UpdateValue(skbCDocInvite, svCDocInvite)
    44  		if err != nil {
    45  			return
    46  		}
    47  		svbCDocInvite.PutInt64(field_Updated, timeFunc().UnixMilli())
    48  		svbCDocInvite.PutInt32(field_State, State_Cancelled)
    49  
    50  		return
    51  	}
    52  }