Esempio n. 1
0
        public static string AmountAsString(DebtCalculation calc, decimal amount)
        {
            var numberFormat = (NumberFormatInfo)Thread.CurrentThread.CurrentCulture.NumberFormat.Clone();
            numberFormat.CurrencySymbol = GetCurrencySymbol(calc);

            return amount.ToString("C", numberFormat);
        }
Esempio n. 2
0
        // TODO: Find better way of doing this on WP8
        private static string GetCurrencySymbol(DebtCalculation calc)
        {
            switch (calc.Currency)
            {
                case "EUR":
                    return "€";

                case "USD":
                    return "$";

                case "GPD":
                    return "£";

                case "SEK":
                    return "kr";

                default:
                    return calc.Currency;
            }
        }
        private void ShowParticipants(DebtCalculation calc)
        {
            var i = 1;
            foreach (var participant in calc.Participants)
            {
                ParticipantsGrid.RowDefinitions.Add(new RowDefinition());

                if (i % 2 == 1)
                {
                    var background = new Grid
                        {
                            Background = (SolidColorBrush) Application.Current.Resources["SujutLightGreenBrush"]
                        };

                    Grid.SetRow(background, i);
                    Grid.SetColumn(background, 0);
                    Grid.SetColumnSpan(background, 3);

                    ParticipantsGrid.Children.Add(background);
                }

                var name = new TextBlock { Text = participant.User.FullName() };
                Grid.SetRow(name, i);
                Grid.SetColumn(name, 0);
                ParticipantsGrid.Children.Add(name);

                var addedExpenses = new TextBlock
                    {
                        Text = participant.DoneAddingExpenses ? "✓" : " ",
                        HorizontalAlignment = HorizontalAlignment.Center
                    };
                Grid.SetRow(addedExpenses, i);
                Grid.SetColumn(addedExpenses, 1);
                ParticipantsGrid.Children.Add(addedExpenses);

                var hasPaid = new TextBlock
                    {
                        Text = participant.HasPaid ? "✓" : " ",
                        HorizontalAlignment = HorizontalAlignment.Center
                    };
                Grid.SetRow(hasPaid, i);
                Grid.SetColumn(hasPaid, 2);
                ParticipantsGrid.Children.Add(hasPaid);

                i++;
            }
        }
        private void ShowExpenses(DebtCalculation calc)
        {
            var totalParticipants = calc.Participants.Count();

            var i = 1;
            foreach (var expense in calc.Expenses)
            {
                ExpensesGrid.RowDefinitions.Add(new RowDefinition());
                ExpensesGrid.RowDefinitions.Add(new RowDefinition());

                if ((i/2) % 2 == 0)
                {
                    var background = new Grid
                    {
                        Background = (SolidColorBrush)Application.Current.Resources["SujutLightGreenBrush"]
                    };

                    Grid.SetRow(background, i);
                    Grid.SetColumn(background, 0);
                    Grid.SetColumnSpan(background, 3);

                    ExpensesGrid.Children.Add(background);

                    var background2 = new Grid
                    {
                        Background = (SolidColorBrush)Application.Current.Resources["SujutLightGreenBrush"]
                    };

                    Grid.SetRow(background2, i + 1);
                    Grid.SetColumn(background2, 0);
                    Grid.SetColumnSpan(background2, 3);

                    ExpensesGrid.Children.Add(background2);
                }

                var payer = calc.Participants.Single(p => p.User.Id == expense.Payer.Id);
                var payerText = new TextBlock { Text = payer.User.FullName() };
                Grid.SetRow(payerText, i);
                Grid.SetColumn(payerText, 0);
                ExpensesGrid.Children.Add(payerText);

                var amount = new TextBlock
                    {
                        Text = Utils.AmountAsString(calc, expense.Amount),
                        HorizontalAlignment = HorizontalAlignment.Center
                    };
                Grid.SetRow(amount, i);
                Grid.SetColumn(amount, 1);
                ExpensesGrid.Children.Add(amount);

                var participants = new TextBlock
                {
                    Text = expense.Debtors.Count() + "/" + totalParticipants,
                    HorizontalAlignment = HorizontalAlignment.Center
                };

                Grid.SetRow(participants, i);
                Grid.SetColumn(participants, 2);
                ExpensesGrid.Children.Add(participants);

                var description = new TextBlock { Text = expense.Description, TextWrapping = new TextWrapping()};
                Grid.SetRow(description, i+1);
                Grid.SetColumn(description, 0);
                Grid.SetColumnSpan(description, 3);
                ExpensesGrid.Children.Add(description);

                i += 2;
            }
        }
        private void ShowDebts(DebtCalculation calc)
        {
            var i = 0;
            foreach (var debt in calc.Debts)
            {
                var grid = new Grid();
                grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
                grid.ColumnDefinitions.Add(new ColumnDefinition());
                grid.RowDefinitions.Add(new RowDefinition());
                grid.RowDefinitions.Add(new RowDefinition());
                grid.RowDefinitions.Add(new RowDefinition());
                grid.RowDefinitions.Add(new RowDefinition());

                if (i % 2 == 0)
                {
                    grid.Background = (SolidColorBrush)Application.Current.Resources["SujutLightGreenBrush"];
                }

                var debtorHeader = new TextBlock { Text = AppResources.From, FontWeight = FontWeights.Bold };
                Grid.SetRow(debtorHeader, 0);
                Grid.SetColumn(debtorHeader, 0);
                grid.Children.Add(debtorHeader);

                var debtor = calc.Participants.Single(p => p.User.Id == debt.Debtor.Id);
                var debtorText = new TextBlock { Text = debtor.User.FullName(), HorizontalAlignment = HorizontalAlignment.Right };
                Grid.SetRow(debtorText, 0);
                Grid.SetColumn(debtorText, 1);
                grid.Children.Add(debtorText);

                var creditorHeader = new TextBlock { Text = AppResources.To, FontWeight = FontWeights.Bold};
                Grid.SetRow(creditorHeader, 1);
                Grid.SetColumn(creditorHeader, 0);
                grid.Children.Add(creditorHeader);

                var creditor = calc.Participants.Single(p => p.User.Id == debt.Creditor.Id);
                var creditorText = new TextBlock { Text = creditor.User.FullName(), HorizontalAlignment = HorizontalAlignment.Right };
                Grid.SetRow(creditorText, 1);
                Grid.SetColumn(creditorText, 1);
                grid.Children.Add(creditorText);

                var amountHeader = new TextBlock { Text = AppResources.Amount, FontWeight = FontWeights.Bold };
                Grid.SetRow(amountHeader, 2);
                Grid.SetColumn(amountHeader, 0);
                grid.Children.Add(amountHeader);

                var amount = new TextBlock { Text = Utils.AmountAsString(calc, debt.Amount), HorizontalAlignment = HorizontalAlignment.Right };
                Grid.SetRow(amount, 2);
                Grid.SetColumn(amount, 1);
                grid.Children.Add(amount);

                var hasPaidHeader = new TextBlock { Text = AppResources.HasPaid, FontWeight = FontWeights.Bold };
                Grid.SetRow(hasPaidHeader, 3);
                Grid.SetColumn(hasPaidHeader, 0);
                grid.Children.Add(hasPaidHeader);

                var hasPaid = new TextBlock { Text = debtor.HasPaid ? "✓" : " ", HorizontalAlignment = HorizontalAlignment.Right };
                Grid.SetRow(hasPaid, 3);
                Grid.SetColumn(hasPaid, 1);
                grid.Children.Add(hasPaid);

                DebtsList.Children.Add(grid);

                i++;
            }
        }