コード例 #1
0
        public void Update(SysTransactionDTO item)
        {
            SysTransaction map = Mapper.Map <SysTransaction>(item);

            Database.TransactionsAC.Update(map);
            Database.Save();
        }
コード例 #2
0
        public ClientsAndTransactionDTO Copy(int id, string userId, int clientToId, int clientFromId)
        {
            SysTransaction copyTransaction = Database.TransactionsAC.Get(id);
            Client         clientTo        = Database.Clients.Get(clientToId);
            Client         clientFrom      = Database.Clients.Get(clientFromId);

            ClientsAndTransactionDTO copyClientsAndTransactionTransactionDto = new ClientsAndTransactionDTO
            {
                SysTransactionDto = new SysTransactionDTO
                {
                    Sum          = copyTransaction.Sum,
                    CurrencyName = copyTransaction.Currency.Name,
                    CountryId    = copyTransaction.CountryId,
                    ClientFromId = copyTransaction.ClientFromId,
                },
                ClientDto = new ClientDTO
                {
                    Name        = clientTo.Name,
                    LastName    = clientTo.LastName,
                    MobilePhone = clientTo.MobilePhone
                },
                Id       = clientFrom.Id,
                Name     = clientFrom.Name,
                LastName = clientFrom.LastName
            };

            return(copyClientsAndTransactionTransactionDto);
        }
コード例 #3
0
        public Tariff GetTariff(SysTransaction transaction, int agentFromId)
        {
            Agent agent = _database.Agents.Get(agentFromId);
            Range range = _database.Ranges.SingleOrDefault(r => r.MinValue <= transaction.Sum &&
                                                           r.MaxValue >= transaction.Sum);
            Currency currency = _database.Currencies.SingleOrDefault(c => c.Id == Convert.ToInt32(transaction.CurrencyId));

            if (agent.ParentAgentId != null)
            {
                agentFromId = (int)agent.ParentAgentId;
            }
            Tariff tariff = _database.Tariffs.SingleOrDefault
                            (
                t => t.CountryId == transaction.CountryId &&
                t.RangeId == range.Id &&
                t.CurrencyId == currency.Id &&
                t.AgentId == agentFromId
                            ) ?? _database.Tariffs.SingleOrDefault
                            (
                t => t.CountryId == transaction.CountryId &&
                t.RangeId == range.Id &&
                t.CurrencyId == currency.Id &&
                t.AgentId == null
                            );

            return(tariff);
        }
コード例 #4
0
        public void Delete(int id)
        {
            SysTransaction transaction = _context.Transactions.Find(id);

            if (transaction != null)
            {
                _context.Transactions.Remove(transaction);
            }
        }
コード例 #5
0
        //+++++++++++++++++++++++++++++++++++++++++++++++     Statuses      +++++++++++++++++++++++++++++++++++++++++++++++++

        //перевод в статусы "К оплате" и "Одобрено"

        public bool StatusToPayAndApproved(int id, string value)
        {
            SysTransaction transaction = Database.TransactionsAC.Get(id);

            transaction.TransactionStatus = (int)(TransactionStatus)Enum.Parse(typeof(TransactionStatus), value);
            Database.TransactionsAC.Update(transaction);
            Database.Save();
            return(transaction.TransactionStatus == (int)(TransactionStatus)Enum.Parse(typeof(TransactionStatus), value));
        }
コード例 #6
0
 public void Update(SysTransaction item)
 {
     _context.Entry(item).State = EntityState.Modified;
     _context.SaveChanges();
     //SysTransaction transaction = _context.Transactions
     //    .Include(t => t.ClientFrom)
     //    .Include(t => t.ClientTo)
     //    .FirstOrDefault(t => t.Id == item.Id);
     //transaction = item;
 }
コード例 #7
0
        //перевод в статус "К выплате"
        public bool StatusToPayOff(int id, string userId)
        {
            SysTransaction transaction = Database.TransactionsAC.Get(id);

            transaction.TransactionStatus = (int)TransactionStatus.ToPayOff;
            transaction.UserToId          = userId;
            transaction.AgentToId         = Database.Users.GetByUserId(userId).AgentId;
            Database.TransactionsAC.Update(transaction);
            Database.Save();

            return(transaction.TransactionStatus == (int)TransactionStatus.ToPayOff);
        }
コード例 #8
0
        //++++++++++++++++++++++++++++++++++++++++++++++      Other       ++++++++++++++++++++++++++++++++++++++++++++++++++


        // Метод проверки для отмены транзакции
        // Он выполняет проверку этот ли агент отправлял этот перевод, если да то возращает true

        public bool Checker(int transactionId, string userId)
        {
            SysTransaction transaction = Database.TransactionsAC.SingleOrDefault(t => t.Id == transactionId);
            User           user        = Database.Users.GetByUserId(userId);
            Agent          agent       = Database.Agents.SingleOrDefault(a => a.Id == user.AgentId);

            if (transaction.AgentFromId == Database.Users.GetByUserId(userId).AgentId ||
                transaction.CountryId == agent.CountryId)
            {
                return(true);
            }

            return(false);
        }
コード例 #9
0
        //перевод в статус "Выдан"
        public bool StatusToIssued(int id)
        {
            SysTransaction transaction = Database.TransactionsAC.Get(id);
            Country        country     = Mapper.Map <Country>(_countryService.Get(transaction.CountryId));
            Tariff         tariff      = _commissionService.GetTariff(transaction, transaction.AgentFromId);
            decimal        summ        = _commissionService.GetCommissionWhenTransactionIssued(tariff.CommissionType, tariff.Value, transaction);

            transaction.TransactionStatus = (int)TransactionStatus.Issued;
            transaction.IssueDateLocal    = DateTime.UtcNow.AddHours(country.Utc); // Дата в часовом поясе агента
            transaction.IssueDateUtc      = DateTime.UtcNow;
            transaction.Sum = summ;
            Database.TransactionsAC.Update(transaction);
            Database.Save();
            _commissionService.SendSmsToClientSender(transaction.ClientFromId);

            return(transaction.TransactionStatus == (int)TransactionStatus.Issued);
        }
