Exemplo n.º 1
0
        public override async Task <Confirming> ConfirmingIdentity(ConfirmingRequest request, ServerCallContext context)
        {
            var query   = new GetAccountByIdQuery(request.Id.ToAccountId());
            var account = await _mediator.Send(query, context.CancellationToken);

            if (account is null)
            {
                context.Status = new Status(StatusCode.NotFound, ElwarkExceptionCodes.AccountNotFound);
                return(new Confirming());
            }

            if (account.GetIdentity(request.Identity.ToIdentityKey()) is EmailIdentityModel identity)
            {
                var confirmationId = await _mediator.Send(
                    new SendConfirmationCommand(account.Id, identity.GetIdentity(), _language),
                    context.CancellationToken
                    );

                return(new Confirming
                {
                    Id = confirmationId.ToString()
                });
            }

            context.Status = new Status(StatusCode.NotFound, ElwarkExceptionCodes.AccountNotFound);
            return(new Confirming());
        }
Exemplo n.º 2
0
        public override async Task <Confirming> CreatingPassword(AccountId request, ServerCallContext context)
        {
            var query   = new GetAccountByIdQuery(request.ToAccountId());
            var account = await _mediator.Send(query, context.CancellationToken);

            if (account is null)
            {
                context.Status = new Status(StatusCode.NotFound, ElwarkExceptionCodes.AccountNotFound);
                return(new Confirming());
            }

            if (account.IsPasswordAvailable())
            {
                context.Status = new Status(StatusCode.InvalidArgument, ElwarkExceptionCodes.PasswordAlreadyCreated);
                return(new Confirming());
            }

            var confirmationId = await _mediator.Send(
                new SendConfirmationCommand(account.Id, account.GetPrimaryEmail().GetIdentity(), _language),
                context.CancellationToken
                );

            return(new Confirming
            {
                Id = confirmationId.ToString()
            });
        }
Exemplo n.º 3
0
        public async Task <IActionResult> GetAccountById(int accountId)
        {
            var query  = new GetAccountByIdQuery(accountId);
            var result = await Mediator.Send(query);

            return(result != null ? (IActionResult)Ok(result) : NotFound());
        }
Exemplo n.º 4
0
        public async Task <ActionResult <string> > GetAccountByIdQuery(string id)
        {
            var query  = new GetAccountByIdQuery(id);
            var result = await _mediator.Send(query);

            return(result != null ? (ActionResult <string>)Ok(result) : NotFound());
        }
Exemplo n.º 5
0
        public async Task <ActionResult <Account> > Get(String id)
        {
            try
            {
                var query  = new GetAccountByIdQuery(id);
                var result = await _mediator.Send(query);

                _logger.LogInformation("Get account by id " + id + " request");
                return(result != null ? (ActionResult <Account>)Ok(result) : NotFound());
            }
            catch (Exception e)
            {
                _logger.LogError("Error while processing Get account by id " + id + " request: " + e);
                return(NotFound());
            }
        }
        public async Task ShouldReturnTheAccount()
        {
            var name = "test1";

            var account = new Account(name, AccountType.Checking, 0, new Currency("test", "TST"));

            await Fixture.AddAsync(account);

            var query = new GetAccountByIdQuery()
            {
                Id = account.Id
            };

            var accountDto = await Fixture.SendAsync(query);

            accountDto.Name.Should().Be(name);
            accountDto.Id.Should().Be(account.Id);
        }
        public async Task <Account> GetAccountById(GetAccountByIdQuery query, CancellationToken cancellationToken)
        {
            var conn = await Connect();

            var     streamName   = query.AccountId.Value;
            Account _account     = new Account(AccountId.With(streamName));
            var     streamEvents = conn.ReadStreamEventsForwardAsync(streamName, 0, 100, true, _adminCredentials).Result;

            foreach (var evt in streamEvents.Events)
            {
                var json    = Encoding.UTF8.GetString(evt.Event.Data);
                var account = JsonConvert.DeserializeObject <AccountReadModel>(json);
                if (!string.IsNullOrEmpty(account.HolderName))
                {
                    _account.HolderName = account.HolderName;
                    _account.Balance    = account.Balance;
                }

                if (!string.IsNullOrEmpty(account.AccountState))
                {
                    _account.AccountState = account.AccountState;
                }


                if (!account.Amount.Equals(default(float)))
                {
                    if (evt.Event.EventType.ToLower().Contains("withdraw"))
                    {
                        _account.Balance -= account.Amount;
                    }

                    if (evt.Event.EventType.ToLower().Contains("deposit"))
                    {
                        if (evt.Event.EventType.ToLower().Contains("cash"))
                        {
                            _account.Balance += account.Amount;
                        }

                        if (evt.Event.EventType.ToLower().Contains("check"))
                        {
                            var date        = evt.Event.Created;
                            var depositDate = date.AddDays(1);
                            while (!(depositDate.DayOfWeek >= DayOfWeek.Monday && depositDate.DayOfWeek <= DayOfWeek.Friday))
                            {
                                depositDate = depositDate.AddDays(1);
                            }
                            if (DateTime.UtcNow.Date >= depositDate.Date)
                            {
                                _account.Balance += account.Amount;
                            }
                        }
                    }
                }

                if (!account.DailyWireTransferLimit.Equals(default(float)))
                {
                    _account.DailyWireTransferLimit = account.DailyWireTransferLimit;
                }

                if (!account.OverDraftLimit.Equals(default(float)))
                {
                    _account.OverDraftLimit = account.OverDraftLimit;
                }
            }
            conn.Close();
            return(_account);
        }