コード例 #1
0
        public IActionResult GetBrokerInitData(Guid brokerTradeServerId)
        {
            var errors = brokerValidator.ValidateGetBrokerInitData(CurrentUser, brokerTradeServerId);

            if (errors.Any())
            {
                return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError)));
            }

            var requests = managerService.GetCreateAccountRequests(brokerTradeServerId);

            if (!requests.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(requests.Errors)));
            }

            var investments = trustManagementService.GetBrokerInvestmentsInitData(brokerTradeServerId);

            if (!investments.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(investments.Errors)));
            }

            var data = new BrokerInitData
            {
                NewManagerRequest = requests.Data,
                Investments       = investments.Data
            };

            return(Ok(data));
        }
コード例 #2
0
        public async Task <IActionResult> Authorize([FromBody] LoginViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            var user = await userManager.FindByNameAsync(model.Email);

            if (user == null)
            {
                return(BadRequest(ErrorResult.GetResult($"Wrong email/password")));
            }

            if (await userManager.CheckPasswordAsync(user, model.Password))
            {
                if (!await userManager.IsEmailConfirmedAsync(user))
                {
                    return(BadRequest(ErrorResult.GetResult("Email does not confirmed")));
                }

                if (!user.IsEnabled)
                {
                    return(BadRequest(ErrorResult.GetResult("User is disabled")));
                }

                var token = JwtManager.GenerateToken(user);
                return(Ok(token.Value));
            }

            return(BadRequest(ErrorResult.GetResult("Wrong email/password")));
        }
コード例 #3
0
        public IActionResult GetInvestmentProgramRequests([FromBody] InvestmentProgramRequestsFilter filter)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            var errors = investorValidator.ValidateInvestor(CurrentUser);

            if (errors.Any())
            {
                return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError)));
            }

            var requests = trustManagementService.GetInvestmentProgramRequests(filter, CurrentUser.Id);

            if (!requests.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(requests)));
            }

            return(Ok(new InvestmentProgramRequests
            {
                Requests = requests.Data.Item1,
                Total = requests.Data.Item2
            }));
        }
コード例 #4
0
        public IActionResult RegisterParticipant([FromBody] NewParticipant model)
        {
            logger.LogInformation($"#RegisterParticipant. {model?.Email}, {model?.Name}, {model?.EthAddress}, {model?.Avatar}");

            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            var state = tournamentService.CheckNewParticipant(model);

            if (!state.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(state)));
            }

            var res = tournamentService.RegisterParticipant(model);

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res)));
            }

            logger.LogInformation($"#RegisterParticipant. {model?.Email}: OK");
            return(Ok());
        }
コード例 #5
0
ファイル: ManagerController.cs プロジェクト: wigewige/core
        public IActionResult NewInvestmentRequest([FromBody] NewInvestmentRequest request)
        {
            request.UserId = CurrentUser.Id;

            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            var errors = managerValidator.ValidateNewInvestmentRequest(CurrentUser, request);

            if (errors.Any())
            {
                return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError)));
            }

            var result = managerService.CreateNewInvestmentRequest(request);

            if (!result.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(result)));
            }

            return(Ok(result.Data));
        }
コード例 #6
0
        public async Task <IActionResult> RegisterInvestor([FromBody] RegisterInvestorViewModel model)
        {
            logger.LogInformation($"Register investor: {model?.Email}");

            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            var address = ethService.GenerateAddress();
            var user    = new ApplicationUser
            {
                UserName  = model.Email,
                Email     = model.Email,
                IsEnabled = true,
                Type      = UserType.Investor,
                Profile   = new Profiles(),
                Wallets   = new List <Wallets> {
                    new Wallets {
                        Currency = Currency.GVT
                    }
                },
                InvestorAccount     = new InvestorAccounts(),
                BlockchainAddresses = new List <BlockchainAddresses>
                {
                    new BlockchainAddresses
                    {
                        Address   = address.PublicAddress,
                        Currency  = Currency.GVT,
                        IsDefault = true
                    }
                }
            };
            var result = await userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return(BadRequest(ErrorResult.GetResult(result)));
            }

            var code = await userManager.GenerateEmailConfirmationTokenAsync(user);

            if (Constants.IsDevelopment)
            {
                await userManager.ConfirmEmailAsync(user, code);

                return(Ok());
            }
            else
            {
                var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code }, HttpContext.Request.Scheme);
                var text        = $"Confirmation url: {callbackUrl}";
                emailSender.SendEmailAsync(model.Email, "Registration", text, text);
                return(Ok());
            }
        }
コード例 #7
0
        public IActionResult UpdateAuthToken()
        {
            if (CurrentUser.IsEnabled && CurrentUser.EmailConfirmed)
            {
                var token = JwtManager.GenerateToken(CurrentUser);
                return(Ok(token.Value));
            }

            return(BadRequest(ErrorResult.GetResult(ValidationMessages.AccessDenied)));
        }
コード例 #8
0
        public IActionResult UpdateProfile([FromBody] UpdateProfileViewModel model)
        {
            var res = userService.UpdateUserProfile(CurrentUser.Id, model);

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res)));
            }

            return(Ok());
        }
コード例 #9
0
        public IActionResult ProfileFull()
        {
            var user = userService.GetUserProfileFull(CurrentUser.Id);

            if (!user.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(user)));
            }

            return(Ok(user.Data));
        }
コード例 #10
0
        public IActionResult ProfileShort(Guid userId)
        {
            var user = userService.GetUserPublicProfile(userId);

            if (!user.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(user)));
            }

            return(Ok(user.Data));
        }
コード例 #11
0
        public IActionResult GetParticipantsSummary()
        {
            var res = tournamentService.GetParticipantsSummary();

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res)));
            }

            return(Ok(res.Data));
        }
コード例 #12
0
        public IActionResult GetUserWallets()
        {
            var wallets = walletService.GetUserWallets(CurrentUser.Id);

            if (!wallets.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(wallets)));
            }

            return(Ok(wallets.Data));
        }
コード例 #13
0
        public IActionResult UploadFile(IFormFile uploadedFile)
        {
            var result = fileService.Upload(uploadedFile, CurrentUser?.Id);

            if (!result.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(result)));
            }

            return(Ok(result.Data));
        }
コード例 #14
0
        public IActionResult InvestorDashboard()
        {
            var data = trustManagementService.GetInvestorDashboard(CurrentUser.Id, CurrentUser?.Id, CurrentUser?.Type);

            if (!data.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(data)));
            }

            return(Ok(data.Data));
        }
コード例 #15
0
        public IActionResult GetInvestmentProgramsWithTx(string mask)
        {
            var data = walletService.GetInvestmentProgramsWithTx(mask, CurrentUser.Id);

            if (!data.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(data)));
            }

            return(Ok(data.Data));
        }
コード例 #16
0
        public IActionResult GetWalletAddress()
        {
            var address = walletService.GetUserDefaultBlockchainAddress(CurrentUser.Id);

            if (!address.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(address)));
            }

            return(Ok(address.Data));
        }
コード例 #17
0
        public IActionResult GetWalletTransactions([FromBody] TransactionsFilter filter)
        {
            var data = walletService.GetTransactionHistory(CurrentUser.Id, filter ?? new TransactionsFilter());

            if (!data.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(data)));
            }

            return(Ok(new WalletTransactionsViewModel
            {
                Transactions = data.Data.Item1,
                Total = data.Data.Item2
            }));
        }
コード例 #18
0
        public IActionResult GetBrokers([FromBody] BrokersFilter filter)
        {
            var data = trustManagementService.GetBrokerTradeServers(filter ?? new BrokersFilter());

            if (!data.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(data.Errors)));
            }

            return(Ok(new BrokersViewModel
            {
                Brokers = data.Data.Item1,
                Total = data.Data.Item2
            }));
        }
コード例 #19
0
        public IActionResult GetInvestmentPrograms([FromHeader(Name = "Authorization")] string token, [FromBody] InvestmentProgramsFilter filter)
        {
            var data = trustManagementService.GetInvestmentPrograms(filter ?? new InvestmentProgramsFilter(), CurrentUser?.Id, CurrentUser?.Type);

            if (!data.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(data)));
            }

            return(Ok(new InvestmentProgramsViewModel
            {
                InvestmentPrograms = data.Data.Item1,
                Total = data.Data.Item2
            }));
        }
コード例 #20
0
        public IActionResult Participants([FromBody] ParticipantsFilter filter)
        {
            var res = tournamentService.GetParticipants(filter);

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res)));
            }

            return(Ok(new ParticipantsViewModel
            {
                Participants = res.Data.Item1,
                Total = res.Data.Item2
            }));
        }
コード例 #21
0
        public IActionResult GetManagerOpenTrades([FromBody] TradesFilter filter)
        {
            var trades = tradesService.GetManagerOpenTrades(filter);

            if (!trades.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(trades)));
            }

            return(Ok(new OpenTradesViewModel
            {
                Trades = trades.Data.Item1,
                Total = trades.Data.Item2
            }));
        }
コード例 #22
0
        public IActionResult NewTrade([FromBody] NewTrade trade)
        {
            if (!HttpContext.IsLocalRequest())
            {
                return(BadRequest());
            }

            var res = tradeServerService.NewTrade(trade);

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res)));
            }

            return(Ok());
        }
コード例 #23
0
        public IActionResult TradeAccountCreated([FromBody] List <AccountCreated> accounts)
        {
            if (!HttpContext.IsLocalRequest())
            {
                return(BadRequest());
            }

            var res = tradeServerService.TradeAccountsCreated(accounts);

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res)));
            }

            return(Ok());
        }
コード例 #24
0
        public IActionResult GetInitData(Guid tradeServerId)
        {
            if (!HttpContext.IsLocalRequest())
            {
                return(BadRequest());
            }

            var res = tradeServerService.GetInitData(tradeServerId);

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res)));
            }

            return(Ok(res.Data));
        }
コード例 #25
0
        public async Task <IActionResult> ConfirmEmail(string userId, string code)
        {
            if (userId == null || code == null)
            {
                return(BadRequest(ErrorResult.GetResult("Empty userId/code")));
            }

            var user = await userManager.FindByIdAsync(userId);

            var result = await userManager.ConfirmEmailAsync(user, code);

            if (result.Succeeded)
            {
                return(BadRequest(ErrorResult.GetResult(result)));
            }

            return(Ok());
        }
コード例 #26
0
        public IActionResult NewOpenTrades([FromBody] NewOpenTradesEvent trades)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            var errors = brokerValidator.ValidateNewOpenTrades(CurrentUser, trades);

            if (errors.Any())
            {
                return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError)));
            }

            tradesService.SaveNewOpenTrade(trades);

            return(Ok());
        }
コード例 #27
0
        public IActionResult ProcessClosingProgram(Guid investmentProgramId, decimal managerBalance)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            var errors = brokerValidator.ValidateProcessClosingProgram(CurrentUser, investmentProgramId);

            if (errors.Any())
            {
                return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError)));
            }

            trustManagementService.ProcessClosingProgram(investmentProgramId, managerBalance);

            return(Ok());
        }
コード例 #28
0
        public IActionResult ReevaluateManagerToken(Guid investmentProgramId, decimal investorLossShare)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResult.GetResult(ModelState)));
            }

            var errors = brokerValidator.ValidateReevaluateManagerToken(CurrentUser, investmentProgramId);

            if (errors.Any())
            {
                return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError)));
            }

            trustManagementService.ReevaluateManagerToken(investmentProgramId, investorLossShare);

            return(Ok());
        }
コード例 #29
0
        public IActionResult CreateManagerAccount([FromBody] NewManager request)
        {
            var errors = brokerValidator.ValidateCreateManagerAccount(CurrentUser, request);

            if (errors.Any())
            {
                return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError)));
            }

            var result = trustManagementService.CreateInvestmentProgram(request);

            if (!result.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(result)));
            }

            return(Ok(result.Data));
        }
コード例 #30
0
        public IActionResult CancelInvestmentRequest(Guid requestId)
        {
            var errors = investorValidator.ValidateCancelInvestmentRequest(CurrentUser, requestId);

            if (errors.Any())
            {
                return(BadRequest(ErrorResult.GetResult(errors, ErrorCodes.ValidationError)));
            }

            var res = trustManagementService.CancelInvestmentRequest(requestId);

            if (!res.IsSuccess)
            {
                return(BadRequest(ErrorResult.GetResult(res.Errors)));
            }

            return(Ok());
        }