コード例 #10
0
        //перевод в статус "Подтвержден"
        public bool StatusConfirmed(int id, string userId)
        {
            SysTransaction transaction = Database.TransactionsAC.Get(id);
            //User user = Database.Users.GetByUserId(userId);
            Agent   agent   = Database.Agents.Get(transaction.AgentFromId);
            Country country = Mapper.Map <Country>(_countryService.Get(agent.CountryId));
            Tariff  tariff  = _commissionService.GetTariff(transaction, transaction.AgentFromId);
            decimal summ    = _commissionService.GetCommissionWhenTransactionCreate(tariff.CommissionType, tariff.Value, transaction);

            transaction.TransactionStatus = (int)TransactionStatus.Confirmed;
            transaction.ConfirmDateLocal  = DateTime.UtcNow.AddHours(country.Utc); // Дата в часовом поясе агента
            transaction.ConfirmDateUtc    = DateTime.UtcNow;
            transaction.ControllerId      = userId;
            transaction.Sum = summ;
            Database.TransactionsAC.Update(transaction);
            Database.Save();
            return(transaction.TransactionStatus == (int)TransactionStatus.Confirmed);
        }
コード例 #11
0
        //перевод в статус "Отменен"
        public bool StatusToCanceled(int id)
        {
            SysTransaction transaction = Database.TransactionsAC.Get(id);
            Agent          agent       = Database.Agents.Get(transaction.AgentFromId);
            Country        country     = Mapper.Map <Country>(_countryService.Get(agent.CountryId));
            Tariff         tariff      = _commissionService.GetTariff(transaction, transaction.AgentFromId);

            if (transaction.TransactionStatus == (int)TransactionStatus.Issued && transaction.AgentFromId == id)
            {
                return(false);
            }
            decimal summ = _commissionService.GetCommissionWhenTransactionIssued(tariff.CommissionType, tariff.Value, transaction);

            transaction.TransactionStatus = (int)TransactionStatus.Canceled;
            transaction.IssueDateLocal    = DateTime.UtcNow.AddHours(country.Utc); // Дата в часовом поясе агента
            transaction.IssueDateUtc      = DateTime.UtcNow;

            Database.TransactionsAC.Update(transaction);
            Database.Save();

            return(transaction.TransactionStatus == (int)TransactionStatus.Canceled);
        }
コード例 #12
0
 public void Create(SysTransaction item)
 {
     _context.Transactions.Add(item);
 }
コード例 #13
0
        public decimal GetCommissionWhenTransactionIssued(int tariffCommissionType, decimal tariffvalue, SysTransaction transaction)
        {
            Agent system = _database.Agents.SingleOrDefault(a => a.Name == "System");

            if (transaction.TransactionStatus <= (int)TransactionStatus.Confirmed)
            {
                return(transaction.Sum);
            }
            else
            {
                if (tariffCommissionType == (int)CommissionType.Fixed)
                {
                    Divide = CommissionDividing.AgentToCommission * tariffvalue +
                             CommissionDividing.SystemCommission * tariffvalue;
                    _database.Commissions.Create(new Commission()
                    {
                        AgentId     = transaction.AgentToId.GetValueOrDefault(),
                        Transaction = transaction,
                        Value       = CommissionDividing.AgentToCommission * tariffvalue
                    });
                    _database.Commissions.Create(new Commission()
                    {
                        AgentId     = system.Id,
                        Transaction = transaction,
                        Value       = CommissionDividing.SystemCommission * tariffvalue
                    });
                    _database.Save();
                    return(transaction.Sum - Divide);
                }
                else
                {
                    Divide = CommissionDividing.AgentToCommission * (transaction.Sum * tariffvalue / 100) +
                             CommissionDividing.SystemCommission * (transaction.Sum * tariffvalue / 100);
                    _database.Commissions.Create(new Commission()
                    {
                        AgentId     = transaction.AgentToId.GetValueOrDefault(),
                        Transaction = transaction,
                        Value       = CommissionDividing.AgentToCommission * (transaction.Sum * tariffvalue / 100)
                    });
                    _database.Commissions.Create(new Commission()
                    {
                        AgentId     = system.Id,
                        Transaction = transaction,
                        Value       = CommissionDividing.SystemCommission * (transaction.Sum * tariffvalue / 100)
                    });
                    _database.Save();
                    return(transaction.Sum - Divide);
                }
            }
        }
コード例 #14
0
 public decimal GetCommissionWhenTransactionCreate(int tariffCommissionType, decimal tariffvalue, SysTransaction transaction)
 {
     if (tariffCommissionType == (int)CommissionType.Fixed)
     {
         Divide = CommissionDividing.AgentFromCommission * tariffvalue;
         _database.Commissions.Create(new Commission()
         {
             AgentId     = transaction.AgentFromId,
             Transaction = transaction,
             Value       = CommissionDividing.AgentFromCommission * tariffvalue
         });
         _database.Save();
         return(transaction.Sum - Divide);
     }
     else
     {
         Divide = CommissionDividing.AgentFromCommission * (transaction.Sum * tariffvalue / 100);
         _database.Commissions.Create(new Commission()
         {
             AgentId     = transaction.AgentFromId,
             Transaction = transaction,
             Value       = CommissionDividing.AgentFromCommission * (transaction.Sum * tariffvalue / 100)
         });
         _database.Save();
     }
     return(transaction.Sum - Divide);
 }