Skip to content

Conversation

@EnesEfeTokta
Copy link
Owner

This pull request introduces several enhancements and refactors across the FinTrack application, focusing on budget tracking, reporting, notification handling, and UI improvements. Notably, it adds support for tracking the reached amount in budgets, improves report generation, introduces new UI converters and behaviors, and cleans up unused services and dependencies.

Budget Tracking Enhancements:

  • Added a nullable ReachedAmount property to BudgetCreateDto, BudgetDto, and BudgetUpdateDto to allow tracking how much of the budget has been reached. Also introduced a new BudgetUpdateReachedAmountDto for updating this value. [1] [2] [3] [4]
  • Updated BudgetModel to use ReachedAmount for progress calculations and display, and added related properties for editing and displaying this value. [1] [2]

Reporting Improvements:

  • Enhanced ReportDashboardModel to use dependency-injected IReportStore for asynchronous report creation and saving, with improved user feedback and error handling. Added a Type property for report type specification. [1] [2] [3]
  • Registered new services (IReportStore, IUserStore, IAppInNotificationService) for dependency injection and ensured proper disposal on application exit. [1] [2] [3]

UI and Converter Additions:

  • Added new value converters and behaviors, including AutoScrollBehavior, ValueToVisibilityConverter, and VideoStatusConverter, to enhance UI interactivity and data binding. Improved BooleanToVisibilityConverter and EqualityToBooleanConverter for more flexible and robust conversions. [1] [2] [3] [4] [5] [6]

Project Cleanup and Dependency Management:

  • Removed unused EmailService and NotificationTemplates from the project and added the Notifications.Wpf NuGet package for improved notification support. [1] [2]

Dashboard Model Refactor:

  • Refactored AccountDashboard to separate income and expense percentages and amounts, providing a clearer breakdown of account data.

Application Lifecycle:

  • Changed App.xaml to use explicit shutdown mode, giving the app more control over its shutdown process.

These changes collectively improve the application's ability to track budget progress, generate and manage reports, provide a more interactive and responsive UI, and maintain a cleaner codebase.

Added HandyControl for enhanced notifications and UI theming, including new notification service implementations. Refactored report generation logic to use a centralized IReportStore, updated related ViewModels and Models for dependency injection, and improved report creation workflows. Renamed ExportFormat to DocumentFormat for clarity and updated project references and XAML resources accordingly.
…rvice

Replaced HandyControl notification service with Notifications.Wpf-based AppInNotificationService and updated dependency references. Introduced IUserStore and UserStore for managing current user data. Improved logging messages for consistency and clarity, updated converters and models, and added new UI helpers and styles. Removed unused HandyControl resources and code.
…ranslations

Added new properties to DebtModel for richer debt details, including emails, description, approval/payment dates, and currency. Introduced an expandable detail view for debts in DebtView.xaml, with new styles for detail labels, separators, and buttons. Updated UI text in BudgetView.xaml and TransactionsView.xaml to English for consistency. Improved DashboardView.xaml for clearer party display. Added VideoStatusConverter helper. Updated DebtStore to map new fields from DTOs.
…video text

Introduces a currency selection ComboBox for new debt offers, passing the selected BaseCurrencyType through the view model and service layers. Updates the video commitment text to use the selected currency and English language, and improves error handling in the video recorder. Also enhances lender and borrower info display in the debt details view.
Introduces the ability to view and edit the 'Reached Amount' for budgets. Updates DTOs, models, and view models to include the new field, adds a dedicated DTO for updating reached amounts, and implements related UI changes in BudgetView.xaml. Also updates styles and minor UI text for consistency.
Cleaned up unused using directives across multiple ViewModel and Helper files, improving code clarity. Fixed minor formatting inconsistencies, such as spacing and import order, to maintain code style consistency.
@EnesEfeTokta EnesEfeTokta requested a review from Copilot August 9, 2025 09:21
@EnesEfeTokta EnesEfeTokta self-assigned this Aug 9, 2025
@EnesEfeTokta EnesEfeTokta added the enhancement New feature or request label Aug 9, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request significantly enhances the FinTrack application by modernizing localization from Turkish to English, implementing comprehensive notification systems, improving budget tracking capabilities, and introducing better error handling and user experience features.

  • English localization replaces Turkish text across all user-facing components
  • Introduction of a centralized notification service replacing modal MessageBox dialogs
  • Enhanced budget tracking with reached amount functionality and interactive editing

Reviewed Changes

