Ejemplo n.º 1
0
        public OutcomeTextViewModel(OutcomeTextOutput message)
        {
            Total = new TotalGroupViewModel(message.Total);

            Share = new ShareGroupViewModel(message.Share);

            Debtors = new DebtorsGroupViewModel(message.Debtors);

            if (message.Collected != null)
            {
                Collected = new CollectedGroupViewModel(message.Collected);
            }

            if (message.Expenses != null)
            {
                Expenses = new ExpensesGroupViewModel(message.Expenses);
            }

            if (message.LeftOver != null)
            {
                LeftOver = new LeftOverTextViewModel(message.LeftOver);
            }

            if (message.Evens != null)
            {
                Evens = new EvensGroupViewModel(message.Evens);
            }

            UseWholeNumbers = message.UseWholeNumbers;
        }
Ejemplo n.º 2
0
        public bool Read(OutcomeTextOutput message)
        {
            OutcomeTextViewModel text = new OutcomeTextViewModel(message);

            ShowOutcomeText(text);

            return(true);
        }
Ejemplo n.º 3
0
        private void QueueOutcomeAsText()
        {
            OutcomeTextOutput text = new OutcomeTextOutput();

            //Total
            text.Total = new TotalGroupOutput()
            {
                Total       = _outcome.Total,
                TotalGuests = _outcome.TotalGuests,
                Expenses    = _outcome.Expenses.Select(x => new NameAmountOutput()
                {
                    Name   = x.Name,
                    Value1 = x.Amount,
                }).ToList()
            };

            var list = _outcome.Debtors.Where(x => x.Debt < _outcome.Share);

            //Share
            text.Share = new ShareGroupOutput()
            {
                GuestsCount       = _outcome.GuestsCount,
                Share             = _outcome.Share,
                RealShare         = _outcome.RealShare,
                HasNoDebtors      = (_outcome.GuestsCount - _outcome.Debtors.Count()) > 0,
                HasPartialDebtors = _outcome.Debtors.Any(x => x.Debt < _outcome.Share),
            };



            //Debtors
            text.Debtors = new DebtorsGroupOutput()
            {
                Share          = _outcome.Share,
                FullDebtors    = _outcome.Debtors.Where(x => x.DebtorStatus == GuestDebtorStatus.Full).Select(x => x.Name).ToList(),
                PartialDebtors = _outcome.Debtors.Where(x => x.DebtorStatus == GuestDebtorStatus.Partial).Select(x => new NameAmountOutput(x.Name, x.Debt, x.Amount)).ToList(),
            };

            //Collected
            if (_outcome.Creditors.Any())
            {
                text.Collected = new CollectedGroupOutput()
                {
                    HasExpenses    = _outcome.Expenses.Any(),
                    Debtors        = _outcome.Debtors.Select(x => x.Name).ToList(),
                    TotalCollected = _outcome.Debtors.Sum(x => x.Debt),
                    Creditors      = _outcome.Creditors.Select(x => new NameAmountOutput(x.Name, x.Debt)).ToList(),
                };
            }

            //Expenses
            if (_outcome.Expenses.Any())
            {
                text.Expenses = new ExpensesGroupOutput()
                {
                    HasCreditors = _outcome.Creditors.Any(),
                    Remaining    = _outcome.Total - _outcome.TotalGuests + _outcome.LeftOver,
                    Debtors      = _outcome.Debtors.Select(x => x.Name).ToList(),
                    Expenses     = _outcome.Expenses.Select(x => new NameAmountOutput(x.Name, x.Amount)).ToList(),
                };
            }

            //Expenses
            if (_outcome.LeftOver != 0)
            {
                text.LeftOver = new LeftOverGroupOutput()
                {
                    LeftOver = _outcome.LeftOver,
                };
            }

            //Evens
            if (_outcome.Evens.Any())
            {
                text.Evens = new EvensGroupOutput()
                {
                    Evens = _outcome.Evens.Select(x => x.Name).ToList(),
                };
            }
            text.UseWholeNumbers = RoomSettings.UseWholeNumbers;

            Queue(text);
        }