diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/gehGassiApp/gehGassiApp.Core/Services/CommunicationService.cs b/gehGassiApp/gehGassiApp.Core/Services/CommunicationService.cs index 10aebcb..c7cc88d 100644 --- a/gehGassiApp/gehGassiApp.Core/Services/CommunicationService.cs +++ b/gehGassiApp/gehGassiApp.Core/Services/CommunicationService.cs @@ -352,7 +352,7 @@ namespace gehGassiApp.Core.Services var json = JsonSerializer.Serialize(registerDto, _jsonOptions); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/v2/Account/Register", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v3/Account/Register", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { @@ -453,7 +453,7 @@ namespace gehGassiApp.Core.Services var json = JsonSerializer.Serialize(registerDto, _jsonOptions); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/v2/Account/RegisterExternal", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v3/Account/RegisterExternal", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { @@ -5952,7 +5952,7 @@ namespace gehGassiApp.Core.Services var json = JsonSerializer.Serialize(requestDto, _jsonOptions); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/walks/AcceptPublicWalkRequest", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v2/walks/AcceptPublicWalkRequest", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { @@ -7499,7 +7499,7 @@ namespace gehGassiApp.Core.Services var json = JsonSerializer.Serialize(requestDto, _jsonOptions); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/walks/CancelWalk", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v2/walks/CancelWalk", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { @@ -7688,7 +7688,7 @@ namespace gehGassiApp.Core.Services var json = JsonSerializer.Serialize(requestDto, _jsonOptions); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/walks/ConfirmWalk", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v2/walks/ConfirmWalk", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { @@ -7754,7 +7754,7 @@ namespace gehGassiApp.Core.Services var json = JsonSerializer.Serialize(requestDto, _jsonOptions); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/walks/ConfirmWalkWithRating", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v2/walks/ConfirmWalkWithRating", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { @@ -7953,7 +7953,7 @@ namespace gehGassiApp.Core.Services var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/walks/CreateWalkDirect", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v2/walks/CreateWalkDirect", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { @@ -8032,7 +8032,7 @@ namespace gehGassiApp.Core.Services var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/walks/CreateWalkRequest", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v2/walks/CreateWalkRequest", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { @@ -8106,7 +8106,7 @@ namespace gehGassiApp.Core.Services var json = JsonSerializer.Serialize(requestDto, _jsonOptions); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); - var serverResult = await _httpClient.PostAsync($"api/walks/AcceptWalk", stringContent, token).ConfigureAwait(false); + var serverResult = await _httpClient.PostAsync($"api/v2/walks/AcceptWalk", stringContent, token).ConfigureAwait(false); if (serverResult.IsSuccessStatusCode) { diff --git a/gehGassiApp/gehGassiApp.Data/Infos.txt b/gehGassiApp/gehGassiApp.Data/Infos.txt index 4234914..3fdd50f 100644 --- a/gehGassiApp/gehGassiApp.Data/Infos.txt +++ b/gehGassiApp/gehGassiApp.Data/Infos.txt @@ -1,6 +1,11 @@  migrations: +dotnet ef migrations add XXX --project gehGassiApp.Data --startup-project gehGassiApp.DbConfig + +dotnet ef database update --project gehGassiApp.Data --startup-project gehGassiApp.DbConfig + + add-migration xxx -Project gehGassiApp.Data -StartupProject gehGassiApp.DbConfig add-migration Initial -Project gehGassiApp.Data -StartupProject gehGassiApp.DbConfig diff --git a/gehGassiApp/gehGassiApp.Data/Migrations/20250706144607_Walk_PaymentType_Added.Designer.cs b/gehGassiApp/gehGassiApp.Data/Migrations/20250706144607_Walk_PaymentType_Added.Designer.cs new file mode 100644 index 0000000..34f1ac6 --- /dev/null +++ b/gehGassiApp/gehGassiApp.Data/Migrations/20250706144607_Walk_PaymentType_Added.Designer.cs @@ -0,0 +1,1793 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using gehGassiApp.Data; + +#nullable disable + +namespace gehGassiApp.Data.Migrations +{ + [DbContext(typeof(LocalDbContext))] + [Migration("20250706144607_Walk_PaymentType_Added")] + partial class Walk_PaymentType_Added + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.12"); + + modelBuilder.Entity("gehGassiApp.Domain.Common.Rating", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("FromId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("FromType") + .HasColumnType("INTEGER"); + + b.Property("Info") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Points") + .HasColumnType("TEXT"); + + b.Property("TargetId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("TargetType") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("Ratings"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Common.SyncInfoPull", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("LastUpdate") + .HasColumnType("INTEGER"); + + b.Property("Table") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("SyncInfosPull"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Common.SyncInfoPush", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DateTime") + .HasColumnType("INTEGER"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.Property("Operation") + .HasColumnType("INTEGER"); + + b.Property("Table") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.Property("Value") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("SyncInfosPush"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Dogs.Dog", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("AggressionLevel") + .HasColumnType("INTEGER"); + + b.Property("AppUserId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("BasicCommands") + .HasColumnType("INTEGER"); + + b.Property("BirthDate") + .HasColumnType("INTEGER"); + + b.Property("Chiped") + .HasColumnType("INTEGER"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("Description") + .HasMaxLength(5000) + .HasColumnType("TEXT"); + + b.Property("DogRaceId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Eating") + .HasColumnType("INTEGER"); + + b.Property("FeedingIndividual") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("FeedingTimes") + .HasColumnType("INTEGER"); + + b.Property("HouseTrained") + .HasColumnType("INTEGER"); + + b.Property("Hunter") + .HasColumnType("INTEGER"); + + b.Property("Intolerances") + .HasMaxLength(5000) + .HasColumnType("TEXT"); + + b.Property("IsAggressiv") + .HasColumnType("INTEGER"); + + b.Property("IsCalm") + .HasColumnType("INTEGER"); + + b.Property("IsGuard") + .HasColumnType("INTEGER"); + + b.Property("IsLoneGunner") + .HasColumnType("INTEGER"); + + b.Property("IsPeeing") + .HasColumnType("INTEGER"); + + b.Property("IsShy") + .HasColumnType("INTEGER"); + + b.Property("IsTrustful") + .HasColumnType("INTEGER"); + + b.Property("Jumper") + .HasColumnType("INTEGER"); + + b.Property("LikesAdults") + .HasColumnType("INTEGER"); + + b.Property("LikesChildren") + .HasColumnType("INTEGER"); + + b.Property("LikesConspecifics") + .HasColumnType("INTEGER"); + + b.Property("MedicalInfo") + .HasMaxLength(5000) + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.Property("Number") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.Property("Photo") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("PullsTheLeash") + .HasColumnType("INTEGER"); + + b.Property("RushesOutside") + .HasColumnType("INTEGER"); + + b.Property("Sex") + .HasColumnType("INTEGER"); + + b.Property("Size") + .HasColumnType("INTEGER"); + + b.Property("Sterilized") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.Property("WalksTheLeash") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("DogRaceId"); + + b.ToTable("Dogs"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Dogs.DogRace", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Age") + .HasMaxLength(1000) + .HasColumnType("TEXT"); + + b.Property("Care") + .HasMaxLength(1000) + .HasColumnType("TEXT"); + + b.Property("Coexistence") + .HasMaxLength(1000) + .HasColumnType("TEXT"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Decision") + .HasMaxLength(2000) + .HasColumnType("TEXT"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("Description") + .HasMaxLength(5000) + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.Property("Personality") + .HasMaxLength(2000) + .HasColumnType("TEXT"); + + b.Property("Photo") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("SizeAndWeight") + .HasMaxLength(1000) + .HasColumnType("TEXT"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("DogRaces"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Favourites.Favourite", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("AppUserId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Table") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("Favourites"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Messages.Conversation", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Created") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "created"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("HasUnreadMessages") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "hasUnreadMessages"); + + b.Property("LastMessageId") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "lastMessageId"); + + b.Property("LastMessagePreview") + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "lastMessagePreview"); + + b.Property("ReceipientType") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "receipientType"); + + b.Property("Recipient") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "recipient"); + + b.Property("RecipientName") + .HasMaxLength(300) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "recipientName"); + + b.Property("RecipientPhoto") + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "recipientPhoto"); + + b.Property("RecipientShort") + .HasMaxLength(2) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "recipientShort"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("Conversations"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Messages.Message", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Content") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("ConversationId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("Direction") + .HasColumnType("INTEGER"); + + b.Property("Read") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.HasIndex("ConversationId"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Messages.SystemMessage", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("AppUserId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("AppUserType") + .HasColumnType("INTEGER"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("Expires") + .HasColumnType("INTEGER"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Message") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Read") + .HasColumnType("INTEGER"); + + b.Property("ReadDate") + .HasColumnType("INTEGER"); + + b.Property("Table") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("SystemMessages"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.News.NewsCategory", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("Description") + .HasColumnType("TEXT"); + + b.Property("Image") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("ImageLanguage") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Language") + .IsRequired() + .HasMaxLength(2) + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("TEXT"); + + b.Property("OnlineStatus") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("NewsCategories"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Payment.Payout", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Ammount") + .HasColumnType("INTEGER"); + + b.Property("AppUserId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Bic") + .HasMaxLength(4) + .HasColumnType("TEXT"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Currency") + .IsRequired() + .HasMaxLength(3) + .HasColumnType("TEXT"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("ExecutionDate") + .HasColumnType("INTEGER"); + + b.Property("Iban") + .IsRequired() + .HasMaxLength(4) + .HasColumnType("TEXT"); + + b.Property("MangoPayBankId") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("MangoPayId") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("MangoPayUserId") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("MangoPayWalletId") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("RefundReasonMessage") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("RefundReasonType") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("Refunded") + .HasColumnType("INTEGER"); + + b.Property("ResultCode") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("ResultMessage") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.Property("WalletId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Payouts"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Payment.TransactionFee", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("Fixed") + .HasColumnType("TEXT"); + + b.Property("PayInType") + .HasColumnType("INTEGER"); + + b.Property("Percent") + .HasColumnType("TEXT"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("TransactionFees"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Users.AppUser", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("AutoPayout") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "autoPayout"); + + b.Property("BankId") + .HasMaxLength(255) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "bankId"); + + b.Property("BirthDate") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "birthDate"); + + b.Property("Created") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "created"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "firstName"); + + b.Property("KycPassed") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "kycPassed"); + + b.Property("KycPassedDate") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "kycPassedDate"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "lastName"); + + b.Property("Lat") + .HasColumnType("REAL") + .HasAnnotation("Relational:JsonPropertyName", "lat"); + + b.Property("Lng") + .HasColumnType("REAL") + .HasAnnotation("Relational:JsonPropertyName", "lng"); + + b.Property("Locked") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "locked"); + + b.Property("LockedUntil") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "lockedUntil"); + + b.Property("MainResidenceCode") + .HasMaxLength(2) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "mainResidenceCode"); + + b.Property("NationalityCode") + .HasMaxLength(2) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "nationalityCode"); + + b.Property("PaymentId") + .HasMaxLength(255) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "paymentId"); + + b.Property("PaymentTermsAccepted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "paymentTermsAccepted"); + + b.Property("PaymentTermsAcceptedDate") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "paymentTermsAcceptedDate"); + + b.Property("Photo") + .HasMaxLength(500) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "photo"); + + b.Property("PrivacyAccepted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "privacyAccepted"); + + b.Property("PrivacyAcceptedDate") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "privacyAcceptedDate"); + + b.Property("Sex") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "sex"); + + b.Property("TermsAccepted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "termsAccepted"); + + b.Property("TermsAcceptedDate") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "termsAcceptedDate"); + + b.Property("Title") + .HasMaxLength(50) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "title"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "type"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Verified") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "verified"); + + b.Property("VerifiedDate") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "verifiedDate"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("AppUsers"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Users.DogWalkerProfile", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("About") + .HasMaxLength(300) + .HasColumnType("TEXT"); + + b.Property("AcceptedSize") + .HasColumnType("INTEGER"); + + b.Property("AggressionLevel") + .HasColumnType("INTEGER"); + + b.Property("AllowedRequests") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("DifficultAllowed") + .HasColumnType("INTEGER"); + + b.Property("NotAvailable") + .HasColumnType("INTEGER"); + + b.Property("NotAvailableInfo") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("PriceDay") + .HasColumnType("TEXT"); + + b.Property("PriceSitting") + .HasColumnType("TEXT"); + + b.Property("PriceWalk") + .HasColumnType("TEXT"); + + b.Property("PuppyAllowed") + .HasColumnType("INTEGER"); + + b.Property("Radius") + .HasColumnType("REAL"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("DogWalkerProfiles"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Users.User", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("AccessTokenExpires") + .HasColumnType("INTEGER"); + + b.Property("AppUserId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("TEXT"); + + b.Property("LastLoginDate") + .HasColumnType("INTEGER"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("TEXT"); + + b.Property("Photo") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("RefreshTokenExpires") + .HasColumnType("INTEGER"); + + b.Property("RegistrationDate") + .HasColumnType("INTEGER"); + + b.Property("Roles") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Walkers.WalkingTime", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Day") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("DogWalkerId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Enabled") + .HasColumnType("INTEGER"); + + b.Property("End") + .HasColumnType("INTEGER"); + + b.Property("Start") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("WalkingTimes"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Walks.PublicWalkRequest", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("DogCount") + .HasColumnType("INTEGER"); + + b.Property("DogId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("DogOwnerId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("DogWalkerId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("DogsJson") + .HasColumnType("TEXT"); + + b.Property("EndDate") + .HasColumnType("INTEGER"); + + b.Property("Exclusive") + .HasColumnType("INTEGER"); + + b.Property("ExpirationDate") + .HasColumnType("INTEGER"); + + b.Property("Info") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Lat") + .HasColumnType("REAL") + .HasAnnotation("Relational:JsonPropertyName", "lat"); + + b.Property("Lng") + .HasColumnType("REAL") + .HasAnnotation("Relational:JsonPropertyName", "lng"); + + b.Property("PlacedDate") + .HasColumnType("INTEGER"); + + b.Property("Price") + .HasColumnType("TEXT"); + + b.Property("PublicWalkResponseId") + .HasColumnType("TEXT"); + + b.Property("RequestType") + .HasColumnType("INTEGER"); + + b.Property("ResponseCount") + .HasColumnType("INTEGER"); + + b.Property("StartDate") + .HasColumnType("INTEGER"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("PublicWalkRequests"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Walks.PublicWalkRequestWithNames", b => + { + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER"); + + b.Property("DogCount") + .HasColumnType("INTEGER"); + + b.Property("DogId") + .HasColumnType("TEXT"); + + b.Property("DogName") + .HasColumnType("TEXT"); + + b.Property("DogOwnerId") + .HasColumnType("TEXT"); + + b.Property("DogPhoto") + .HasColumnType("TEXT"); + + b.Property("DogWalkerId") + .HasColumnType("TEXT"); + + b.Property("DogsJson") + .HasColumnType("TEXT"); + + b.Property("EndDate") + .HasColumnType("INTEGER"); + + b.Property("Exclusive") + .HasColumnType("INTEGER"); + + b.Property("ExpirationDate") + .HasColumnType("INTEGER"); + + b.Property("Id") + .HasColumnType("TEXT"); + + b.Property("Info") + .HasColumnType("TEXT"); + + b.Property("Lat") + .HasColumnType("REAL"); + + b.Property("Lng") + .HasColumnType("REAL"); + + b.Property("PickupAddress_AddressLine1") + .HasColumnType("TEXT"); + + b.Property("PickupAddress_AddressLine2") + .HasColumnType("TEXT"); + + b.Property("PickupAddress_City") + .HasColumnType("TEXT"); + + b.Property("PickupAddress_CountryCode") + .HasColumnType("TEXT"); + + b.Property("PickupAddress_State") + .HasColumnType("TEXT"); + + b.Property("PickupAddress_Zip") + .HasColumnType("TEXT"); + + b.Property("PlacedDate") + .HasColumnType("INTEGER"); + + b.Property("Price") + .HasColumnType("TEXT"); + + b.Property("PublicWalkResponseId") + .HasColumnType("TEXT"); + + b.Property("RequestType") + .HasColumnType("INTEGER"); + + b.Property("ResponseCount") + .HasColumnType("INTEGER"); + + b.Property("StartDate") + .HasColumnType("INTEGER"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER"); + + b.Property("Version") + .HasColumnType("BLOB"); + + b.ToTable((string)null); + + b.ToView("vw_PublicWalkRequestWithNames", (string)null); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Walks.PublicWalkResponse", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("Answer") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("CancellationReason") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("DogWalkerId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Info") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Price") + .HasColumnType("TEXT"); + + b.Property("PublicWalkRequestId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("PublicWalkResponses"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Walks.Walk", b => + { + b.Property("Id") + .HasMaxLength(128) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "id"); + + b.Property("CancelledBy") + .HasColumnType("INTEGER"); + + b.Property("CancelledReason") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("ComplainReason") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Complained") + .HasColumnType("INTEGER"); + + b.Property("Completed") + .HasColumnType("INTEGER"); + + b.Property("CompletedInfo") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Confirmed") + .HasColumnType("INTEGER"); + + b.Property("Created") + .HasColumnType("INTEGER"); + + b.Property("DeclinedReason") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("Defactation") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "deleted"); + + b.Property("DogCount") + .HasColumnType("INTEGER"); + + b.Property("DogOwnerId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("DogWalkerId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("DogsJson") + .HasColumnType("TEXT"); + + b.Property("End") + .HasColumnType("INTEGER"); + + b.Property("Info") + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("PaymentStatus") + .HasColumnType("INTEGER"); + + b.Property("PaymentType") + .HasColumnType("INTEGER"); + + b.Property("PickupAddressLat") + .HasColumnType("REAL"); + + b.Property("PickupAddressLng") + .HasColumnType("REAL"); + + b.Property("Price") + .HasColumnType("TEXT"); + + b.Property("PublicWalkRequestId") + .HasMaxLength(128) + .HasColumnType("TEXT"); + + b.Property("ReturnAddressLat") + .HasColumnType("REAL"); + + b.Property("ReturnAddressLng") + .HasColumnType("REAL"); + + b.Property("ServiceType") + .HasColumnType("INTEGER"); + + b.Property("Start") + .HasColumnType("INTEGER"); + + b.Property("Started") + .HasColumnType("INTEGER"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("INTEGER") + .HasAnnotation("Relational:JsonPropertyName", "updatedAt"); + + b.Property("Version") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("BLOB") + .HasAnnotation("Relational:JsonPropertyName", "version"); + + b.HasKey("Id"); + + b.ToTable("Walks"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Dogs.Dog", b => + { + b.HasOne("gehGassiApp.Domain.Dogs.DogRace", null) + .WithMany() + .HasForeignKey("DogRaceId"); + + b.OwnsOne("gehGassiApp.Domain.Common.RatingStatistics", "RatingStatistics", b1 => + { + b1.Property("DogId") + .HasColumnType("TEXT"); + + b1.Property("AverageRating") + .HasColumnType("TEXT"); + + b1.Property("TotalPoints") + .HasColumnType("TEXT"); + + b1.Property("TotalRatings") + .HasColumnType("INTEGER"); + + b1.HasKey("DogId"); + + b1.ToTable("Dogs"); + + b1.WithOwner() + .HasForeignKey("DogId"); + }); + + b.Navigation("RatingStatistics"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Messages.Message", b => + { + b.HasOne("gehGassiApp.Domain.Messages.Conversation", null) + .WithMany() + .HasForeignKey("ConversationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Users.AppUser", b => + { + b.OwnsOne("gehGassiApp.Domain.Common.ContactMin", "Contact", b1 => + { + b1.Property("AppUserId") + .HasColumnType("TEXT"); + + b1.Property("Email") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "email"); + + b1.Property("Mobile") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "mobile"); + + b1.Property("Phone") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "phone"); + + b1.HasKey("AppUserId"); + + b1.ToTable("AppUsers"); + + b1.HasAnnotation("Relational:JsonPropertyName", "contact"); + + b1.WithOwner() + .HasForeignKey("AppUserId"); + }); + + b.OwnsOne("gehGassiApp.Domain.Common.SocialMedia", "SocialMedia", b1 => + { + b1.Property("AppUserId") + .HasColumnType("TEXT"); + + b1.Property("Blog") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("Facebook") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("Instagram") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("LinkedIn") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("Pinterest") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("Reddit") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("Show") + .HasColumnType("INTEGER"); + + b1.Property("SnapChat") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("TikTok") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("Twitter") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("Vimeo") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("Xing") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.Property("YouTube") + .HasMaxLength(255) + .HasColumnType("TEXT"); + + b1.HasKey("AppUserId"); + + b1.ToTable("AppUsers"); + + b1.HasAnnotation("Relational:JsonPropertyName", "socialMedia"); + + b1.WithOwner() + .HasForeignKey("AppUserId"); + }); + + b.OwnsOne("gehGassiApp.Domain.Common.Address", "Address", b1 => + { + b1.Property("AppUserId") + .HasColumnType("TEXT"); + + b1.Property("AddressLine1") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "addressLine1"); + + b1.Property("AddressLine2") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "addressLine2"); + + b1.Property("City") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "city"); + + b1.Property("CountryCode") + .IsRequired() + .HasMaxLength(2) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "countryCode"); + + b1.Property("State") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "state"); + + b1.Property("Zip") + .HasMaxLength(20) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "zip"); + + b1.HasKey("AppUserId"); + + b1.ToTable("AppUsers"); + + b1.HasAnnotation("Relational:JsonPropertyName", "address"); + + b1.WithOwner() + .HasForeignKey("AppUserId"); + }); + + b.OwnsOne("gehGassiApp.Domain.Common.RatingStatistics", "RatingStatistics", b1 => + { + b1.Property("AppUserId") + .HasColumnType("TEXT"); + + b1.Property("AverageRating") + .HasColumnType("TEXT"); + + b1.Property("TotalPoints") + .HasColumnType("TEXT"); + + b1.Property("TotalRatings") + .HasColumnType("INTEGER"); + + b1.HasKey("AppUserId"); + + b1.ToTable("AppUsers"); + + b1.HasAnnotation("Relational:JsonPropertyName", "ratingStatistics"); + + b1.WithOwner() + .HasForeignKey("AppUserId"); + }); + + b.OwnsOne("gehGassiApp.Domain.Common.RatingStatistics", "RatingStatisticsWalker", b1 => + { + b1.Property("AppUserId") + .HasColumnType("TEXT"); + + b1.Property("AverageRating") + .HasColumnType("TEXT"); + + b1.Property("TotalPoints") + .HasColumnType("TEXT"); + + b1.Property("TotalRatings") + .HasColumnType("INTEGER"); + + b1.HasKey("AppUserId"); + + b1.ToTable("AppUsers"); + + b1.HasAnnotation("Relational:JsonPropertyName", "ratingStatisticsWalker"); + + b1.WithOwner() + .HasForeignKey("AppUserId"); + }); + + b.Navigation("Address"); + + b.Navigation("Contact"); + + b.Navigation("RatingStatistics"); + + b.Navigation("RatingStatisticsWalker"); + + b.Navigation("SocialMedia"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Walks.PublicWalkRequest", b => + { + b.OwnsOne("gehGassiApp.Domain.Common.Address", "PickupAddress", b1 => + { + b1.Property("PublicWalkRequestId") + .HasColumnType("TEXT"); + + b1.Property("AddressLine1") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "addressLine1"); + + b1.Property("AddressLine2") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "addressLine2"); + + b1.Property("City") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "city"); + + b1.Property("CountryCode") + .IsRequired() + .HasMaxLength(2) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "countryCode"); + + b1.Property("State") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "state"); + + b1.Property("Zip") + .HasMaxLength(20) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "zip"); + + b1.HasKey("PublicWalkRequestId"); + + b1.ToTable("PublicWalkRequests"); + + b1.WithOwner() + .HasForeignKey("PublicWalkRequestId"); + }); + + b.Navigation("PickupAddress"); + }); + + modelBuilder.Entity("gehGassiApp.Domain.Walks.Walk", b => + { + b.OwnsOne("gehGassiApp.Domain.Common.Address", "PickupAddress", b1 => + { + b1.Property("WalkId") + .HasColumnType("TEXT"); + + b1.Property("AddressLine1") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "addressLine1"); + + b1.Property("AddressLine2") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "addressLine2"); + + b1.Property("City") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "city"); + + b1.Property("CountryCode") + .IsRequired() + .HasMaxLength(2) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "countryCode"); + + b1.Property("State") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "state"); + + b1.Property("Zip") + .HasMaxLength(20) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "zip"); + + b1.HasKey("WalkId"); + + b1.ToTable("Walks"); + + b1.WithOwner() + .HasForeignKey("WalkId"); + }); + + b.OwnsOne("gehGassiApp.Domain.Common.Address", "ReturnAddress", b1 => + { + b1.Property("WalkId") + .HasColumnType("TEXT"); + + b1.Property("AddressLine1") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "addressLine1"); + + b1.Property("AddressLine2") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "addressLine2"); + + b1.Property("City") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "city"); + + b1.Property("CountryCode") + .IsRequired() + .HasMaxLength(2) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "countryCode"); + + b1.Property("State") + .HasMaxLength(100) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "state"); + + b1.Property("Zip") + .HasMaxLength(20) + .HasColumnType("TEXT") + .HasAnnotation("Relational:JsonPropertyName", "zip"); + + b1.HasKey("WalkId"); + + b1.ToTable("Walks"); + + b1.WithOwner() + .HasForeignKey("WalkId"); + }); + + b.Navigation("PickupAddress"); + + b.Navigation("ReturnAddress"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/gehGassiApp/gehGassiApp.Data/Migrations/20250706144607_Walk_PaymentType_Added.cs b/gehGassiApp/gehGassiApp.Data/Migrations/20250706144607_Walk_PaymentType_Added.cs new file mode 100644 index 0000000..e8ca947 --- /dev/null +++ b/gehGassiApp/gehGassiApp.Data/Migrations/20250706144607_Walk_PaymentType_Added.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace gehGassiApp.Data.Migrations +{ + /// + public partial class Walk_PaymentType_Added : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "PaymentType", + table: "Walks", + type: "INTEGER", + nullable: false, + defaultValue: 0); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "PaymentType", + table: "Walks"); + } + } +} diff --git a/gehGassiApp/gehGassiApp.Data/Migrations/LocalDbContextModelSnapshot.cs b/gehGassiApp/gehGassiApp.Data/Migrations/LocalDbContextModelSnapshot.cs index 3f3be2c..f7ac548 100644 --- a/gehGassiApp/gehGassiApp.Data/Migrations/LocalDbContextModelSnapshot.cs +++ b/gehGassiApp/gehGassiApp.Data/Migrations/LocalDbContextModelSnapshot.cs @@ -15,7 +15,7 @@ namespace gehGassiApp.Data.Migrations protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "7.0.2"); + modelBuilder.HasAnnotation("ProductVersion", "8.0.12"); modelBuilder.Entity("gehGassiApp.Domain.Common.Rating", b => { @@ -1345,6 +1345,9 @@ namespace gehGassiApp.Data.Migrations b.Property("PaymentStatus") .HasColumnType("INTEGER"); + b.Property("PaymentType") + .HasColumnType("INTEGER"); + b.Property("PickupAddressLat") .HasColumnType("REAL"); diff --git a/gehGassiApp/gehGassiApp.DbConfig/Config.db b/gehGassiApp/gehGassiApp.DbConfig/Config.db index a19d0a6..5545764 100644 Binary files a/gehGassiApp/gehGassiApp.DbConfig/Config.db and b/gehGassiApp/gehGassiApp.DbConfig/Config.db differ diff --git a/gehGassiApp/gehGassiApp.Domain/Common/Enums.cs b/gehGassiApp/gehGassiApp.Domain/Common/Enums.cs index 6742872..5cb4628 100644 --- a/gehGassiApp/gehGassiApp.Domain/Common/Enums.cs +++ b/gehGassiApp/gehGassiApp.Domain/Common/Enums.cs @@ -130,7 +130,20 @@ namespace gehGassiApp.Domain.Common /// GehGassi = 10 } - + /// + /// Zahlungsart für einen Walk + /// + public enum WalkPaymentType + { + /// + /// Mit MangoPay bezahlen (z.B. Kreditkarte) + /// + MangoPay = 1, + /// + /// Barzahlung + /// + Cash = 10 + } /// /// Zahlungsstatus in der App /// diff --git a/gehGassiApp/gehGassiApp.Domain/Walks/Walk.cs b/gehGassiApp/gehGassiApp.Domain/Walks/Walk.cs index ba12ac6..441caa3 100644 --- a/gehGassiApp/gehGassiApp.Domain/Walks/Walk.cs +++ b/gehGassiApp/gehGassiApp.Domain/Walks/Walk.cs @@ -176,7 +176,11 @@ namespace gehGassiApp.Domain.Walks /// [Required] public PaymentStatus PaymentStatus { get; set; } - + /// + /// Welche Art von Bezahlung wurde verwendet + /// + [Required] + public WalkPaymentType PaymentType { get; set; } /// /// Datum der Erstellung des Walks /// @@ -437,7 +441,11 @@ namespace gehGassiApp.Domain.Walks /// Zahlungsstatus des Walks /// public PaymentStatus PaymentStatus { get; set; } - + /// + /// Welche Art von Bezahlung wurde verwendet + /// + [Required] + public WalkPaymentType PaymentType { get; set; } /// /// Id des Gutscheins der verwendet wurde, wenn einer verwendet wurde /// diff --git a/gehGassiApp/gehGassiApp/Controls/Register/Step2ExternalControl.xaml b/gehGassiApp/gehGassiApp/Controls/Register/Step2ExternalControl.xaml index 3462582..c5ef271 100644 --- a/gehGassiApp/gehGassiApp/Controls/Register/Step2ExternalControl.xaml +++ b/gehGassiApp/gehGassiApp/Controls/Register/Step2ExternalControl.xaml @@ -150,7 +150,7 @@ - - + --> diff --git a/gehGassiApp/gehGassiApp/Controls/Register/Step3Control.xaml b/gehGassiApp/gehGassiApp/Controls/Register/Step3Control.xaml index 937af60..c709204 100644 --- a/gehGassiApp/gehGassiApp/Controls/Register/Step3Control.xaml +++ b/gehGassiApp/gehGassiApp/Controls/Register/Step3Control.xaml @@ -117,7 +117,7 @@ - - + --> diff --git a/gehGassiApp/gehGassiApp/MauiProgram.cs b/gehGassiApp/gehGassiApp/MauiProgram.cs index 2817271..27eb2c2 100644 --- a/gehGassiApp/gehGassiApp/MauiProgram.cs +++ b/gehGassiApp/gehGassiApp/MauiProgram.cs @@ -103,7 +103,7 @@ public static class MauiProgram fonts.AddFont("Inter-Medium.ttf", "InterMedium"); fonts.AddFont("Inter-SemiBold.ttf", "InterSemiBold"); fonts.AddFont("icomoon.ttf", "IconMoon"); - fonts.AddFont("MaterialIcons-Regular.ttf", "IconFont"); + fonts.AddFont("MaterialIcons-Regular.ttf", "MaterialIconsRegular"); }).UseLocalNotifications() .ConfigureMauiHandlers((handlers) => { diff --git a/gehGassiApp/gehGassiApp/Platforms/iOS/Info.plist b/gehGassiApp/gehGassiApp/Platforms/iOS/Info.plist index df41ee8..e4985ae 100644 --- a/gehGassiApp/gehGassiApp/Platforms/iOS/Info.plist +++ b/gehGassiApp/gehGassiApp/Platforms/iOS/Info.plist @@ -27,8 +27,6 @@ Assets.xcassets/appicon.appiconset CFBundleIdentifier - CFBundleShortVersionString - 1.274 NSAppTransportSecurity NSAllowsArbitraryLoads @@ -69,7 +67,7 @@ remote-notification - CFBundleVersion - 274 + CFBundleIdentifier + diff --git a/gehGassiApp/gehGassiApp/Resources/Templates/ControlTemplates.xaml b/gehGassiApp/gehGassiApp/Resources/Templates/ControlTemplates.xaml index be172fe..6de3e13 100644 --- a/gehGassiApp/gehGassiApp/Resources/Templates/ControlTemplates.xaml +++ b/gehGassiApp/gehGassiApp/Resources/Templates/ControlTemplates.xaml @@ -184,7 +184,7 @@ @@ -217,7 +217,7 @@ @@ -505,7 +505,7 @@ Background="Transparent" Command="{TemplateBinding BindingContext.NavigateBackCommand}" FontAttributes="Bold" - FontFamily="IconFont" + FontFamily="MaterialIconsRegular" FontSize="40" HorizontalOptions="End" Text="close" diff --git a/gehGassiApp/gehGassiApp/ViewModels/Account/RegisterViewModel.cs b/gehGassiApp/gehGassiApp/ViewModels/Account/RegisterViewModel.cs index 25046a5..c98e476 100644 --- a/gehGassiApp/gehGassiApp/ViewModels/Account/RegisterViewModel.cs +++ b/gehGassiApp/gehGassiApp/ViewModels/Account/RegisterViewModel.cs @@ -203,7 +203,9 @@ namespace gehGassiApp.ViewModels.Account if (AppUserType == AppUserType.DogOwner) return true; - if (AcceptedTermsMangopay && SelectedNationality != null && SelectedMainResidence != null) + // if (AcceptedTermsMangopay && SelectedNationality != null && SelectedMainResidence != null) + // return true; + if (SelectedNationality != null && SelectedMainResidence != null) return true; return false; diff --git a/gehGassiApp/gehGassiApp/ViewModels/More/AddPaymentUserViewModel.cs b/gehGassiApp/gehGassiApp/ViewModels/More/AddPaymentUserViewModel.cs index 702329a..7ee040e 100644 --- a/gehGassiApp/gehGassiApp/ViewModels/More/AddPaymentUserViewModel.cs +++ b/gehGassiApp/gehGassiApp/ViewModels/More/AddPaymentUserViewModel.cs @@ -81,7 +81,7 @@ namespace gehGassiApp.ViewModels.More /// Hat der Benutzer die MangoPay-AGB akzeptiert? /// [ObservableProperty] - private bool _acceptedTermsMangopay; + private bool _acceptedTermsMangopay = true; #region Commands @@ -177,7 +177,7 @@ namespace gehGassiApp.ViewModels.More { SelectedNationality = null; SelectedMainResidence = null; - AcceptedTermsMangopay = false; + AcceptedTermsMangopay = true; IsBusy = true; await Task.Delay(Core.Common.Constants.AnimationDelayDetails); diff --git a/gehGassiApp/gehGassiApp/ViewModels/More/BecomeWalkerViewmodel.cs b/gehGassiApp/gehGassiApp/ViewModels/More/BecomeWalkerViewmodel.cs index 5cd4335..cb7d7fc 100644 --- a/gehGassiApp/gehGassiApp/ViewModels/More/BecomeWalkerViewmodel.cs +++ b/gehGassiApp/gehGassiApp/ViewModels/More/BecomeWalkerViewmodel.cs @@ -91,7 +91,7 @@ namespace gehGassiApp.ViewModels.More /// Hat der Benutzer die MangoPay-AGB akzeptiert? /// [ObservableProperty] - private bool _acceptedTermsMangopay; + private bool _acceptedTermsMangopay = true; #region Commands @@ -193,7 +193,7 @@ namespace gehGassiApp.ViewModels.More { SelectedNationality = null; SelectedMainResidence = null; - AcceptedTermsMangopay = false; + AcceptedTermsMangopay = true; IsBusy = true; await Task.Delay(Core.Common.Constants.AnimationDelayDetails); diff --git a/gehGassiApp/gehGassiApp/ViewModels/Popups/PaymentInfoPopupViewModel.cs b/gehGassiApp/gehGassiApp/ViewModels/Popups/PaymentInfoPopupViewModel.cs new file mode 100644 index 0000000..1efd047 --- /dev/null +++ b/gehGassiApp/gehGassiApp/ViewModels/Popups/PaymentInfoPopupViewModel.cs @@ -0,0 +1,57 @@ +using CommunityToolkit.Maui.Views; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; + +namespace gehGassiApp.ViewModels.Popups +{ + /// + /// ViewModel für das Zahlungshinweis-Popup + /// + /// Verwendung: + /// // Prüfen ob bereits angezeigt + /// if (!PaymentInfoPopupViewModel.HasInfoBeenShown()) + /// { + /// var popup = new PaymentInfoPopup(); + /// await Shell.Current.CurrentPage.ShowPopupAsync(popup); + /// } + /// + public partial class PaymentInfoPopupViewModel : ObservableObject + { + private readonly Popup _popup; + private const string PAYMENT_INFO_SHOWN_KEY = "payment_info_july_shown_2025"; + + public PaymentInfoPopupViewModel(Popup popup) + { + _popup = popup; + } + + /// + /// Prüft, ob der Zahlungshinweis bereits angezeigt wurde + /// + public static bool HasInfoBeenShown() + { + return Preferences.Get(PAYMENT_INFO_SHOWN_KEY, false); + } + + /// + /// Markiert den Hinweis als angezeigt + /// + private static void MarkInfoAsShown() + { + Preferences.Set(PAYMENT_INFO_SHOWN_KEY, true); + } + + /// + /// User hat den Hinweis zur Kenntnis genommen + /// + [RelayCommand] + private async Task Acknowledge() + { + // Hinweis als angezeigt markieren + MarkInfoAsShown(); + + // Popup schließen + await _popup.CloseAsync(true); + } + } +} diff --git a/gehGassiApp/gehGassiApp/Views/Account/LoginFormView.xaml b/gehGassiApp/gehGassiApp/Views/Account/LoginFormView.xaml index 99494b8..753c6c1 100644 --- a/gehGassiApp/gehGassiApp/Views/Account/LoginFormView.xaml +++ b/gehGassiApp/gehGassiApp/Views/Account/LoginFormView.xaml @@ -35,6 +35,7 @@ @@ -48,6 +49,7 @@ diff --git a/gehGassiApp/gehGassiApp/Views/Dogs/DogUpdateView.xaml b/gehGassiApp/gehGassiApp/Views/Dogs/DogUpdateView.xaml index 4f17e7c..ef051c1 100644 --- a/gehGassiApp/gehGassiApp/Views/Dogs/DogUpdateView.xaml +++ b/gehGassiApp/gehGassiApp/Views/Dogs/DogUpdateView.xaml @@ -76,7 +76,7 @@ WidthRequest="40"> diff --git a/gehGassiApp/gehGassiApp/Views/More/AddPaymentUserView.xaml b/gehGassiApp/gehGassiApp/Views/More/AddPaymentUserView.xaml index d7124d1..15c22c2 100644 --- a/gehGassiApp/gehGassiApp/Views/More/AddPaymentUserView.xaml +++ b/gehGassiApp/gehGassiApp/Views/More/AddPaymentUserView.xaml @@ -64,7 +64,7 @@ ItemsSource="{Binding MainResidences}" SelectedItem="{Binding SelectedMainResidence}" /> - @@ -83,7 +83,7 @@ HorizontalOptions="End" IsToggled="{Binding AcceptedTermsMangopay}" VerticalOptions="Center" /> - + --> - - + - + diff --git a/gehGassiApp/gehGassiApp/Views/More/MoreWalkerView.xaml b/gehGassiApp/gehGassiApp/Views/More/MoreWalkerView.xaml index cfaebd6..323903a 100644 --- a/gehGassiApp/gehGassiApp/Views/More/MoreWalkerView.xaml +++ b/gehGassiApp/gehGassiApp/Views/More/MoreWalkerView.xaml @@ -441,7 +441,7 @@ - + - + - + diff --git a/gehGassiApp/gehGassiApp/Views/Onboarding/OnboardingView.xaml b/gehGassiApp/gehGassiApp/Views/Onboarding/OnboardingView.xaml index e1545a1..dd06eef 100644 --- a/gehGassiApp/gehGassiApp/Views/Onboarding/OnboardingView.xaml +++ b/gehGassiApp/gehGassiApp/Views/Onboarding/OnboardingView.xaml @@ -136,7 +136,7 @@ BorderWidth="1" Command="{Binding PreviousStepCommand}" CornerRadius="30" - FontFamily="IconFont" + FontFamily="MaterialIconsRegular" FontSize="40" HeightRequest="60" HorizontalOptions="Start" @@ -158,7 +158,7 @@ BorderWidth="1" Command="{Binding NextStepCommand}" CornerRadius="30" - FontFamily="IconFont" + FontFamily="MaterialIconsRegular" FontSize="40" HeightRequest="60" HorizontalOptions="End" diff --git a/gehGassiApp/gehGassiApp/Views/Popups/PaymentInfoPopup.xaml b/gehGassiApp/gehGassiApp/Views/Popups/PaymentInfoPopup.xaml new file mode 100644 index 0000000..fe318b5 --- /dev/null +++ b/gehGassiApp/gehGassiApp/Views/Popups/PaymentInfoPopup.xaml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + +