コード例 #1
0
        public List <string> ValidateWithdraw(ApplicationUser user, Invest model)
        {
            if (!user.IsEnabled || user.Type != UserType.Manager || user.Id != model.UserId)
            {
                return new List <string> {
                           ValidationMessages.AccessDenied
                }
            }
            ;

            var result = new List <string>();

            var investmentProgram = context.InvestmentPrograms
                                    .Include(x => x.Periods)
                                    .ThenInclude(x => x.InvestmentRequests)
                                    .FirstOrDefault(x => x.Id == model.InvestmentProgramId);

            if (investmentProgram == null)
            {
                return new List <string> {
                           $"Does not find investment program id \"{model.InvestmentProgramId}\""
                }
            }
            ;

            if (investmentProgram.ManagerAccountId != user.Id)
            {
                return new List <string> {
                           $"Manager can withdraw only from his own programs"
                }
            }
            ;

            var lastPeriod = investmentProgram.Periods
                             .OrderByDescending(x => x.Number)
                             .FirstOrDefault();

            if (lastPeriod == null || lastPeriod.Status != PeriodStatus.Planned)
            {
                return new List <string> {
                           "There are no new period for investment program"
                }
            }
            ;

            if (lastPeriod.InvestmentRequests.Any(x => x.UserId == user.Id && x.Type == InvestmentRequestType.Invest))
            {
                return new List <string> {
                           "Withdrawal request can't be created having pending investment request"
                }
            }
            ;

            if (model.Amount <= 0)
            {
                result.Add("Amount must be greater than zero");
            }

            return(result);
        }
コード例 #2
0
        public OperationResult RequestForWithdraw(Invest model)
        {
            return(InvokeOperations.InvokeOperation(() =>
            {
                var investor = context.Users
                               .First(x => x.Id == model.UserId);

                var lastPeriod = context.Periods
                                 .Where(x => x.InvestmentProgramId == model.InvestmentProgramId)
                                 .OrderByDescending(x => x.Number)
                                 .First();

                var invRequest = new InvestmentRequests
                {
                    Id = Guid.NewGuid(),
                    UserId = model.UserId,
                    Amount = model.Amount,
                    Date = DateTime.UtcNow,
                    InvestmentProgramtId = model.InvestmentProgramId,
                    Status = InvestmentRequestStatus.New,
                    Type = InvestmentRequestType.Withdrawal,
                    PeriodId = lastPeriod.Id
                };

                context.Add(invRequest);
                context.SaveChanges();
            }));
        }
コード例 #3
0
        public int LastAddedInvestlNo()
        {
            // int a = lastAdded;
            InvestmentGateway inGateway = new InvestmentGateway();
            Invest            invest    = new Invest();

            DBManager     manager    = new DBManager();
            SqlConnection connection = manager.Connection();


            string     selectQuery = "SELECT [S.No] From Books";
            SqlCommand cmd         = new SqlCommand(selectQuery, connection);

            connection.Open();
            SqlDataReader reader  = cmd.ExecuteReader();
            List <int>    totalId = new List <int>();

            while (reader.Read())
            {
                int aId = Convert.ToInt16(reader[0]);


                totalId.Add(aId);
            }
            if (totalId.Count.Equals(0))
            {
                return(0);
            }
            else
            {
                int x = totalId.Max();
                //idTextBox.Text = x.ToString();
                return(x);
            }
        }
コード例 #4
0
        public ActionResult Caclulate(Invest invest)
        {
            try
            {
                InvestMetods investMetods      = new InvestMetods();
                double       periodInvestMonth = investMetods.CountMonth(invest);
                if (periodInvestMonth < 1)
                {
                    return(View("Index"));
                }
                int numOfmonth = (int)Math.Ceiling(periodInvestMonth);

                double procInMonth = invest.annualProcR / 12 / 100;  //% invest Month
                double K           = procInMonth * Math.Pow((1 + procInMonth), periodInvestMonth) / (Math.Pow((1 + procInMonth), periodInvestMonth) - 1);

                ViewBag.NumOfMonth       = numOfmonth;
                ViewBag.PaidOfMonth      = invest.investAmountX * K;
                ViewBag.FinishRefundDate = invest.calculation_date;

                return(View("Index", invest));
            }
            catch (Exception)
            {
                return(View("Index"));
            }
        }
