Ejemplo n.º 1
0
        private void Save()
        {
            ErrorProvider1.Clear();
            if (PihakKeduaCombo.SelectedValue == null)
            {
                ErrorProvider1.SetError(LabelPihakKedua, "Pilih Pihak Kedua");
                return;
            }
            if (JenisBayarCombo.SelectedValue == null)
            {
                ErrorProvider1.SetError(JenisBayarLabel, "Pilih Jenis Bayar");
                return;
            }
            if (BuyerNameTextBox.Text == "")
            {
                ErrorProvider1.SetError(BuyerNameLabel, "Isi Contact Person Customer");
                return;
            }

            var deposit = new DepositModel
            {
                DepositID    = BiayaIDText.Text,
                Tgl          = TglText.Value.ToString("dd-MM-yyyy"),
                Jam          = JamText.Text,
                PihakKeduaID = PihakKeduaCombo.SelectedValue.ToString(),
                BuyerName    = BuyerNameTextBox.Text,
                JenisBayarID = JenisBayarCombo.SelectedValue.ToString(),
                Keterangan   = KeteranganText.Text,
                NilaiDeposit = NilIText.Value,
                ListBrg      = _listBrg
            };

            using (var trans = TransHelper.NewScope())
            {
                var result = _depositBL.Save(deposit);
                _bpKasBL.Generate(result);
                _bpHutangBL.GenHutang(result);
                trans.Complete();
            }
            ClearForm();
            TglText.Focus();
        }
Ejemplo n.º 2
0
        public async Task DepositarValorNaContaCorrente()
        {
            int     AccountNumber = 123;
            decimal BalanceAmmout = 120;

            _bankAccountRepository.Setup(x => x.FindAccount(AccountNumber))
            .Returns(Task.FromResult(new BankAccount {
                Number = AccountNumber, Balance = BalanceAmmout
            }));
            _bankAccountRepository.Setup(r => r.SingleUnit.CommitAsync()).Returns(Task.FromResult(true));

            var depositModel = new DepositModel()
            {
                AccountNumber = AccountNumber, Ammount = 30
            };

            var atual = await _bankAccountService.Deposit(depositModel);

            Assert.Equal(150, atual.Saldo);
        }
Ejemplo n.º 3
0
        public async Task <BankAccountModel> Deposit(DepositModel model)
        {
            var validator = new DepositValidator(_bankAccountRepository);

            var result = validator.Validate(model);

            if (!result.IsValid)
            {
                throw new Exception(string.Join("; ", result.Errors));
            }

            var account = await _bankAccountRepository.FindAccount(model.AccountNumber);

            account.Balance += model.Ammount;
            _bankAccountRepository.Change(account);

            await _bankAccountRepository.SingleUnit.CommitAsync();

            return(_mapper.Map <BankAccountModel>(account));
        }
Ejemplo n.º 4
0
        public BPHutangModel GenHutang(PenjualanModel penjualan, DepositModel deposit)
        {
            //  ambil data hutang berdasarkan deposit
            var bpHutang = GetData(deposit.DepositID);

            if (bpHutang == null)
            {
                var errMsg = string.Format("Hutang {0} tidak ditemukan ", deposit.DepositID);
                throw new ArgumentException(errMsg);
            }

            //  hapus detil lunas yang id-nya = PenjualanID
            List <BPHutangDetilModel> newListLunas =
                (
                    from c in bpHutang.ListLunas
                    where c.ReffID != penjualan.PenjualanID
                    select c
                ).ToList();

            //  tambahkan pelunasan dari penjualan
            int noUrut = newListLunas.Count + 1;

            newListLunas.Add(new BPHutangDetilModel
            {
                BPHutangID      = bpHutang.BPHutangID,
                BPHutangDetilID = bpHutang.BPHutangID + '-' + noUrut.ToString().PadLeft(2, '0'),
                Tgl             = penjualan.TglPenjualan,
                Jam             = penjualan.JamPenjualan,
                ReffID          = penjualan.PenjualanID,
                Keterangan      = "   Penjualan a/n " + penjualan.BuyerName,
                NilaiHutang     = 0,
                NilaiLunas      = penjualan.NilaiGrandTotal > penjualan.NilaiDeposit ?
                                  penjualan.NilaiDeposit : penjualan.NilaiGrandTotal,
            });

            bpHutang.ListLunas = newListLunas;
            //  simpan
            var result = Save(bpHutang);

            return(result);
        }
Ejemplo n.º 5
0
        public BPHutangModel GenHutang(ReturDepositModel returDeposit, DepositModel deposit)
        {
            //  ambil data hutang berdasarkan deposit
            var bpHutang = GetData(deposit.DepositID);

            if (bpHutang == null)
            {
                var errMsg = string.Format("Hutang {0} tidak ditemukan ", deposit.DepositID);
                throw new ArgumentException(errMsg);
            }

            //  hapus detil lunas yang id-nya = PenjualanID
            List <BPHutangDetilModel> newListLunas =
                (
                    from c in bpHutang.ListLunas
                    where c.ReffID != returDeposit.ReturDepositID
                    select c
                ).ToList();

            //  tambahkan pelunasan dari retur deposit
            int noUrut = newListLunas.Count + 1;

            newListLunas.Add(new BPHutangDetilModel
            {
                BPHutangID      = bpHutang.BPHutangID,
                BPHutangDetilID = bpHutang.BPHutangID + '-' + noUrut.ToString().PadLeft(2, '0'),
                Tgl             = returDeposit.Tgl,
                Jam             = returDeposit.Jam,
                ReffID          = returDeposit.ReturDepositID,
                Keterangan      = "   Retur Deposit a/n " + returDeposit.PihakKeduaName,
                NilaiHutang     = 0,
                NilaiLunas      = returDeposit.NilaiReturDeposit
            });

            bpHutang.ListLunas = newListLunas;
            //  simpan
            var result = Save(bpHutang);

            return(result);
        }
Ejemplo n.º 6
0
        public async Task <IResult <DepositModel> > Deposit(DepositModel movementModel)
        {
            try
            {
                if (movementModel.Amount <= 0)
                {
                    return(Result <DepositModel> .BuildError("Favor inserir um valor válido.").LoggerError());
                }

                var account = await _sharedService.AccountValidate(movementModel.Cpf, movementModel.Password);

                if (!account.Success)
                {
                    return(Result <DepositModel> .BuildError(account.Messages).LoggerError());
                }

                var result = new Result <DepositModel>();
                var exist  = await _movementService.ExistDeposit(account.Model.Id);

                decimal bonus = 0;
                if (!exist)
                {
                    bonus = movementModel.Amount.GetPercentage(10);
                    result.AddMessage("Parábens você acabou de realizar seu primeiro depósito," +
                                      $" você recebeu 10% do valor a título de boas vindas!");
                }
                account.Model.Balance += (movementModel.Amount + bonus);
                await _movementService.CreateMovement(movementModel.Amount, MovementType.Deposit,
                                                      account.Model, account.Model.Balance, bonus : bonus);

                await _accountRepository.SaveAsync();

                return(result.AddSuccess(movementModel, "Depósito realizado com sucesso!"));
            }
            catch (Exception error)
            {
                return(Result <DepositModel> .BuildError("Erro ao realizar desosito, favor tente novamento", error)
                       .LoggerError());
            }
        }
Ejemplo n.º 7
0
        public IActionResult Create(DepositModel model)
        {
            try
            {
                ViewBagData();

                if (!ModelState.IsValid)
                {
                    return(View(model));
                }
                model.EmployeeId      = GetEmployeeId().Result;
                model.CustomerId      = GetCustomerId(model.CustomerId);
                model.Reference       = _generator.DateCodeString() + _generator.RandomNumber(1111111, 7777777);
                model.TransactionCode = model.TransactionCode == (TransactionCode)1
                    ? TransactionCode.Deposit
                    : TransactionCode.Withdrawal;

                var request = _depositService.Create(model);
                if (request.Successful)
                {
                    return(RedirectToAction("History", "Savings", new { id = model.CustomerId }));
                }

                if (request.ResultType == ResultType.InsufficientBalance)
                {
                    TempData["Error"] = "Insufficient Balance";
                }

                if (request.ResultType == ResultType.PendingTransaction)
                {
                    TempData["Error"] = "This custormer has a pending transaction";
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message + " " + ex.InnerException);
            }

            return(View(model));
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> Deposit([FromBody] DepositRequest request)
        {
            var command = new DepositCommand(
                request.AccountId,
                request.Amount);

            DepositResult depositResult = await depositService.Handle(command);

            if (depositResult == null)
            {
                return(new NoContentResult());
            }

            DepositModel model = new DepositModel(
                depositResult.Transaction.Amount,
                depositResult.Transaction.Description,
                depositResult.Transaction.TransactionDate,
                depositResult.UpdatedBalance
                );

            return(new ObjectResult(model));
        }
Ejemplo n.º 9
0
        public void Create(DepositModel deposit)
        {
            if (deposit.Amount == 0)
            {
                throw new ServiceException("Amount cannot be zero.");
            }

            var dbDeposit = Mapper.Map <DepositModel, ORMLibrary.Deposit>(deposit);

            dbDeposit.PlanOfDeposit = Context.PlanOfDeposits.FirstOrDefault(e => e.Id == deposit.PlanId);
            dbDeposit.Client        = Context.Clients.FirstOrDefault(e => e.Id == deposit.ClientId);
            AccountService.CreateAccountsForDeposit(dbDeposit);
            dbDeposit.StartDate = SystemInformationService.CurrentBankDay;
            dbDeposit.EndDate   = dbDeposit.StartDate.AddDays(dbDeposit.PlanOfDeposit.DayPeriod);
            dbDeposit.Amount    = deposit.Amount;

            Context.Deposits.Add(dbDeposit);
            Context.SaveChanges();

            HoldMoneyOnDeposit(dbDeposit);
            Context.SaveChanges();
        }
Ejemplo n.º 10
0
        public void FUI_Text1_Should_not_changed()
        {
            //arrange
            var check = new CheckModel();

            check.Id = "change tile";

            var deposit = new DepositModel();

            deposit.Id = "Deposit Id";

            txtBox.TextBindTo <CheckModel>(m => m.Id);
            txtBox1.TextBindTo <DepositModel>(m => m.Id);

            //act
            txtBox1.Load <DepositModel>(deposit);

            //assert
            txtBox1.Text
            .Should()
            .Be
            .EqualTo(deposit.Id);
        }
Ejemplo n.º 11
0
        public ActionResult Insert(DepositModel depositModel)
        {
            try
            {
                if (depositModel.UserName == null || depositModel.UserName == "" || depositModel.BankAccount == 1 || depositModel.GameType == 1 || depositModel.BankAccountName == null || depositModel.BankAccountName == "" || depositModel.BankAccountNumber == null || depositModel.BankAccountNumber == "" || depositModel.DepositDate == null || depositModel.DepositAmount == 0)
                {
                    Session["message"]       = "Please fill in all the required fields.";
                    Session["requestStatus"] = "Error";
                    return(RedirectToAction("Index"));
                }

                dal.InsertDeposit(depositModel);
                Session["message"]       = "Deposit is successfully added";
                Session["requestStatus"] = "Success";
                return(RedirectToAction("Index"));
            }
            catch
            {
                Session["message"]       = "Unable to perform this request";
                Session["requestStatus"] = "Error";
                return(RedirectToAction("Index"));
            }
        }
Ejemplo n.º 12
0
        public long Save(bool isAutoGenerateParallel)
        {
            var deposit = new DepositModel
            {
                DepositDetails       = View.DepositDetails,
                RefId                = View.RefId,
                RefTypeId            = View.RefTypeId,
                PostedDate           = View.PostedDate,
                RefDate              = View.RefDate,
                RefNo                = View.RefNo,
                AccountingObjectType = View.AccountingObjectType,
                //AccountingObjectId = View.AccountingObjectId,
                Trader = View.Trader,
                //CustomerId = View.CustomerId == 0 ? null : View.CustomerId,
                //VendorId = View.VendorId == 0 ? null : View.VendorId,
                //EmployeeId = View.EmployeeId == 0 ? null : View.EmployeeId,
                AccountingObjectId  = View.AccountingObjectId,
                CustomerId          = View.CustomerId,
                VendorId            = View.VendorId,
                EmployeeId          = View.EmployeeId,
                BankAccountCode     = View.BankAccountCode,
                CurrencyCode        = View.CurrencyCode,
                ExchangeRate        = View.ExchangeRate,
                TotalAmountOc       = View.TotalAmountOc,
                TotalAmountExchange = View.TotalAmountExchange,
                JournalMemo         = View.JournalMemo,
                BankId                 = View.BankId,
                IsIncludeCharge        = View.IsIncludeCharge,
                DepositDetailParallels = View.DepositDetailParallels
            };

            if (View.RefId == 0)
            {
                return(Model.AddDeposit(deposit, isAutoGenerateParallel));
            }
            return(Model.UpdateDeposit(deposit, isAutoGenerateParallel));
        }
Ejemplo n.º 13
0
        public ActionResult Deposit(DepositModel deposit)
        {
            if (ModelState.IsValid)
            {
                using (var db = new OurDbContext())
                {
                    var account = db.UserAccounts.FirstOrDefault(a => a.FriendlyName == deposit.MyBankAccount &&
                                                                 a.User.UserName == User.Identity.Name);
                    if (account == null)
                    {
                        return(RedirectToAction("Error"));
                    }

                    var transaction = new Transaction
                    {
                        UserAccountId = account.Id,
                        Key           = Guid.NewGuid(),
                        Type          = TransactionType.Deposit,
                        EvenDate      = DateTime.Now,
                        Amount        = deposit.Balance,
                        Comment       = "Направен е депозит към банкова сметка " + account.FriendlyName + " на стойност от " + deposit.Balance + " лв."
                    };
                    db.Transactions.Add(transaction);
                    if (transaction.Amount < 0)
                    {
                        ModelState.AddModelError(string.Empty, "Грешка! Не може сумата която искате да внесете да е отрицателна.");

                        return(View());
                    }
                    account.Balance = account.Balance + transaction.Amount;
                    db.SaveChanges();
                }
                return(RedirectToAction("DepositSuccessfully"));
            }
            return(View());
        }
Ejemplo n.º 14
0
        public Response <DepositModel> Create(DepositModel model)
        {
            try
            {
                var validationResult = _depositValidation.ValidateCreate(model);
                if (!validationResult.IsValid)
                {
                    return(new Response <DepositModel>
                    {
                        Message = validationResult.ErrorMessage,
                        ResultType = ResultType.ValidationError
                    });
                }
                var lastTransaction          = CustomerLastTransaction(model);
                var lastConfirmedTransaction = CustomerLastConfirmedTransaction(model);
                model.DateCreated = DateTime.UtcNow.ToLocalTime();
                model.Balance     = (model.TransactionCode == TransactionCode.Fee)? model.Balance : lastConfirmedTransaction.Balance;
                if (lastTransaction.StatusCode == StatusCode.Pending)
                {
                    return(new Response <DepositModel>
                    {
                        Result = model,
                        ResultType = ResultType.PendingTransaction
                    });
                }

                if (model.TransactionCode == TransactionCode.Withdrawal)
                {
                    var minimumBalance = Convert.ToInt32(_feeSettingsModel.MinBalance);
                    var withdrawalFee  = Convert.ToInt32(_feeSettingsModel.Withdrawal);
                    var deductable     = minimumBalance + withdrawalFee;
                    var availableFund  = 0;
                    if (lastTransaction.StatusCode == StatusCode.Declined)
                    {
                        availableFund = lastConfirmedTransaction.Balance - deductable;
                    }
                    else
                    {
                        availableFund = lastTransaction.Balance - deductable;
                    }

                    if (model.Amount > availableFund)
                    {
                        return(new Response <DepositModel>
                        {
                            Result = model,
                            ResultType = ResultType.InsufficientBalance
                        });
                    }
                }

                _depositRepository.Insert(_mapper.Map <Deposit>(model));
                _depositRepository.Save();

                return(new Response <DepositModel>
                {
                    Result = model,
                    ResultType = ResultType.Success
                });
            }
            catch (Exception ex)
            {
                //online error log
                var err = ex.Message;
            }

            return(new Response <DepositModel>
            {
                ResultType = ResultType.Error
            });
        }
Ejemplo n.º 15
0
        public DepositModel Save(DepositModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            //  cek pihak ke dua
            var pihakKedua = _pihakKeduaBL.GetData(model.PihakKeduaID);

            if (pihakKedua == null)
            {
                var errMsg = string.Format("PihakKeduaID invalid");
                throw new ArgumentException(errMsg);
            }
            else
            {
                model.PihakKeduaName = pihakKedua.PihakKeduaName;
            }

            //  cek jenis bayar
            var jenisBayar = _jenisBayarBL.GetData(model.JenisBayarID);

            if (jenisBayar == null)
            {
                throw new ArgumentException("JenisBayarID Invalid ");
            }
            else
            {
                model.JenisBayarName = jenisBayar.JenisBayarName;
                model.JenisKasID     = jenisBayar.JenisKasID;
                model.JenisKasName   = jenisBayar.JenisKasName;
            }

            if (model.ListBrg != null)
            {
                foreach (var item in model.ListBrg)
                {
                    var brg = _brgBL.GetData(item.BrgID);
                    if (brg == null)
                    {
                        throw new ArgumentException("BrgID invalid");
                    }
                }
            }

            //  cek nilai deposit
            if (model.NilaiDeposit <= 0)
            {
                throw new ArgumentException("Nilai Deposit tidak boleh minus");
            }

            //  proses simpan
            using (var trans = TransHelper.NewScope())
            {
                if (model.DepositID.Trim() == "")
                {
                    model.DepositID = GenNewID();
                    _depositDal.Insert(model);
                    if (model.ListBrg != null)
                    {
                        foreach (var item in model.ListBrg)
                        {
                            item.DepositID = model.DepositID;
                            _depositDetilDal.Insert(item);
                        }
                    }
                }
                else
                {
                    _depositDetilDal.Delete(model.DepositID);
                    _depositDal.Update(model);
                    if (model.ListBrg != null)
                    {
                        foreach (var item in model.ListBrg)
                        {
                            item.DepositID = model.DepositID;
                            _depositDetilDal.Insert(item);
                        }
                    }
                }
                trans.Complete();
            }
            return(model);
        }
Ejemplo n.º 16
0
        public IHttpActionResult Post(DepositModel deposit)
        {
            //while (true)
            //{
            //	Card card = new Card();
            //	card.CardTypeId = 7;
            //	card.CardCompanyId = 9;
            //	card.CardHolderName = "shail";
            //	card.CardNumber = Encrypt("1212121212121212", true);
            //	card.Cvv = 200;
            //	card.ExpiryMonth = 12;
            //	card.ExpiryYear = 24;
            //	card.AccountId = 10;
            //}

            if ((deposit.DepositTypeId == 6) || (deposit.DepositTypeId == 7))
            {
                Card cartObj = new Card();
                var  encrypt = Encrypt((deposit.CardNumber).ToString(), true);
                var  card    = Uow.Repository <Card>().FirstOrDefault(c => (c.CardNumber == encrypt) && (c.Cvv == deposit.CVV));
                var  balance = BalanceDomain.GetBy(19);
                if (card != null)
                {
                    if (card.Amount >= deposit.DepositAmount)
                    {
                        Deposit depositObj = new Deposit();
                        depositObj.UserId        = 19;
                        depositObj.DepositStatus = true;
                        if (deposit.DepositTypeId == 6)
                        {
                            depositObj.DepositTypeId = 3;
                        }
                        else
                        {
                            depositObj.DepositTypeId = 4;
                        }
                        var date = DateTime.Now;
                        depositObj.DepositDate   = date;
                        depositObj.AccountId     = card.AccountId;
                        depositObj.BalanceId     = balance.BalanceId;
                        depositObj.DepositAmount = deposit.DepositAmount;
                        var depositMessage = DepositDomain.Post(depositObj);

                        if (depositMessage == "Deposit Successful!")
                        {
                            balance.BalanceAmount = balance.BalanceAmount + deposit.DepositAmount;
                            card.Amount           = card.Amount - deposit.DepositAmount;
                            BalanceDomain.Put(balance);
                            CardDomain.Put(card);
                            return(Ok("successfull"));
                        }
                        else
                        {
                            return(Ok("error"));
                        }
                    }
                    else
                    {
                        return(Ok("error"));
                    }
                }
                else
                {
                    return(Ok("error"));
                }
            }
            else if (deposit.DepositTypeId == 5)
            {
                var branch  = Uow.Repository <BankBranch>().FirstOrDefault(b => b.IFSC_Code == deposit.IFSC);
                var account = Uow.Repository <AccountDetail>().FirstOrDefault(a => (a.AccountNumber == deposit.AccountNumber) && (a.BankBranchId == branch.BankBranchId));
                if (account != null)
                {
                    if (account.AccountBalance >= deposit.DepositAmount)
                    {
                        Deposit depositObj = new Deposit();
                        var     date       = DateTime.Now;
                        depositObj.DepositDate   = date;
                        depositObj.UserId        = deposit.UserId;
                        depositObj.DepositStatus = true;
                        depositObj.DepositTypeId = deposit.DepositTypeId;
                        depositObj.AccountId     = account.AccountId;
                        var balance = BalanceDomain.GetBy(deposit.UserId);
                        depositObj.BalanceId     = balance.BalanceId;
                        depositObj.DepositAmount = deposit.DepositAmount;
                        var depositMessage = DepositDomain.Post(depositObj);

                        if (depositMessage == "Deposit Successful!")
                        {
                            account.AccountBalance = account.AccountBalance - deposit.DepositAmount;
                            AccountDetailsDomain.Put(account);
                            balance.BalanceAmount = balance.BalanceAmount + deposit.DepositAmount;
                            BalanceDomain.Put(balance);
                            return(Ok("successfull"));
                        }
                        else
                        {
                            return(Ok("error"));
                        }
                    }
                    else
                    {
                        return(Ok("error"));
                    }
                }
                else
                {
                    return(Ok("error"));
                }
            }
            else
            {
                return(Ok("error"));
            }
        }
Ejemplo n.º 17
0
 internal static DepositEntity ToDataTransferObject(DepositModel model)
 {
     return(model == null ? null : AutoMapper.Mapper.Map <DepositModel, DepositEntity>(model));
 }
Ejemplo n.º 18
0
 public async Task <IResult <DepositModel> > Deposit(DepositModel depositModel)
 {
     return(await _accountService.Deposit(depositModel));
 }
Ejemplo n.º 19
0
        public BaseResponse <DepositModel> SaveDeposit(DepositModel request)
        {
            BaseResponse <DepositModel> resdeposit = new BaseResponse <DepositModel>();

            if (request.ResidentID == 0)
            {
                resdeposit.ResultMessage = "会员ID不能为空";
                resdeposit.IsSuccess     = false;
                return(resdeposit);
            }
            if (request.ResidentID != 0)
            {
                unitOfWork.BeginTransaction();
                var depositRepository = unitOfWork.GetRepository <DC_Deposit>();
                var paymentRepository = unitOfWork.GetRepository <DC_Payment>();

                request.DepositNo = GenerateCode(EnumCodeKey.DepositCode, EnumCodeRule.YearMonthDay, "D", 4, request.OrganizationID);
                bool flag  = false;
                var  model = depositRepository.dbSet.FirstOrDefault(q => q.ResidentID == request.ResidentID);
                if (model != null)
                {
                    //更新
                    model.Amount = model.Amount + request.Amount;
                    var depmodel = Mapper.DynamicMap <DC_Deposit>(model);
                    flag = depositRepository.Update(depmodel);
                }
                else
                {
                    //新增
                    var depmodel = Mapper.DynamicMap <DC_Deposit>(request);
                    flag = depositRepository.Insert(depmodel);
                }
                if (flag)
                {
                    PaymentModel pm = new PaymentModel();
                    pm.PaymentNo  = GenerateCode(EnumCodeKey.PaymentCode, EnumCodeRule.YearMonthDay, "P", 4, request.OrganizationID);
                    pm.ResidentID = request.ResidentID;
                    pm.Amount     = request.Amount;
                    pm.PayDate    = request.DepositDate;
                    pm.Payee      = request.Payee;
                    pm.InvoiceNo  = request.InvoiceNo;
                    pm.PayType    = PayType.Pay.ToString();
                    pm.PayMethod  = request.PayMethod;
                    pm.Remark     = request.Remark;
                    var p = Mapper.DynamicMap <DC_Payment>(pm);
                    flag = paymentRepository.Insert(p);

                    if (flag)
                    {
                        //资金明细
                        var feeDetail = new DC_FeeDetail();
                        feeDetail.FeeNo      = base.GenerateCode(EnumCodeKey.FeeDetailCode, EnumCodeRule.YearMonthDay, "F", 6, request.OrganizationID);
                        feeDetail.FeeName    = "充值";
                        feeDetail.TotalPrice = request.Amount;
                        feeDetail.ResidentID = request.ResidentID.Value;
                        feeDetail.FeeDate    = DateTime.Now;
                        unitOfWork.GetRepository <DC_FeeDetail>().Insert(feeDetail);
                    }
                }
                if (!flag)
                {
                    resdeposit.ResultMessage = "预存款保存失败";
                    resdeposit.IsSuccess     = false;
                }
                else
                {
                    unitOfWork.Commit();
                }
            }
            return(resdeposit);
        }
Ejemplo n.º 20
0
        public ActionResult CreateTransaction(DepositModel model)
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("", "You must insert amount > 0 and check one payment method!");
                return(RedirectToAction("Deposit", "Investor"));
            }
            using (var dbContext = new MazzaDbContext())
            {
                var paymentType = dbContext.PaymentTypes.FirstOrDefault(p => p.Code.Equals(model.Coin));
                if (paymentType.WalletTypeId == 1)
                {
                    return(RedirectToAction(paymentType.PaymentTypeDesc, "Payment"));
                }
            }

            //Get Rates


            string   s_privkey = "89c2E2B75e268825e6Ec2C2E76f1cbA2604cD048f74Ea51cf23fc1a85E57c2b3";
            string   s_pubkey  = "6431d23e0f03d7a10013bc0776b44c66a749438e65f77b6309995637a971a2b7";
            Encoding encoding  = Encoding.UTF8;
            SortedList <string, string> parms = new SortedList <string, string>
            {
                //{ "amount", model.Amount.ToString() },
                //{ "currency1", model.Coin },
                //{ "currency2", model.Coin },
                //{ "buyer_email", "*****@*****.**" }
            };

            parms["version"] = "1";
            parms["key"]     = s_pubkey;
            //parms["cmd"] = "create_transaction";
            parms["cmd"] = "rates";

            string post_data = "";

            foreach (KeyValuePair <string, string> parm in parms)
            {
                if (post_data.Length > 0)
                {
                    post_data += "&";
                }
                post_data += parm.Key + "=" + Uri.EscapeDataString(parm.Value);
            }

            byte[] keyBytes   = encoding.GetBytes(s_privkey);
            byte[] postBytes  = encoding.GetBytes(post_data);
            var    hmacsha512 = new System.Security.Cryptography.HMACSHA512(keyBytes);
            string hmac       = BitConverter.ToString(hmacsha512.ComputeHash(postBytes)).Replace("-", string.Empty);

            // do the post:
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            WebClient cl = new System.Net.WebClient();

            cl.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            cl.Headers.Add("HMAC", hmac);
            cl.Encoding = encoding;

            var ret = new Dictionary <string, dynamic>();

            try
            {
                string resp    = cl.UploadString("https://www.coinpayments.net/api.php", post_data);
                var    decoder = new System.Web.Script.Serialization.JavaScriptSerializer();
                ret = decoder.Deserialize <Dictionary <string, dynamic> >(resp);

                if (ret["error"] == "ok")
                {
                    var userId = User.Identity.GetUserId <int>();

                    using (var dbContext = new MazzaDbContext())
                    {
                        dbContext.DepositTransactions.Add(new DepositTransaction
                        {
                            UserId          = userId,
                            Amount          = model.Amount,
                            TransactionId   = ret["result"]["txn_id"],
                            Address         = ret["result"]["address"],
                            StatusUrl       = ret["result"]["status_url"],
                            Timeout         = ret["result"]["timeout"],
                            TransactionDate = DateTime.UtcNow
                        });
                        dbContext.SaveChanges();
                    }
                    return(Redirect(ret["result"]["status_url"]));
                }
            }
            catch (Exception ex)
            {
                SendEmail.Send("*****@*****.**", "Errore Deposit", ex.Message);
            }
            return(RedirectToAction("Deposit", "Investor"));
        }