예제 #1
0
        public async Task <ResponseCheckTx> CheckTx(TransactionToken transactionToken, object data, RequestCheckTx request, ServerCallContext context)
        {
            if (!(data is RequestTransfer payload))
            {
                return(ResponseHelper.Check.NoPayload());
            }

            if (!IsVerifiedCaller(transactionToken, payload.NewOwner))
            {
                return(ResponseHelper.Check.Unauthorized());
            }

            _logger.LogInformation("Received valid CheckTx request");

            var callNumber = await _callNumberRepository.Get(payload.PhoneNumber);

            if (callNumber == null)
            {
                return(ResponseHelper.Check.Create(CodeType.UnknownCallNumber, "Unknown call number."));
            }

            if (callNumber.TransferRequestStarted.HasValue)
            {
                return(ResponseHelper.Check.Create(CodeType.TransferAlreadyStarted, "Transfer has already been started."));
            }

            _logger.LogInformation("CheckTx Result: ok");

            return(ResponseHelper.Check.Ok());
        }
        public async Task <ResponseCheckTx> CheckTx(TransactionToken transactionToken, object data, RequestCheckTx request, ServerCallContext context)
        {
            if (!(data is DenyTransferRequest payload))
            {
                return(ResponseHelper.Check.NoPayload());
            }

            var callNumber = await _callNumberRepository.Get(payload.PhoneNumber);

            if (callNumber == null)
            {
                return(ResponseHelper.Check.Create(CodeType.UnknownCallNumber, "Unknown call number."));
            }

            if (!IsVerifiedCaller(transactionToken, callNumber.Owner))
            {
                return(ResponseHelper.Check.Unauthorized());
            }

            if (callNumber.TransferRequestedTo != payload.NewOwner)
            {
                return(ResponseHelper.Check.Create(CodeType.UnknownNewOwner, "Unknown new owner."));
            }

            if (!callNumber.TransferRequestStarted.HasValue)
            {
                return(ResponseHelper.Check.Create(CodeType.NoTransferInitiated, "Transfer was not initiated."));
            }

            return(ResponseHelper.Check.Ok());
        }
        public async Task <ResponseCheckTx> CheckTx(TransactionToken transactionToken, CreateNumber payload, RequestCheckTx request, ServerCallContext context)
        {
            if (!IsVerifiedCaller(transactionToken))
            {
                return(ResponseHelper.Check.Unauthorized());
            }

            _logger.LogInformation("Received valid CheckTx request");

            var result = await _callNumberRepository.Get(payload.PhoneNumber);

            _logger.LogInformation($"CheckTx Result: {result == null}");
            return(ResponseHelper.Check.Create(result == null ? CodeType.Ok : CodeType.PhoneNumberAlreadyExists, result == null ? "" : "Phonenumber already exists."));
        }