Beispiel #1
0
        public async Task <IActionResult> GetPercents(int id)
        {
            try
            {
                DepositContract contract = await _context.DepositContracts
                                           .Include(c => c.Deposit)
                                           .Where(c => c.EndDate.CompareTo(DateTime.Today) > 0 && c.Deposit.IsRevocable)
                                           .FirstOrDefaultAsync(c => c.Id == id);

                if (contract == null)
                {
                    return(RedirectToAction("Details", new { id }));
                }
                Account cashRegisterAccount = await _context.Accounts.FirstAsync(a => a.Name == "cash");

                DepositAccount percentAccount = await _context.DepositAccounts.FirstAsync(da => da.DepositContractId == contract.Id && da.IsForPercents);

                percentAccount.Debet       += percentAccount.Saldo;
                cashRegisterAccount.Credit += percentAccount.Saldo;
                cashRegisterAccount.Debet  += percentAccount.Saldo;
                percentAccount.Saldo        = 0;
                _context.Accounts.Update(percentAccount);
                _context.Accounts.Update(cashRegisterAccount);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(RedirectToAction("Error", "Home"));
            }
        }
        public void can_make_deposit()
        {
            DepositContract depositContract = new DepositContract(new AbiEncoder(), Address.Zero);
            Transaction     transaction     = depositContract.Deposit(TestItem.AddressA, new byte[42], new byte[32], new byte[96], new byte[32]);

            transaction.Data.Should().HaveCount(484);
        }
        public void event_hash_is_valid()
        {
            AbiDefinitionParser parser          = new AbiDefinitionParser();
            AbiDefinition       abiDefinition   = parser.Parse(File.ReadAllText("contracts/validator_registration.json"));
            DepositContract     depositContract = new DepositContract(abiDefinition, new AbiEncoder(), Address.Zero);

            depositContract.DepositEventHash.Should().Be(new Keccak("0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5"));
        }
        public void can_make_deposit()
        {
            AbiDefinitionParser parser          = new AbiDefinitionParser();
            AbiDefinition       abiDefinition   = parser.Parse(File.ReadAllText("contracts/validator_registration.json"));
            DepositContract     depositContract = new DepositContract(abiDefinition, new AbiEncoder(), Address.Zero);
            Transaction         transaction     = depositContract.Deposit(TestItem.AddressA, new byte[42], new byte[32], new byte[96], new byte[32]);

            transaction.Data.Should().HaveCount(484);
        }
Beispiel #5
0
        // GET: DepositAccount/Details/5
        public async Task <IActionResult> Details(int id)
        {
            DepositContract contract = await _context.DepositContracts.Include(c => c.Accounts).Include(c => c.User).FirstAsync(c => c.Id == id);

            DepositContractViewModel vm             = _mapper.Map <DepositContractViewModel>(contract);
            DepositAccount           account        = contract.Accounts.FirstOrDefault(a => !a.IsForPercents);
            DepositAccount           percentAccount = contract.Accounts.FirstOrDefault(a => a.IsForPercents);

            vm.DepositAmount  = account?.Credit.ToString("F");
            vm.DepositPercent = percentAccount?.Saldo.ToString("F");
            vm.UserName       = string.Format("{0} {1} {2}", contract.User.Surname, contract.User.FirstName, contract.User.SecondName);
            return(View(vm));
        }
Beispiel #6
0
        public async Task <IActionResult> Delete(int id, IFormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
                DepositContract contract = await _context.DepositContracts.Include(c => c.Accounts).FirstAsync(c => c.Id == id);

                _context.DepositAccounts.RemoveRange(contract.Accounts);
                _context.DepositContracts.Remove(contract);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(View());
            }
        }
