Beispiel #1
0
        public async Task <Result <AccountResponseDto> > Details([FromQuery] long id)
        {
            long?tenancyId = HttpContext.User.IsSuperRole() ? null : Convert.ToInt64(HttpContext.User.TenancyId());
            var  result    = await _serviceProvider.GetRequiredService <AccountService>().GetDetails(id, tenancyId);

            if (!result.Success)
            {
                return(Result <AccountResponseDto> .ReFailure(result.Message, result.Status));
            }
            List <object> roles = new List <object>();

            if (result.Data.Department.Role != null && result.Data.Department.Role.Count > 0)
            {
                foreach (var value in result.Data.Department.Role.ToList())
                {
                    roles.Add(new
                    {
                        value.Id,
                        value.Name,
                        value.Enable,
                        value.Description,
                        value.CreateId,
                        value.CreateTime,
                        value.TenancyId
                    });
                }
            }

            if (result.Data.Role != null && result.Data.Role.Count > 0)
            {
                foreach (var value in result.Data.Role.ToList())
                {
                    roles.Add(new
                    {
                        value.Id,
                        Nmae = value.Name,
                        value.Enable,
                        value.Description,
                        value.CreateId,
                        value.CreateTime,
                        value.TenancyId
                    });
                }
            }
            AccountResponseDto data = _mapper.Map <AccountResponseDto>(result.Data);

            data.Roles = roles;
            return(Result <AccountResponseDto> .ReSuccess(data));
        }
Beispiel #2
0
        public async Task <IActionResult> AddAccount([FromBody] AccountRequestDto account)
        {
            AccountResponseDto createdAccount = await _service.AddAccount(account);

            if (createdAccount == null)
            {
                return(BadRequest(new
                {
                    Data = "Account already exists",
                    StatusCode = HttpStatusCode.BadRequest,
                    Message = ResponseMessages.FAILED
                }));
            }
            return(Ok(new { Data = createdAccount, StatusCode = (int)HttpStatusCode.Created, ResponseMessages.CREATED }));
        }
        public async Task <AccountResponseDto> Widthdraw(AccountDto accountDto)
        {
            AccountResponseDto accountResponse = new AccountResponseDto();

            try
            {
                if (accountDto.Amount <= 0)
                {
                    accountResponse.AccountNumber = accountDto.AccountNumber;
                    accountResponse.Successful    = false;
                    accountResponse.Message       = "please enter a valid amount";
                    return(accountResponse);
                }
                var accountRecord = await unitOfWork.Repository.GetById(accountDto.AccountNumber).ConfigureAwait(false);

                if (accountDto.Amount > accountRecord.Balance)
                {
                    accountResponse.AccountNumber = accountDto.AccountNumber;
                    accountResponse.Successful    = false;
                    accountResponse.Balance       = accountRecord.Balance;
                    accountResponse.Currency      = accountRecord.Currency;
                    accountResponse.Message       = "transaction failed due to insufficient balance";
                    return(accountResponse);
                }
                accountRecord.Balance -= accountDto.Amount;

                accountResponse.AccountNumber = accountDto.AccountNumber;
                accountResponse.Successful    = true;
                accountResponse.Balance       = accountRecord.Balance;
                accountResponse.Currency      = accountRecord.Currency;
                accountResponse.Message       = "transaction successful";

                unitOfWork.Repository.Update(accountRecord);
                await unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                accountResponse.AccountNumber = accountDto.AccountNumber;
                accountResponse.Successful    = true;
                accountResponse.Message       = "unable to process your request now. Please try again after sometime";
            }
            return(accountResponse);
        }
