/// <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"); }
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; }