Exemple #1
0
        /// <summary>
        /// Checks if any messages with status pending is delivered/failed and updates status in database.
        /// Returns sum of all pending messages.
        /// </summary>
        public void CheckAndUpdateMessageStatus()
        {
            LogManager.LogTrace("SE.GOV.MM.Integration.Delivery.DataLayer.DataManager: incoming CheckAndUpdateMessageStatus");

            // Get all DeliveryResult Pending from database.
            var listOfMessageStatusPending = GetPackageByPackageStatusPending();

            // Check for new status with CheckDistributeSecure in message webservice.
            if (listOfMessageStatusPending.Count > 0)
            {
                LogManager.LogTrace(string.Format("SE.GOV.MM.Integration.Delivery.DataLayer.DataManager: checking messages counting: {0}.", listOfMessageStatusPending.Count.ToString()));

                foreach (var message in listOfMessageStatusPending)
                {
                    DistributionStatus deliveryResult = null;

                    if (!string.IsNullOrEmpty(message.DistributionId))
                    {
                        deliveryResult = CheckDistibutionStatus(message?.DistributionId);
                    }
                    else
                    {
                        message.MessageStatus = MessageStatus.Failed;
                    }

                    if (deliveryResult != null)
                    {
                        message.MessageStatus = ConvertDeliveryResultToMessageResult(deliveryResult.DeliveryStatus, message.DistributionId);
                    }
                }

                // Update database
                UpdateMessages(listOfMessageStatusPending);
            }
            else
            {
                LogManager.LogTrace("SE.GOV.MM.Integration.Delivery.DataLayer.DataManager: No messages in database with status pending..");
            }

            LogManager.LogTrace("SE.GOV.MM.Integration.Delivery.DataLayer.DataManager: leaving CheckAndUpdateMessageStatus");
        }
Exemple #2
0
 private static XElement ToXElement(this DistributionStatus distributionStatus)
 {
     return(new XElement(EdxlDe20Namespace + "DistributionStatus",
                         distributionStatus.StatusKindDefault.ToXElement()));
 }
 // Завершение процесса торговли
 public void EndBazar()
 {
     // Установка козыря для всех игроков
     Player1Cards.SetTrump(Orders.Current.Trump);
     Player2Cards.SetTrump(Orders.Current.Trump);
     Player3Cards.SetTrump(Orders.Current.Trump);
     Player4Cards.SetTrump(Orders.Current.Trump);
     // Проверка карт на наличие бонуса Belote
     Player1Cards.FindBelote();
     Player2Cards.FindBelote();
     Player3Cards.FindBelote();
     Player4Cards.FindBelote();
     Status = DistributionStatus.D_GAME;
     // Заполняем список бонусов
     Player1Bonuses = new BonusList(Player1Cards);
     Player2Bonuses = new BonusList(Player2Cards);
     Player3Bonuses = new BonusList(Player3Cards);
     Player4Bonuses = new BonusList(Player4Cards);
 }
 // Езменение статуса извне
 public void ChangeStatus(DistributionStatus NewStatus)
 {
     Status = NewStatus;
 }
        // Рассчет очков, после завершения раздачи
        public void CalculateScores()
        {
            // Если не разыграны все 8 карт, то расчитывать нечего
            if (bribes.Count != 8)
                return;
            // Суммы очков команд
            int s1 = 0;
            int s2 = 0;
            // Количество бонусов, в том числе и блот
            int b1 = 0;
            int b2 = 0;
            if (BonusesWinner == BeloteTeam.TEAM1_1_3)
                b1 = BonusSummTeam(BonusesWinner);
            else
            if (BonusesWinner == BeloteTeam.TEAM2_2_4)
                b2 = BonusSummTeam(BonusesWinner);
            if ((Player1Cards.IsBelote) || (Player3Cards.IsBelote))
                b1 += 20;
            if ((Player2Cards.IsBelote) || (Player4Cards.IsBelote))
                b2 += 20;
            // Количества взятых командами взяток
            int c1 = 0;
            int c2 = 0;
            // Подсчитываем набранное количество очков командами
            foreach (Bribe b in bribes)
            {
                if (b.WinningTeam == BeloteTeam.TEAM1_1_3)
                {
                    s1 += b.BribeCost;
                    c1++;
                }
                else
                {
                    s2 += b.BribeCost;
                    c2++;
                }
            }
            // Если одна из команд не взяла ни одной взятки, то раздача закончилась капутом
            if ((c1 == 0) || (c2 == 0))
                IsCapotEnded = true;
            // Прибавляем 10 бонусных очков за последнюю раздачу
            if (bribes[bribes.Count - 1].WinningTeam == BeloteTeam.TEAM1_1_3)
                s1 += 10;
            else
                s2 += 10;

            // Окончательные очки
            int Score1 = 0;
            int Score2 = 0;
            // Производим расчет очков
            switch (Orders.OrderedTeam)
            {
                case BeloteTeam.TEAM1_1_3:
                    {
                        Calculate(s1, s2, b1, b2, out Score1, out Score2);
                        break;
                    }
                case BeloteTeam.TEAM2_2_4:
                    {
                        Calculate(s2, s1, b2, b1, out Score2, out Score1);
                        break;
                    }
                default:
                    {
                        break;
                    }
            }
            ScoresTeam1 = (int)Math.Round((Score1 / 10.0));
            ScoresTeam2 = (int)Math.Round((Score2 / 10.0));

            Status = DistributionStatus.D_ENDED;
        }