Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions FinTrack/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@
using FinTrackForWindows.Services.Accounts;
using FinTrackForWindows.Services.Api;
using FinTrackForWindows.Services.AppInNotifications;
using FinTrackForWindows.Services.ApplySettings;
using FinTrackForWindows.Services.Budgets;
using FinTrackForWindows.Services.Camera;
using FinTrackForWindows.Services.Currencies;
using FinTrackForWindows.Services.Debts;
using FinTrackForWindows.Services.Dialog;
using FinTrackForWindows.Services.Memberships;
using FinTrackForWindows.Services.Reports;
using FinTrackForWindows.Services.StoresRefresh;
using FinTrackForWindows.Services.Transactions;
using FinTrackForWindows.Services.Users;
using FinTrackForWindows.ViewModels;
Expand Down Expand Up @@ -94,7 +97,10 @@ private void ConfigureServices(IServiceCollection services)
services.AddSingleton<IReportStore, ReportStore>();
services.AddSingleton<IUserStore, UserStore>();

services.AddSingleton<IApplySettingsService, ApplySettingsService>();
services.AddTransient<ICameraService, CameraService>();
services.AddSingleton<IDialogService, WpfDialogService>();
services.AddSingleton<IStoresRefresh, StoresRefresh>();

services.AddSingleton<IAppInNotificationService, AppInNotificationService>();
}
Expand Down
4 changes: 4 additions & 0 deletions FinTrack/Dtos/CurrencyDtos/ChangeSummaryDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
{
public class ChangeSummaryDto
{
// Günlük
public decimal? DailyLow { get; set; }
public decimal? DailyHigh { get; set; }

// Değişim Miktarı
public decimal? DailyChangeValue { get; set; }
public decimal? WeeklyChangeValue { get; set; }
Expand Down
12 changes: 0 additions & 12 deletions FinTrack/Dtos/SettingsDtos/ProfileSettingsDto.cs

This file was deleted.

9 changes: 0 additions & 9 deletions FinTrack/Dtos/SettingsDtos/ProfileSettingsUpdateDto.cs

This file was deleted.

7 changes: 7 additions & 0 deletions FinTrack/Dtos/SettingsDtos/UpdateProfilePictureDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace FinTrackForWindows.Dtos.SettingsDtos
{
public class UpdateProfilePictureDto
{
public string ProfilePictureUrl { get; set; } = string.Empty;
}
}
8 changes: 8 additions & 0 deletions FinTrack/Dtos/SettingsDtos/UpdateUserEmailDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace FinTrackForWindows.Dtos.SettingsDtos
{
public class UpdateUserEmailDto
{
public string NewEmail { get; set; } = string.Empty;
public string OtpCode { get; set; } = string.Empty;
}
}
8 changes: 8 additions & 0 deletions FinTrack/Dtos/SettingsDtos/UpdateUserNameDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace FinTrackForWindows.Dtos.SettingsDtos
{
public class UpdateUserNameDto
{
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
}
}
8 changes: 8 additions & 0 deletions FinTrack/Dtos/SettingsDtos/UpdateUserPasswordDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace FinTrackForWindows.Dtos.SettingsDtos
{
public class UpdateUserPasswordDto
{
public string CurrentPassword { get; set; } = string.Empty;
public string NewPassword { get; set; } = string.Empty;
}
}
1 change: 1 addition & 0 deletions FinTrack/Dtos/SettingsDtos/UserAppSettingsDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public class UserAppSettingsDto
public int Id { get; set; }
public AppearanceType Appearance { get; set; }
public BaseCurrencyType Currency { get; set; }
public LanguageType Language { get; set; }
public DateTime CreatedAtUtc { get; set; }
public DateTime? UpdatedAtUtc { get; set; }
}
Expand Down
1 change: 1 addition & 0 deletions FinTrack/Dtos/SettingsDtos/UserAppSettingsUpdateDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ public class UserAppSettingsUpdateDto
{
public AppearanceType Appearance { get; set; }
public BaseCurrencyType Currency { get; set; }
public LanguageType Language { get; set; }
}
}
42 changes: 42 additions & 0 deletions FinTrack/Dtos/UserDtos/UserProfileDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using FinTrackForWindows.Enums;