Copilot reviewed 64 out of 65 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
Views/*.xaml Complete English localization of all UI labels, buttons, and user messages
ViewModels/*.cs Integration of IAppInNotificationService and English messaging throughout
Services/AppInNotifications/* New notification service implementation using Notifications.Wpf
Services/Users/* New user store for centralized user data management
Services/Reports/* Report generation abstracted into dedicated store service
Styles/ModernStyles.xaml Enhanced UI styles including date picker improvements and new button styles
Models and DTOs Budget tracking enhancements with ReachedAmount property support

</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0" Margin="0,0,10,10">
<TextBlock Text="AÇIKLAMAYA GÖRE ARA" Style="{StaticResource LabelTextStyle}"/>
<TextBlock Text="SEARCH BY DESCRIPTION" Style="{StaticResource LabelTextStyle}"/>
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The text 'SEARCH BY DESCRIPTION' should be 'SEARCH BY DESCRIPTION' for consistency with other labels, but consider using 'Search by Description' for better readability.

Copilot uses AI. Check for mistakes.
}
"List All My Accounts" => "List all my accounts. Don't give too long explanations.",
"List All My Budgets" => "List all my budgets. Don't give too long explanations.",
"List All My Transactions" => "List all my transacitons. Don't give too long explanations.",
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a spelling error: 'transacitons' should be 'transactions'.

Suggested change
"List All My Transactions" => "List all my transacitons. Don't give too long explanations.",
"List All My Transactions" => "List all my transactions. Don't give too long explanations.",

Copilot uses AI. Check for mistakes.
"List All My Accounts",
"List All My Budgets",
"List All My Transacitons",
"List All My Transactions",
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line correctly spells 'Transactions', but it should match the misspelling fix in the switch statement below.

Suggested change
"List All My Transactions",
"List All My Transcations",

Copilot uses AI. Check for mistakes.

public async Task LoadCurrentUserAsync()
{
_logger.LogInformation("Mevcut kullanıcı bilgileri yükleniyor...");
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Log message is still in Turkish ('Mevcut kullanıcı bilgileri yükleniyor...') but should be in English for consistency with the rest of the codebase.

Suggested change
_logger.LogInformation("Mevcut kullanıcı bilgileri yükleniyor...");
_logger.LogInformation("Loading current user information...");

Copilot uses AI. Check for mistakes.
if (userDto != null)
{
CurrentUser = user;
_logger.LogInformation("Kullanıcı bilgileri başarıyla yüklendi: {UserName}", userDto.UserName);
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Log message is in Turkish ('Kullanıcı bilgileri başarıyla yüklendi') but should be in English for consistency.

Suggested change
_logger.LogInformation("Kullanıcı bilgileri başarıyla yüklendi: {UserName}", userDto.UserName);
_logger.LogInformation("User information loaded successfully: {UserName}", userDto.UserName);

Copilot uses AI. Check for mistakes.
{
if (CurrentUser != null)
{
_logger.LogInformation("Mevcut kullanıcı bilgileri temizleniyor.");
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Log message is in Turkish but should be in English for consistency with the rest of the codebase.

Suggested change
_logger.LogInformation("Mevcut kullanıcı bilgileri temizleniyor.");
_logger.LogInformation("Clearing current user information.");

Copilot uses AI. Check for mistakes.
{
_logger.LogError(ex, "Kategoriler yüklenirken hata oluştu.");
MessageBox.Show("Kategoriler yüklenemedi. Lütfen internet bağlantınızı kontrol edin.", "Hata", MessageBoxButton.OK, MessageBoxImage.Error);
_logger.LogError(ex, "Kategoriler yüklenirken bir hata oluştu.");
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Log message is in Turkish but should be in English for consistency with the rest of the codebase.

Suggested change
_logger.LogError(ex, "Kategoriler yüklenirken bir hata oluştu.");
_logger.LogError(ex, "An error occurred while loading categories.");

Copilot uses AI. Check for mistakes.
_logger.LogError(ex, "Kategoriler yüklenirken hata oluştu.");
MessageBox.Show("Kategoriler yüklenemedi. Lütfen internet bağlantınızı kontrol edin.", "Hata", MessageBoxButton.OK, MessageBoxImage.Error);
_logger.LogError(ex, "Kategoriler yüklenirken bir hata oluştu.");
_notificationService.ShowError("Kategoriler yüklenemedi. Lütfen internet bağlantınızı kontrol edin.");
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Notification message is in Turkish but should be in English for consistency with the rest of the codebase.

Suggested change
_notificationService.ShowError("Kategoriler yüklenemedi. Lütfen internet bağlantınızı kontrol edin.");
_notificationService.ShowError("Categories could not be loaded. Please check your internet connection.");

Copilot uses AI. Check for mistakes.
if (SelectedBudget == null || string.IsNullOrWhiteSpace(SelectedBudget.Name) || SelectedBudget.AllocatedAmount <= 0)
{
MessageBox.Show("Lütfen bütçe adı ve sıfırdan büyük bir miktar girin.", "Eksik Bilgi", MessageBoxButton.OK, MessageBoxImage.Warning);
_notificationService.ShowWarning("Bütçe adı ve tutarı boş veya sıfırdan küçük olamaz.");
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Notification message is in Turkish but should be in English for consistency with the rest of the codebase.

Suggested change
_notificationService.ShowWarning("Bütçe adı ve tutarı boş veya sıfırdan küçük olamaz.");
_notificationService.ShowWarning("Budget name and amount cannot be empty or less than or equal to zero.");

Copilot uses AI. Check for mistakes.
if (string.IsNullOrWhiteSpace(categoryToSave))
{
MessageBox.Show("Lütfen bir kategori seçin veya yazın.", "Eksik Bilgi", MessageBoxButton.OK, MessageBoxImage.Warning);
_notificationService.ShowWarning("Lütfen bir kategori seçin veya yazın.");
Copy link

Copilot AI Aug 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Notification message is in Turkish but should be in English for consistency with the rest of the codebase.

Suggested change
_notificationService.ShowWarning("Lütfen bir kategori seçin veya yazın.");
_notificationService.ShowWarning("Please select or enter a category.");

Copilot uses AI. Check for mistakes.
@EnesEfeTokta EnesEfeTokta merged commit dcd5201 into main Aug 9, 2025
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants