Exemple #1
0
        public DepositDTO CreateDeposit(DepositDTO deposit)
        {
            deposit.Id = _mpDonationRepository.CreateDeposit(deposit.DepositName, deposit.DepositTotalAmount, deposit.DepositAmount, deposit.ProcessorFeeTotal, deposit.DepositDateTime,
                                                             deposit.AccountNumber, deposit.BatchCount, deposit.Exported, deposit.Notes, deposit.ProcessorTransferId);

            return(deposit);
        }
Exemple #2
0
 public static Deposit CastToDAL(DepositDTO deposit)
 {
     return(new Deposit()
     {
         depositId = deposit.depositId, userId = deposit.userId, depositDate = deposit.depositDate, depositAmount = deposit.depositAmount
     });
 }
        public async Task <decimal> DepositPocketAsync(DepositDTO request)
        {
            decimal result;

            try
            {
                var currencyAccount = DbContext.Holders.Include(nameof(PocketHolder.Accounts))
                                      .SingleOrDefault(CheckHolder(request))
                                      .Accounts
                                      .Find(acc => acc.Currency == request.Currency);

                if (currencyAccount == null)
                {
                    throw new AccountNotFoundException();
                }

                currencyAccount.Debit += request.Sum;
                DbContext.Update(currencyAccount);
                await DbContext.SaveChangesAsync();

                result = currencyAccount.Debit;
            }
            catch (DbUpdateConcurrencyException ex)
            {
                throw new ConcurrencyException();
            }

            return(result);
        }
Exemple #4
0
        public DepositDTO TransferFromAccount(string username, string cardName, DepositDTO dto)
        {
            var account = accountService.GetAccountForUser(username);

            if (account == null)
            {
                return(null);
            }

            var vc = virtualCardRepository.GetByAccountIdAndName(account.Id, cardName);

            account.Balance = account.Balance - dto.Deposit;

            if (account.Balance < 0.00)
            {
                var thFailed = convertToTH(dto.Deposit, "deposit", "failed", account.Currency, vc.CardNumber);
                account.Transactions.Add(TransactionHistoryConverter.ToEntity(thFailed));
                accountService.Save(account);
                throw new Exception("You don't have that much money into your account!!!");
            }

            vc.Balance = vc.Balance + dto.Deposit;
            accountService.Save(account);
            virtualCardRepository.Save(vc);

            var th = convertToTH(dto.Deposit, "deposit", "success", account.Currency, vc.CardNumber);

            th.AccountId = account.Id;
            transactionHistoryService.Save(th);

            return(dto);
        }
Exemple #5
0
 /// <summary>
 /// Updates Read views
 /// </summary>
 /// <param name="notification"></param>
 /// <param name="cancellationToken"></param>
 /// <returns></returns>
 public async Task Handle(DepositChangedEvent notification, CancellationToken cancellationToken)
 {
     var depo = new DepositDTO {
         TotalAmount = notification.TotalAmount
     };
     await _redisCacheClient.Db1.ReplaceAsync <DepositDTO>(ReadViewNames.Deposit, depo);
 }
 public async Task <IActionResult> Deposit(DepositType type, [FromBody] DepositDTO model)
 {
     if (type == DepositType.Cash)
     {
         try
         {
             await _accountApplicationService.DepositCashAsync(AccountId.With(model.AccountId), model.Amount);
         }
         catch (Exception e)
         {
             return(BadRequest(new { Error = e.Message }));
         }
         return(Ok(new { isSuccess = true }));
     }
     if (type == DepositType.Check)
     {
         try
         {
             await _accountApplicationService.DepositCheckAsync(AccountId.With(model.AccountId), model.Amount);
         }
         catch (Exception e)
         {
             return(BadRequest(new { Error = e.Message }));
         }
         return(Ok(new { isSuccess = true }));
     }
     return(BadRequest());
 }
Exemple #7
0
        public string GPExportFileName(DepositDTO deposit)
        {
            var date        = DateTime.Today.ToString("yyMMdd");
            var depositName = deposit.DepositName.Replace(" ", "_");

            return(string.Format("XRDReceivables-{0}_{1}.txt", depositName, date));
        }
 public ActionResult AddDeposit([FromBody] DepositDTO deposit)
 {
     try
     {
         DepositBL.AddDeposit(deposit);
     }
     catch (Exception e)
     {
         return(BadRequest(e.ToString()));
     }
     return(Ok());
 }
Exemple #9
0
        public static double?NewDeposit(DepositDTO depositDTO)
        {
            db.Deposits.Add(DepositCast.CastToDAL(depositDTO));
            try
            {
                db.SaveChanges();
                return(depositDTO.depositAmount);
            }

            catch
            {
                return(0);
            }
        }
Exemple #10
0
 public static DepositDTO DALtoDTO(Deposit deposit)
 {
     try
     {
         DepositDTO deposit_dto = new DepositDTO()
         {
             Amount    = deposit.Amount,
             Date      = deposit.Date,
             FundId    = deposit.FundId,
             DepositId = deposit.DepositId,
             // status_id = deposit.status,
             Type   = deposit.Type,
             UserId = deposit.UserId
         };
         return(deposit_dto);
     }
     catch (Exception)
     {
         throw;
     }
 }
Exemple #11
0
 public static Deposit DTOtoDAL(DepositDTO deposit)
 {
     try
     {
         Deposit DAL_Deposit = new Deposit()
         {
             Amount = deposit.Amount,
             Date   = deposit.Date,
             FundId = deposit.FundId.ToString(),
             // st = deposit.status,
             Type           = deposit.Type,
             UserId         = deposit.UserId,
             Payment_method = deposit.Payment_method
         };
         return(DAL_Deposit);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Exemple #12
0
        public DepositDTO DepositToVirtualCard(string username, string cardName, DepositDTO depositDTO)
        {
            var account = accountService.GetAccountForUser(username);

            if (account == null)
            {
                return(null);
            }

            var vc = virtualCardRepository.GetByAccountIdAndName(account.Id, cardName);

            vc.Balance = vc.Balance + depositDTO.Deposit;

            virtualCardRepository.Save(vc);

            var th = convertToTH(depositDTO.Deposit, "deposit", "success", account.Currency, vc.CardNumber);

            th.AccountId = account.Id;
            transactionHistoryService.Save(th);

            return(depositDTO);
        }
Exemple #13
0
        public static void AddDeposit(DepositDTO deposit)
        {
            DB db = new SuperGmachEntities();

            try
            {
                Deposit deposit_DAL = new Deposit();
                deposit_DAL = DepositConvert.DTOtoDAL(deposit);
                // System.Console.WriteLine(deposit+" DAL/n "+deposit_DAL);
                db.Deposits.Add(deposit_DAL);
                User user = db.Users.FirstOrDefault();
                db.SaveChanges();
                user.Scoring = (int)((int)user.Scoring + deposit.Amount * 0.5);
                User_in_fund user_In_Fund = db.UserInFunds.FirstOrDefault(u => u.UserId == deposit.UserId && u.FundId == deposit.FundId);
                user_In_Fund.balance += deposit.Amount;
                FundBL.AddBalance((int)deposit.Amount, deposit.FundId);
                db.SaveChanges();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Exemple #14
0
        public static DepositDTO ToDto(this Deposit deposit)
        {
            if (deposit == null)
            {
                return(null);
            }

            var depositDTO = new DepositDTO
            {
                Id = deposit.Id,
                PaymentStatusID = deposit.PaymentStatusID,
                PaymentAmount   = deposit.PaymentAmount,
                ExchangeRate    = deposit.ExchangeRate,
                FundingTypeID   = deposit.FundingTypeID,
                CurrencyID      = deposit.CurrencyID,
                TimeStamp       = deposit.TimeStamp,
                Currency        = deposit.Currency.ToDto(),
                FundingType     = deposit.FundingType.ToDto(),
                PaymentStatus   = deposit.PaymentStatus.ToDto(),
            };

            return(depositDTO);
        }
Exemple #15
0
        public static Deposit ToEntity(this DepositDTO depositDTO)
        {
            if (depositDTO == null)
            {
                return(null);
            }

            var deposit = new Deposit
            {
                Id = depositDTO.Id,
                PaymentStatusID = depositDTO.PaymentStatusID,
                PaymentAmount   = depositDTO.PaymentAmount,
                ExchangeRate    = depositDTO.ExchangeRate,
                FundingTypeID   = depositDTO.FundingTypeID,
                CurrencyID      = depositDTO.CurrencyID,
                TimeStamp       = depositDTO.TimeStamp,
                Currency        = depositDTO.Currency.ToEntity(),
                FundingType     = depositDTO.FundingType.ToEntity(),
                PaymentStatus   = depositDTO.PaymentStatus.ToEntity(),
            };

            return(deposit);
        }
Exemple #16
0
        public async Task <IActionResult> DepositAccount(string accountNumber, [FromBody] DepositDTO request)
        {
            if (string.IsNullOrEmpty(accountNumber) ||
                accountNumber != request.MasterAccount)
            {
                ModelState.AddModelError("", AccountNotFoundException.DefaultErrorMessage);
                return(BadRequest(ModelState));
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var result = await PocketService.DepositPocketAsync(request);

                return(new JsonResult(result));
            }
            catch (Exception ex)
            {
                return(HandleException(ex));
            }
        }
        public TransferPaidResponseDTO TransferPaid(DateTime?eventTimestamp, StripeTransfer transfer)
        {
            _logger.Debug("Processing transfer.paid event for transfer id " + transfer.Id);

            var response = new TransferPaidResponseDTO();

            // Don't process this transfer if we already have a deposit for the same transfer id
            var existingDeposit = _donationService.GetDepositByProcessorTransferId(transfer.Id);

            if (existingDeposit != null)
            {
                var msg = $"Deposit {existingDeposit.Id} already created for transfer {existingDeposit.ProcessorTransferId}";
                _logger.Debug(msg);
                response.TotalTransactionCount = 0;
                response.Message   = msg;
                response.Exception = new ApplicationException(msg);
                return(response);
            }

            // Don't process this transfer if we can't find any charges for the transfer
            var charges = _paymentProcessorService.GetChargesForTransfer(transfer.Id);

            if (charges == null || charges.Count <= 0)
            {
                var msg = "No charges found for transfer: " + transfer.Id;
                _logger.Debug(msg);
                response.TotalTransactionCount = 0;
                response.Message   = msg;
                response.Exception = new ApplicationException(msg);
                return(response);
            }

            var depositName = DateTime.Now.ToString(BatchNameDateFormat);

            var paymentcharges  = charges.Where(m => m.Metadata != null && m.Metadata.ContainsKey("crossroads_transaction_type") && m.Metadata["crossroads_transaction_type"].ToString() == "payment").ToList();
            var donationcharges = charges.Except(paymentcharges).ToList();

            if (paymentcharges.Count + donationcharges.Count != charges.Count)
            {
                var msg = "Donation and Payment charges count error for transfer: " + transfer.Id;
                _logger.Debug(msg);
                response.TotalTransactionCount = 0;
                response.Message   = msg;
                response.Exception = new ApplicationException(msg);
                return(response);
            }

            var paymentBatch  = CreateBatchDTOFromCharges(paymentcharges, depositName + "P", eventTimestamp, transfer, ref response);
            var donationBatch = CreateBatchDTOFromCharges(donationcharges, depositName + "D", eventTimestamp, transfer, ref response);

            var stripeTotalFees = paymentBatch.BatchFeeTotal + donationBatch.BatchFeeTotal;

            // Create the deposit
            var deposit = new DepositDTO
            {
                // Account number must be non-null, and non-empty; using a single space to fulfill this requirement
                AccountNumber   = " ",
                BatchCount      = paymentBatch.ItemCount > 0 && donationBatch.ItemCount > 0 ? 2 : 1,
                DepositDateTime = DateTime.Now,
                DepositName     = depositName,
                // This is the amount from Stripe - will show out of balance if does not match batch total above
                DepositTotalAmount = ((transfer.Amount / Constants.StripeDecimalConversionValue) + (stripeTotalFees / Constants.StripeDecimalConversionValue)),
                ProcessorFeeTotal  = stripeTotalFees / Constants.StripeDecimalConversionValue,
                DepositAmount      = transfer.Amount / Constants.StripeDecimalConversionValue,
                Exported           = false,
                Notes = null,
                ProcessorTransferId = transfer.Id
            };

            try
            {
                response.Deposit = _donationService.CreateDeposit(deposit);
            }
            catch (Exception e)
            {
                _logger.Error("Failed to create batch deposit", e);
                throw;
            }

            // Create the batch, with the above deposit id
            paymentBatch.DepositId  = response.Deposit.Id;
            donationBatch.DepositId = response.Deposit.Id;

            //donation Batch
            try
            {
                if (donationBatch.ItemCount > 0)
                {
                    response.Batch.Add(_donationService.CreateDonationBatch(donationBatch));
                }
            }
            catch (Exception e)
            {
                _logger.Error("Failed to create donation batch", e);
                throw;
            }

            // payment Batch
            try
            {
                if (paymentBatch.ItemCount > 0)
                {
                    response.Batch.Add(_paymentService.CreatePaymentBatch(paymentBatch));
                }
            }
            catch (Exception e)
            {
                _logger.Error("Failed to create payment batch", e);
                throw;
            }

            return(response);
        }
Exemple #18
0
 public static void deleteDeposit(DepositDTO depositDTO)
 {
     db.Deposits.Remove(db.Deposits.First(d => d.depositId == depositDTO.depositId));
     db.SaveChanges();
 }
Exemple #19
0
 public IHttpActionResult AddDepositToVitualCard(string username, string cardname, DepositDTO dto)
 {
     return(Json(_service.DepositToVirtualCard(username, cardname, dto)));
 }
Exemple #20
0
 public HttpResponseMessage NewDeposit(DepositDTO deposit)
 {
     return(Request.CreateResponse(HttpStatusCode.OK, DepositLogic.NewDeposit(deposit)));
 }
Exemple #21
0
 public IHttpActionResult TransferFromAccount(string username, string cardname, DepositDTO dto)
 {
     return(Json(_service.TransferFromAccount(username, cardname, dto)));
 }
Exemple #22
0
 public DepositDTO Post([FromBody] DepositDTO Deposit)
 {
     return(DepositService.PrePostDTO(ModelState, currentClient, Deposit));
 }
Exemple #23
0
 public HttpResponseMessage DeleteDeposit(DepositDTO depositDTO)
 {
     DepositLogic.deleteDeposit(depositDTO);
     return(Request.CreateResponse(HttpStatusCode.OK));
 }
Exemple #24
0
 public IHttpActionResult Put([FromUri] int id, [FromBody] DepositDTO Deposit)
 {
     DepositService.PrePutDTO(ModelState, currentClient, id, Deposit);
     return(Ok());
 }