namespace FinTrackForWindows.Dtos.UserDtos
{
public class UserProfileDto
{
// Temel Bilgiler
public int Id { get; set; }
public string UserName { get; set; } = string.Empty;
public string Email { get; set; } = string.Empty;
public string? ProfilePictureUrl { get; set; }
public DateTime CreatedAtUtc { get; set; }

// Üyelik Bilgileri
public int CurrentMembershipPlanId { get; set; }
public string CurrentMembershipPlanType { get; set; } = string.Empty;
public DateTime MembershipStartDateUtc { get; set; }
public DateTime MembershipExpirationDateUtc { get; set; }

// Ayarlar
public AppearanceType Thema { get; set; }
public LanguageType Language { get; set; }
public BaseCurrencyType Currency { get; set; }
public bool SpendingLimitWarning { get; set; }
public bool ExpectedBillReminder { get; set; }
public bool WeeklySpendingSummary { get; set; }
public bool NewFeaturesAndAnnouncements { get; set; }
public bool EnableDesktopNotifications { get; set; }

// Kullanımlar
public List<int> CurrentAccounts = new();
public List<int> CurrentBudgets = new();
public List<int> CurrentTransactions = new();
public List<int> CurrentBudgetsCategories = new();
public List<int> CurrentTransactionsCategories = new();
public List<int> CurrentLenderDebts = new();
public List<int> CurrentBorrowerDebts = new();
public List<int> CurrentNotifications = new();
public List<int> CurrentFeedbacks = new();
public List<int> CurrentVideos = new();
}
}
11 changes: 0 additions & 11 deletions FinTrack/Dtos/UserProfileDto.cs

This file was deleted.

25 changes: 25 additions & 0 deletions FinTrack/Enums/LanguageType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.ComponentModel;

namespace FinTrackForWindows.Enums
{
public enum LanguageType
{
[Description("Turkish")]
tr_TR,

[Description("English - US")]
en_US,

[Description("German")]
de_DE,

[Description("French")]
fr_FR,

[Description("Spanish")]
es_ES,

[Description("Italian")]
it_IT,
}
}
15 changes: 15 additions & 0 deletions FinTrack/FinTrackForWindows.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -195,4 +195,19 @@
<Folder Include="Styles\" />
</ItemGroup>

<ItemGroup>
<Compile Update="Localization\Strings.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Strings.resx</DependentUpon>
</Compile>
</ItemGroup>

<ItemGroup>
<EmbeddedResource Update="Localization\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>

</Project>
27 changes: 27 additions & 0 deletions FinTrack/Helpers/TranslateExtension.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System.Windows.Data;
using System.Windows.Markup;

namespace FinTrackForWindows.Helpers
{
[MarkupExtensionReturnType(typeof(string))]
public class TranslateExtension : MarkupExtension
{
public string Key { get; set; }

public TranslateExtension(string key)
{
Key = key;
}

public override object ProvideValue(IServiceProvider serviceProvider)
{
var binding = new Binding($"[{Key}]")
{
Source = TranslationManager.Instance,
Mode = BindingMode.OneWay
};

return binding.ProvideValue(serviceProvider);
}
}
}
93 changes: 93 additions & 0 deletions FinTrack/Helpers/TranslationManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
using FinTrackForWindows.Enums;
using FinTrackForWindows.Services.ApplySettings;
using FinTrackForWindows.Services.Users;
using System.ComponentModel;
using System.Globalization;
using System.Resources;

namespace FinTrackForWindows.Helpers
{
public class TranslationManager : INotifyPropertyChanged
{
private static readonly TranslationManager _instance = new TranslationManager();
public static TranslationManager Instance => _instance;

public event PropertyChangedEventHandler? PropertyChanged;

private readonly ResourceManager _resourceManager = new ResourceManager("FinTrackForWindows.Localization.Strings", typeof(TranslationManager).Assembly);

private CultureInfo _currentLanguage = CultureInfo.CurrentUICulture;

public CultureInfo CurrentLanguage
{
get => _currentLanguage;
private set
{
if (_currentLanguage.Name != value.Name)
{
_currentLanguage = value;
Thread.CurrentThread.CurrentUICulture = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(string.Empty));
}
}
}

private static IUserStore? _userStore;

public static void Initialize(IApplySettingsService settingsService, IUserStore userStore)
{
_userStore = userStore;
settingsService.SettingsChanged += OnSettingsChanged;

UpdateLanguageFromStore();
}

private static void OnSettingsChanged()
{
UpdateLanguageFromStore();
}

private static void UpdateLanguageFromStore()
{
if (_userStore?.CurrentUser == null) return;

var languageType = _userStore.CurrentUser.Language;
CultureInfo newCulture;

switch (languageType)
{
case LanguageType.tr_TR:
newCulture = new CultureInfo("tr-TR");
break;
case LanguageType.de_DE:
newCulture = new CultureInfo("de-DE");
break;
case LanguageType.fr_FR:
newCulture = new CultureInfo("fr-FR");
break;
case LanguageType.es_ES:
newCulture = new CultureInfo("es-ES");
break;
case LanguageType.it_IT:
newCulture = new CultureInfo("it-IT");
break;
case LanguageType.en_US:
newCulture = new CultureInfo("en-US");
break;
default:
newCulture = new CultureInfo("en-US");
break;
}

Instance.CurrentLanguage = newCulture;
}

public string GetString(string key)
{
string? result = _resourceManager.GetString(key, _currentLanguage);
return result ?? $"_{key}_";
}

public string this[string key] => GetString(key);
}
}
Loading
Loading