コード例 #5
0
ファイル: AccountService.cs プロジェクト: dcmuir01/Invest
        private AccountDto ConvertToDto(Invest.Domain.Models.Account accountModel)
        {
            var accountDto = new AccountDto();

            accountDto.Id = accountModel.Id;
            accountDto.Name = accountModel.Name;

            return accountDto;
        }
コード例 #6
0
 void JD_onInvest(Invest InvestResult)
 {
     UpdateLable(lblInvestInvested, InvestResult.Amount.ToString());
     UpdateLable(lblInvestPercentage, InvestResult.Percentage.ToString());
     UpdateLable(lblMeInvested, InvestResult.Amount.ToString());
     UpdateLable(lblMeInvestProfit, InvestResult.Profit.ToString());
     UpdateLable(lblStatsINvestedOn, InvestResult.Amount.ToString());
     UpdateLable(lblStatsInvestedTotal, (InvestResult.Amount + InvestResult.Offsite).ToString());
     UpdateLable(lblStatsInvestProfit, InvestResult.Profit.ToString());
     UpdateLable(lblStatsInvestedOff, InvestResult.Offsite.ToString());
 }
コード例 #7
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Invest = await _context.Invests
                     .Include(i => i.Member).FirstOrDefaultAsync(m => m.InvestId == id);

            if (Invest == null)
            {
                return(NotFound());
            }
            return(Page());
        }
コード例 #8
0
ファイル: Edit.cshtml.cs プロジェクト: sayed83/POS_Rezor
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Invest = await _context.Invests
                     .Include(i => i.Member).FirstOrDefaultAsync(m => m.InvestId == id);

            if (Invest == null)
            {
                return(NotFound());
            }
            ViewData["MemberId"] = new SelectList(_context.Members, "MemberId", "MemberName");
            return(Page());
        }
コード例 #9
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Invest = await _context.Invests.FindAsync(id);

            if (Invest != null)
            {
                _context.Invests.Remove(Invest);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
コード例 #10
0
        public OperationResult Invest(Invest model)
        {
            return(InvokeOperations.InvokeOperation(() =>
            {
                var investor = context.Users
                               .Include(x => x.Wallets)
                               .First(x => x.Id == model.UserId);
                var wallet = investor.Wallets.First(x => x.Currency == Currency.GVT);
                var lastPeriod = context.Periods
                                 .Where(x => x.InvestmentProgramId == model.InvestmentProgramId)
                                 .OrderByDescending(x => x.Number)
                                 .First();

                var tx = new WalletTransactions
                {
                    Id = Guid.NewGuid(),
                    Type = WalletTransactionsType.InvestToProgram,
                    WalletId = wallet.Id,
                    Amount = model.Amount,
                    Date = DateTime.UtcNow,
                    InvestmentProgramtId = model.InvestmentProgramId
                };

                var invRequest = new InvestmentRequests
                {
                    Id = Guid.NewGuid(),
                    UserId = model.UserId,
                    Amount = model.Amount,
                    Date = DateTime.UtcNow,
                    InvestmentProgramtId = model.InvestmentProgramId,
                    Status = InvestmentRequestStatus.New,
                    Type = InvestmentRequestType.Invest,
                    PeriodId = lastPeriod.Id,
                    WalletTransactionId = tx.Id
                };

                wallet.Amount -= model.Amount;

                context.Add(invRequest);
                context.Add(tx);
                context.SaveChanges();
            }));
        }
コード例 #11
0
        public IActionResult RequestForWithdraw([FromBody] Invest model)
        {
            model.UserId = CurrentUser.Id;

            var errors = investorValidator.ValidateWithdraw(CurrentUser, model);

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

            var res = trustManagementService.RequestForWithdraw(model);

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

            return(Ok());
        }
コード例 #12
0
        private void ShowAllButton(object sender, EventArgs e)
        {
            InvestmentGateway inGateway = new InvestmentGateway();
            Invest            invest    = new Invest();
            double            total;
            DBManager         manager    = new DBManager();
            SqlConnection     connection = manager.Connection();

            string     selectQuery = "SELECT Sum(Book) ,sum(Paper),sum(Ink),sum(Equipment),sum(Others) From InvestmentCost";
            SqlCommand cmd         = new SqlCommand(selectQuery, connection);

            connection.Open();
            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                string a = reader[0].ToString();
                string b = reader[1].ToString();
                string c = reader[2].ToString();
                string d = reader[3].ToString();
                string y = reader[4].ToString();


                if (a.Equals("") && b.Equals("") && c.Equals("") && d.Equals("") && y.Equals(""))
                {
                    MessageBox.Show("NO data found", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                else
                {
                    showBookCostTextBox.Text      = reader[0].ToString();
                    showpaperCostTextBox.Text     = reader[1].ToString();
                    showInkCostTextBox.Text       = reader[2].ToString();
                    showEquipmentCostTextBox.Text = reader[3].ToString();
                    showOthersCostTextBox.Text    = reader[4].ToString();

                    total = (Convert.ToDouble(reader[0]) + Convert.ToDouble(reader[1]) + Convert.ToDouble(reader[2]) + Convert.ToDouble(reader[3]) + Convert.ToDouble(reader[4]));
                    showToataCostTextBox.Text = total.ToString();
                }
            }
        }
コード例 #13
0
        private void SaveButton_Click(object sender, EventArgs e)
        {
            try
            {
                Invest anInvest = new Invest();
                anInvest.Id        = Convert.ToInt16(idTextBox.Text);
                anInvest.Book      = Convert.ToDouble(bookTextBox.Text);
                anInvest.Paper     = Convert.ToDouble(paperTextBox.Text);
                anInvest.Ink       = Convert.ToDouble(inkTextBOx.Text);
                anInvest.Equipment = Convert.ToDouble(equipmentTextBox.Text);
                anInvest.Others    = Convert.ToDouble(othersTextBox.Text);
                anInvest.Date      = dateTimePicker1.Text;
                lastAdded          = Convert.ToInt16(idTextBox.Text);

                InvestmentGateway gateway = new InvestmentGateway();
                string            status  = gateway.SaveTotalInvestment(anInvest);
                MessageBox.Show(status, "Status", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LastAddedInvestlNo();
                DBManager     manager     = new DBManager();
                SqlConnection connection  = manager.Connection();
                string        updateQuery = "UPDATE FInvestmentCost set FBook='" + bookTextBox.Text + "',FPaper='" + paperTextBox.Text + "',FInk='" + inkTextBOx.Text + "',FEquipment='" + equipmentTextBox.Text + "',FOthers='" + othersTextBox.Text + "',FInvestment_Date='" + dateTimePicker1.Text + "' WHERE FId='" + 1 + "'";
                SqlCommand    updateCmd   = new SqlCommand(updateQuery, connection);
                connection.Open();
                int x = updateCmd.ExecuteNonQuery();
                connection.Close();
                string     query    = "INSert INTo InvestmentCost values('" + bookTextBox.Text + "','" + paperTextBox.Text + "','" + inkTextBOx.Text + "','" + equipmentTextBox.Text + "','" + othersTextBox.Text + "','" + dateTimePicker1.Text + "')";
                SqlCommand command3 = new SqlCommand(query, connection);
                connection.Open();
                int y = command3.ExecuteNonQuery();
                last           = LastAddedInvestlNo();
                idTextBox.Text = last.ToString();

                connection.Close();
                ClearAlltextBox();
            }
            catch (FormatException)
            {
                MessageBox.Show("Please fill every field properly.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #14
0
        public IActionResult Invest([FromBody] Invest model)
        {
            model.UserId = CurrentUser.Id;

            var errors = investorValidator.ValidateInvest(CurrentUser, model);

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

            var res = trustManagementService.Invest(model);

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

            var wallets = walletService.GetUserWallets(CurrentUser.Id);

            return(Ok(wallets.Data));
        }
コード例 #15
0
        public void Invest()
        {
            var period = new Periods
            {
                Id = Guid.NewGuid(),
                InvestmentProgramId = investmentProgram.Id,
                Status = PeriodStatus.InProccess,
                Number = 1
            };
            var investorUser = new ApplicationUser
            {
                Id              = Guid.NewGuid(),
                Type            = UserType.Investor,
                IsEnabled       = true,
                InvestorAccount = new InvestorAccounts(),
                Wallets         = new List <Wallets> {
                    new Wallets {
                        Amount = 7000, Currency = Currency.GVT
                    }
                },
            };

            context.Add(period);
            context.Add(investorUser);
            context.SaveChanges();

            var invest = new Invest
            {
                UserId = investorUser.Id,
                InvestmentProgramId = investmentProgram.Id,
                Amount = 2500
            };
            var result = trustManagementService.Invest(invest);

            Assert.IsTrue(result.IsSuccess);

            var lastPeriod = context.Periods
                             .Where(x => x.InvestmentProgramId == investmentProgram.Id)
                             .OrderByDescending(x => x.Number)
                             .FirstOrDefault();

            Assert.IsNotNull(lastPeriod);

            var investRequest = context.InvestmentRequests
                                .First(x => x.UserId == investorUser.Id &&
                                       x.InvestmentProgramtId == investmentProgram.Id);

            Assert.IsNotNull(investRequest);

            Assert.AreEqual(investRequest.PeriodId, lastPeriod.Id);
            Assert.AreEqual(invest.Amount, investRequest.Amount);
            Assert.AreEqual(InvestmentRequestStatus.New, investRequest.Status);
            Assert.AreEqual(InvestmentRequestType.Invest, investRequest.Type);
            Assert.IsTrue(Math.Abs((DateTime.UtcNow - investRequest.Date).TotalSeconds) < 3);

            var tx = context.WalletTransactions
                     .Include(x => x.Wallet)
                     .FirstOrDefault(x => x.Wallet.UserId == investorUser.Id);

            Assert.IsNotNull(tx);
            Assert.AreEqual(invest.Amount, tx.Amount);
            Assert.AreEqual(WalletTransactionsType.InvestToProgram, tx.Type);
            Assert.IsTrue(Math.Abs((DateTime.UtcNow - tx.Date).TotalSeconds) < 3);
            Assert.AreEqual(4500, tx.Wallet.Amount);
        }
コード例 #16
0
ファイル: TickerController.cs プロジェクト: dcmuir01/Invest
        private Invest.Web.Models.TickerViewModel ConvertToViewModel(Invest.BusinessLogic.Service.Contract.Dto.TickerDto ticker)
        {
            var tickerModel = new Invest.Web.Models.TickerViewModel();

            tickerModel.Active = ticker.Active;
            tickerModel.BCFirstDate = ticker.BCFirstDate;
            tickerModel.BH = ticker.BH;
            // public System.Data.Objects.DataClasses.EntityCollection<Buy> Buys { get; set; }
            tickerModel.CBSFirstDate = ticker.CBSFirstDate;
            tickerModel.Comments = ticker.Comments;
            tickerModel.component = ticker.component;
            tickerModel.current = ticker.current;
            tickerModel.DateAdded = ticker.DateAdded;
            tickerModel.DateModified = ticker.DateModified;
            tickerModel.endDate = ticker.endDate;
            tickerModel.FirstBuy = ticker.FirstBuy;
            tickerModel.Id = ticker.Id;
            tickerModel.InceptionDate = ticker.InceptionDate;
            tickerModel.LastSell = ticker.LastSell;
            tickerModel.MCFirstDate = ticker.MCFirstDate;
            tickerModel.Name = ticker.Name;
            tickerModel.priceDecimal = ticker.priceDecimal;
            // public System.Data.Objects.DataClasses.EntityCollection<Sell> Sells { get; set; }
            tickerModel.shareDecimal = ticker.shareDecimal;
            tickerModel.startDate = ticker.startDate;
            tickerModel.Symbol = ticker.Symbol;
            tickerModel.TickerBC = ticker.TickerBC;
            tickerModel.TickerBH = ticker.TickerBH;
            tickerModel.tickerGUID = ticker.tickerGUID;
            tickerModel.TickerYahoo = ticker.TickerYahoo;
            tickerModel.Type = ticker.Type ?? "";

            return tickerModel;
        }
コード例 #17
0
ファイル: BuyController.cs プロジェクト: dcmuir01/Invest
 private BuyViewModel ConvertToViewModel(Invest.BusinessLogic.Service.Contract.Dtos.BuyDto buyDto)
 {
     var buyViewModel = new BuyViewModel();
     buyViewModel.AccountId = buyDto.AccountId;
     buyViewModel.AddedBy = buyDto.AddedBy;
     buyViewModel.AmtInv = buyDto.AmtInv > 0 ? buyDto.AmtInv.ToString("F3") : "";
     //    buyDto.Broker = buy.Broker;
     //    buyDto.BrokerGUID = buy.BrokerGUID;
     buyViewModel.BuyCommission = buyDto.BuyCommission;
     buyViewModel.BuyDate = buyDto.BuyDate;
     buyViewModel.BuyGUID = buyDto.BuyGUID;
     buyViewModel.BuyPrice = buyDto.BuyPrice > 0 ? buyDto.BuyPrice.ToString("F3") : "";
     buyViewModel.BuyType = buyDto.BuyType;
     buyViewModel.Comments = buyDto.Comments;
     buyViewModel.DateAdded = buyDto.DateAdded;
     buyViewModel.DateModified = buyDto.DateModified;
     buyViewModel.DividendAmount = buyDto.DividendAmount > 0 ? buyDto.DividendAmount.ToString("F3") : "";
     buyViewModel.Id = buyDto.Id;
     //    buyDto.InvestmentClassification = buy.InvestmentClassification;
     //    buyDto.InvestmentClassificationGuid = buy.InvestmentClassificationGuid;
     buyViewModel.ModifiedBy = buyDto.ModifiedBy;
     buyViewModel.NumShares = buyDto.NumShares > 0 ? buyDto.NumShares.ToString("F3") : "";
     buyViewModel.orderby = buyDto.orderby;
     buyViewModel.OriginalBuyGUID = buyDto.OriginalBuyGUID;
     buyViewModel.refID = buyDto.refID;
     //    buyDto.SubTransactionType = buy.SubTransactionType;
     //    buyDto.SubTransactionTypeGuid = buy.SubTransactionTypeGuid;
     buyViewModel.Ticker = buyDto.Ticker;
     // public Ticker Ticker1 { get; set; }
      //   buyDto.TickerGUID = buy.TickerGUID;
     buyViewModel.TickerId = buyDto.TickerId;
      //   buyDto.TranGUID = buy.TranGUID;
     buyViewModel.TransactionType = buyDto.TransactionType;
     buyViewModel.TransactionTypeId = buyDto.TransactionTypeId.Value;
     return buyViewModel;
 }
コード例 #18
0
ファイル: TickerService.cs プロジェクト: dcmuir01/Invest
 private StatementItemDto ConvertToDto(Invest.Domain.Models.StatementItem ticker)
 {
     var statementItemDto = new StatementItemDto();
     statementItemDto.AccountId = ticker.AccountId;
     statementItemDto.Date = ticker.Date;
     statementItemDto.Id = ticker.Id;
     statementItemDto.Name = ticker.Name;
     statementItemDto.Nav = ticker.Nav;
     statementItemDto.Shares = ticker.Shares;
     statementItemDto.Ticker = ticker.Ticker;
     statementItemDto.Value = ticker.Value;
     return statementItemDto;
 }
コード例 #19
0
ファイル: TickerService.cs プロジェクト: dcmuir01/Invest
        private TickerDto ConvertToDto(Invest.Domain.Models.AccountTicker accountTicker)
        {
            var tickerDto = new TickerDto();

            tickerDto.Symbol = accountTicker.Ticker1.Symbol;
            tickerDto.Id = accountTicker.TickerId;
            tickerDto.Name = accountTicker.Ticker1.Name;
            tickerDto.Type = accountTicker.Ticker1.type;

            return tickerDto;
        }
コード例 #20
0
ファイル: TickerService.cs プロジェクト: dcmuir01/Invest
        private TickerDto ConvertToDto(Invest.Domain.Models.Ticker ticker)
        {
            var tickerDto = new TickerDto();

            tickerDto.Active = ticker.Active;
            tickerDto.BCFirstDate = ticker.BCFirstDate;
            tickerDto.BH = ticker.BH;
            // public System.Data.Objects.DataClasses.EntityCollection<Buy> Buys { get; set; }
            tickerDto.CBSFirstDate = ticker.CBSFirstDate;
            tickerDto.Comments = ticker.Comments;
            tickerDto.component = ticker.component;
            tickerDto.current = ticker.current;
            tickerDto.DateAdded = ticker.DateAdded;
            tickerDto.DateModified = ticker.DateModified;
            tickerDto.endDate = ticker.endDate;
            tickerDto.FirstBuy = ticker.FirstBuy;
            tickerDto.Id = ticker.Id;
            tickerDto.InceptionDate = ticker.InceptionDate;
            tickerDto.LastSell = ticker.LastSell;
            tickerDto.MCFirstDate = ticker.MCFirstDate;
            tickerDto.Name = ticker.Name;
            tickerDto.priceDecimal = ticker.priceDecimal;
            // public System.Data.Objects.DataClasses.EntityCollection<Sell> Sells { get; set; }
            tickerDto.shareDecimal = ticker.shareDecimal;
            tickerDto.startDate = ticker.startDate;
            tickerDto.Symbol = ticker.Symbol;
            tickerDto.TickerBC = ticker.TickerBC;
            tickerDto.TickerBH = ticker.TickerBH;
            tickerDto.tickerGUID = ticker.tickerGUID;
            tickerDto.TickerYahoo = ticker.TickerYahoo;
            tickerDto.Type = ticker.type;

            return tickerDto;
        }