Beispiel #4
0
        public void GetAccountByName_Success()
        {
            using (BasicTestAppDbContext context = CreateInMemorianDB.CreateFreshInMemory())
            {
                //Arrange
                string          userId = "ValidName";
                SalesController ctrl   = GetController(context);

                //Act
                var result = ctrl.Get(userId);

                //Assert
                Assert.IsType <OkObjectResult>(result);

                OkObjectResult objectResult = (OkObjectResult)result;
                Assert.Equal(200, objectResult.StatusCode);
                Assert.IsAssignableFrom <AccountResponseDto>(objectResult.Value);

                AccountResponseDto response = (AccountResponseDto)objectResult.Value;
                Assert.Equal("Test", response.AccountName);
                Assert.True(response.CreatedBy.Contains("Fenix"));
            }
        }
        public async Task <AccountResponseDto> Deposit(AccountDto accountDto)
        {
            AccountResponseDto accountResponse = new AccountResponseDto();
            Account            account;

            try
            {
                if (accountDto.Amount <= 0)
                {
                    accountResponse.AccountNumber = accountDto.AccountNumber;
                    accountResponse.Successful    = false;
                    accountResponse.Message       = "please enter a valid amount";
                    return(accountResponse);
                }
                account = await unitOfWork.Repository.GetById(accountDto.AccountNumber);

                var balanceAmount = account.Balance + accountDto.Amount;

                accountResponse.AccountNumber = accountDto.AccountNumber;
                accountResponse.Successful    = true;
                accountResponse.Balance       = balanceAmount;
                accountResponse.Currency      = account.Currency;
                accountResponse.Message       = "transaction successful";

                account.Balance = balanceAmount;

                unitOfWork.Repository.Update(account);
                await unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                accountResponse.AccountNumber = accountDto.AccountNumber;
                accountResponse.Successful    = false;
                accountResponse.Message       = $"invalid account {ex.Message}";
            }
            return(accountResponse);
        }
        public async Task <AccountResponseDto> Balance(long id)
        {
            AccountResponseDto accountResponse = new AccountResponseDto();
            Account            account;

            try
            {
                account = await unitOfWork.Repository.GetById(id);

                accountResponse.AccountNumber = account.Id;
                accountResponse.Successful    = true;
                accountResponse.Balance       = account.Balance;
                accountResponse.Currency      = account.Currency;
                accountResponse.Message       = "transaction successful";
                return(accountResponse);
            }
            catch (Exception ex)
            {
                accountResponse.AccountNumber = id;
                accountResponse.Successful    = false;
                accountResponse.Message       = "unable to process your request now. Please try again after sometime";
            }
            return(accountResponse);
        }
        public AccountResponseDto Convert(AccountData acc, HashSet <string> requiredFields)
        {
            var res = new AccountResponseDto
            {
                Id    = acc.Id,
                Email = acc.Email
            };

            if (requiredFields.Contains(Names.FName))
            {
                res.FName = _repo.FNameData.GetValue(acc.FNameIndex);
            }

            if (requiredFields.Contains(Names.SName))
            {
                res.SName = _repo.SNameData.GetValue(acc.SNameIndex);
            }

            if (requiredFields.Contains(Names.Sex))
            {
                res.Sex = _repo.SexData.GetValue(acc.Sex);
            }

            if (requiredFields.Contains(Names.Status))
            {
                res.Status = _repo.StatusData.GetValue(acc.Status);
            }

            if (requiredFields.Contains(Names.City))
            {
                res.City = _repo.CityData.GetValue(acc.CityIndex);
            }

            if (requiredFields.Contains(Names.Country))
            {
                res.Country = _repo.CountryData.GetValue(acc.CountryIndex);
            }

            if (requiredFields.Contains(Names.Phone))
            {
                res.Phone = acc.Phone;
            }

            if (requiredFields.Contains(Names.Birth))
            {
                res.Birth = acc.Birth;
            }

            if (requiredFields.Contains(Names.Premium))
            {
                var premium = new PremiumDto
                {
                    Start  = acc.PremiumStart,
                    Finish = acc.PremiumFinish,
                };

                res.Premium = premium;
            }

            return(res);
        }