Beispiel #7
0
        public async Task <IActionResult> EndDeposit(int id)
        {
            try
            {
                DepositContract contract = await _context.DepositContracts
                                           /*.Where(c => c.EndDate.CompareTo(DateTime.Today) == 0)*/
                                           .Include(c => c.Deposit).FirstOrDefaultAsync(c => c.Id == id);

                if (contract == null)
                {
                    return(RedirectToAction("Details", new { id }));
                }
                Account frbAccount = await _context.Accounts.FirstAsync(a => a.Name == "frb");

                Account cashRegisterAccount = await _context.Accounts.FirstAsync(a => a.Name == "cash");

                IEnumerable <DepositAccount> accounts = await _context.DepositAccounts.Where(da => da.DepositContractId == contract.Id).ToListAsync();

                DepositAccount account        = accounts.First(a => !a.IsForPercents);
                DepositAccount percentAccount = accounts.First(a => a.IsForPercents);
                percentAccount.Debet       += percentAccount.Saldo;
                cashRegisterAccount.Credit += percentAccount.Saldo;
                cashRegisterAccount.Debet  += percentAccount.Saldo;
                percentAccount.Saldo        = 0;
                frbAccount.Saldo           -= account.Credit;
                cashRegisterAccount.Credit += account.Credit;
                cashRegisterAccount.Debet  += account.Credit;
                account.Debet  += account.Credit;
                account.Credit += account.Credit;
                account.Saldo   = 0;
                _context.Accounts.Update(account);
                _context.Accounts.Update(percentAccount);
                _context.Accounts.Update(frbAccount);
                _context.Accounts.Update(cashRegisterAccount);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(RedirectToAction("Error", "Home"));
            }
        }
        public void event_hash_is_valid()
        {
            DepositContract depositContract = new DepositContract(new AbiEncoder(), Address.Zero);

            depositContract.DepositEventHash.Should().Be(new Keccak("0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5"));
        }
Beispiel #9
0
        public async Task <IActionResult> Create(DepositContractViewModel vm)
        {
            try
            {
                DepositContract contract = _mapper.Map <DepositContract>(vm);
                Deposit         deposit  = _context.Deposits.Find(vm.DepositId);
                User            user     = await _context.Users.FindAsync(contract.UserId);

                int count = await _context.Accounts.Where(a => a.UserId == user.Id).CountAsync();

                contract.EndDate = contract.BeginDate.AddMonths(deposit.Term);
                await _context.DepositContracts.AddAsync(contract);

                await _context.SaveChangesAsync();

                Account cashRegisterAccount = await _context.Accounts.FirstOrDefaultAsync(a => a.Name == "cash");

                Account frbAccount = await _context.Accounts.FirstOrDefaultAsync(a => a.Name == "frb");

                decimal amount = decimal.Parse(vm.DepositAmount);
                cashRegisterAccount.Debet  += amount;
                cashRegisterAccount.Credit += amount;
                frbAccount.Credit          += amount;
                frbAccount.Saldo           += amount;
                DepositAccount account = new DepositAccount()
                {
                    IsActive          = false,
                    DepositContractId = contract.Id,
                    Credit            = amount,
                    Debet             = amount,
                    Saldo             = 0,
                    IsForPercents     = false,
                    UserId            = user.Id,
                    Number            = "3014" + user.Id.ToString("00000") + (count + 1).ToString("000") + '1',
                    Name = user.Surname + " " + user.FirstName + " " + user.SecondName
                };
                await _context.DepositAccounts.AddAsync(account);

                DepositAccount percentAccount = new DepositAccount()
                {
                    IsActive          = false,
                    DepositContractId = contract.Id,
                    Credit            = 0,
                    Debet             = 0,
                    Saldo             = 0,
                    IsForPercents     = true,
                    UserId            = user.Id,
                    Number            = "3470" + user.Id.ToString("00000") + (count + 2).ToString("000") + '2',
                    Name = user.Surname + " " + user.FirstName + " " + user.SecondName
                };
                await _context.DepositAccounts.AddAsync(percentAccount);

                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(View(vm));
            }
        }