Beispiel #1
0
        protected override async Task HandleCore(TransferApprovalCommand message)
        {
            var commitment =
                await _commitmentsService.GetTransferSenderCommitment(message.TransferSenderId, message.CommitmentId);

            if (commitment.TransferSender.Id != message.TransferSenderId)
            {
                throw new InvalidRequestException(new Dictionary <string, string>
                {
                    { "Commitment", "This commitment does not belong to this Transfer Sender Account" }
                });
            }

            if (commitment.TransferSender.TransferApprovalStatus !=
                Commitments.Api.Types.TransferApprovalStatus.Pending)
            {
                var status = commitment.TransferSender.TransferApprovalStatus ==
                             Commitments.Api.Types.TransferApprovalStatus.Approved
                    ? "approved"
                    : "rejected";

                throw new InvalidRequestException(new Dictionary <string, string>
                {
                    { "Commitment", $"This transfer request has already been {status}" }
                });
            }

            var request = new TransferApprovalRequest
            {
                TransferApprovalStatus = message.TransferStatus,
                TransferReceiverId     = commitment.EmployerAccountId,
                UserId    = message.UserId,
                UserEmail = message.UserEmail,
                UserName  = message.UserName
            };

            await _commitmentsService.PatchTransferApprovalStatus(message.TransferSenderId, message.CommitmentId, message.TransferRequestId, request);

            await SendNotifications(commitment, message.TransferStatus);
        }
        public async Task <GetCommitmentQueryResponse> Handle(GetCommitmentQueryRequest message)
        {
            CommitmentView commitment = null;

            switch (message.CallerType)
            {
            case CallerType.Employer:
                commitment = await _commitmentsApi.GetEmployerCommitment(message.AccountId, message.CommitmentId);

                break;

            case CallerType.TransferSender:
                commitment = await _commitmentsApi.GetTransferSenderCommitment(message.AccountId, message.CommitmentId);

                break;
            }

            return(new GetCommitmentQueryResponse
            {
                Commitment = commitment
            });
        }