diff --git a/api/src/Feature.PollingStation.Visits/ListMy/Endpoint.cs b/api/src/Feature.PollingStation.Visits/ListMy/Endpoint.cs index 5a869501f..a2b74fb3c 100644 --- a/api/src/Feature.PollingStation.Visits/ListMy/Endpoint.cs +++ b/api/src/Feature.PollingStation.Visits/ListMy/Endpoint.cs @@ -37,6 +37,8 @@ public override async Task, NotFound>> ExecuteAsync(Request PS."Level5", PS."Address", PS."Number", + PS."Latitude", + PS."Longitude", T."MonitoringObserverId", MAX(T."LatestTimestamp") "VisitedAt" FROM diff --git a/api/src/Feature.PollingStation.Visits/VisitModel.cs b/api/src/Feature.PollingStation.Visits/VisitModel.cs index d8ce7f38d..451c6bfab 100644 --- a/api/src/Feature.PollingStation.Visits/VisitModel.cs +++ b/api/src/Feature.PollingStation.Visits/VisitModel.cs @@ -12,4 +12,6 @@ public record VisitModel public string Level5 { get; set; } public string Address { get; set; } public string Number { get; set; } + public decimal? Latitude { get; set; } + public decimal? Longitude { get; set; } } diff --git a/api/src/Feature.PollingStations/Create/Endpoint.cs b/api/src/Feature.PollingStations/Create/Endpoint.cs index 08afcfd43..2989813c9 100644 --- a/api/src/Feature.PollingStations/Create/Endpoint.cs +++ b/api/src/Feature.PollingStations/Create/Endpoint.cs @@ -1,4 +1,4 @@ -using Vote.Monitor.Core.Helpers; +using Vote.Monitor.Core.Helpers; using Vote.Monitor.Core.Services.Security; using Vote.Monitor.Core.Services.Time; @@ -7,6 +7,7 @@ namespace Feature.PollingStations.Create; public class Endpoint( VoteMonitorContext context, IRepository electionRoundRepository, + IRepository pollingStationRepository, ITimeProvider timeProvider, ICurrentUserProvider userProvider) : Endpoint, NotFound>> @@ -29,9 +30,36 @@ public override async Task, NotFound>> Exec return TypedResults.NotFound(new ProblemDetails(ValidationFailures)); } - var userId = userProvider.GetUserId()!.Value; + var pollingStationIds = req.PollingStations + .Where(ps => ps.Id.HasValue) + .Select(ps => ps.Id!.Value) + .ToList(); + + var groupedPollingStationIds = pollingStationIds.GroupBy(id => id, y => y, + (id, duplicates) => new { id, numberOfDuplicates = duplicates.Count() }); + + foreach (var groupedPollingStationId in groupedPollingStationIds) + { + if (groupedPollingStationId.numberOfDuplicates > 1) + { + AddError(new ValidationFailure(groupedPollingStationId.id.ToString(), "This id is duplicated")); + } + } + + ThrowIfAnyErrors(); - var pollingStations = req.PollingStations.Select(ps => PollingStationAggregate.Create(electionRound, + var pollingStationsWithIdsFromAnotherElections = await pollingStationRepository.ListAsync( + new GetPollingStationsByIdsInOtherElectionRoundsSpecification(electionRound.Id, pollingStationIds), ct); + + foreach (var ps in pollingStationsWithIdsFromAnotherElections) + { + AddError(new ValidationFailure(ps.Id.ToString(), "This id is for a different PS in another election")); + } + + ThrowIfAnyErrors(); + + var userId = userProvider.GetUserId()!.Value; + var pollingStations = req.PollingStations.Select(ps => PollingStationAggregate.Create(ps.Id, electionRound, ps.Level1, ps.Level2, ps.Level3, @@ -41,11 +69,13 @@ public override async Task, NotFound>> Exec ps.Address, ps.DisplayOrder, ps.Tags.ToTagsObject(), + ps.Latitude, + ps.Longitude, timeProvider.UtcNow, userId)) .ToArray(); - await context.BulkInsertAsync(pollingStations, cancellationToken: ct); + await context.BulkInsertOrUpdateAsync(pollingStations, cancellationToken: ct); electionRound.UpdatePollingStationsVersion(); diff --git a/api/src/Feature.PollingStations/Create/Request.cs b/api/src/Feature.PollingStations/Create/Request.cs index 8b7600386..bda62317f 100644 --- a/api/src/Feature.PollingStations/Create/Request.cs +++ b/api/src/Feature.PollingStations/Create/Request.cs @@ -8,6 +8,7 @@ public class Request public class PollingStationRequest { + public Guid? Id { get; set; } public string Level1 { get; set; } public string Level2 { get; set; } public string Level3 { get; set; } @@ -17,5 +18,7 @@ public class PollingStationRequest public int DisplayOrder { get; set; } public string Address { get; set; } public Dictionary Tags { get; set; } + public double? Latitude { get; set; } + public double? Longitude { get; set; } } } diff --git a/api/src/Feature.PollingStations/FetchAll/Endpoint.cs b/api/src/Feature.PollingStations/FetchAll/Endpoint.cs index 3a9da6966..ffb378281 100644 --- a/api/src/Feature.PollingStations/FetchAll/Endpoint.cs +++ b/api/src/Feature.PollingStations/FetchAll/Endpoint.cs @@ -35,7 +35,6 @@ public override async Task, NotFound>> ExecuteAsync(Request { var pollingStations = await context.PollingStations .Where(x => x.ElectionRoundId == request.ElectionRoundId) - .OrderBy(x => x.DisplayOrder) .Select(x => new PollingStationModel { Id = x.Id, @@ -134,7 +133,9 @@ private static List GetLocationNodes(List pol Name = ps.Address, ParentId = parentNode!.Id, Number = ps.Number, - PollingStationId = ps.Id + PollingStationId = ps.Id, + Latitude = ps.Latitude, + Longitude = ps.Longitude }); } diff --git a/api/src/Feature.PollingStations/FetchAll/LocationNode.cs b/api/src/Feature.PollingStations/FetchAll/LocationNode.cs index dd2884902..f1eb0c069 100644 --- a/api/src/Feature.PollingStations/FetchAll/LocationNode.cs +++ b/api/src/Feature.PollingStations/FetchAll/LocationNode.cs @@ -19,4 +19,10 @@ public class LocationNode [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] public int? DisplayOrder { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public double? Latitude { get; set; } + + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public double? Longitude { get; set; } } diff --git a/api/src/Feature.PollingStations/GetImportTemplate/Endpoint.cs b/api/src/Feature.PollingStations/GetImportTemplate/Endpoint.cs index fb70f9606..6c68ed532 100644 --- a/api/src/Feature.PollingStations/GetImportTemplate/Endpoint.cs +++ b/api/src/Feature.PollingStations/GetImportTemplate/Endpoint.cs @@ -16,7 +16,7 @@ public override void Configure() public override async Task HandleAsync(CancellationToken ct) { const string template = """ - "Level1", "Level2", "Level3", "Level4", "Level5", "Number", "Address", "DisplayOrder" + "Level1", "Level2", "Level3", "Level4", "Level5", "Number", "Address", "DisplayOrder","Latitude", "Longitude", "Tag1", "Tag2", "Tag3" """; var stream = GenerateStreamFromString(template); diff --git a/api/src/Feature.PollingStations/Import/Endpoint.cs b/api/src/Feature.PollingStations/Import/Endpoint.cs index 14c80c804..643ebbee2 100644 --- a/api/src/Feature.PollingStations/Import/Endpoint.cs +++ b/api/src/Feature.PollingStations/Import/Endpoint.cs @@ -55,6 +55,8 @@ public override async Task, NotFound, Probl x.Address, x.DisplayOrder, x.Tags.ToTagsObject(), + x.Latitude, + x.Longitude, timeProvider.UtcNow, userProvider.GetUserId()!.Value)) .ToList(); diff --git a/api/src/Feature.PollingStations/List/Endpoint.cs b/api/src/Feature.PollingStations/List/Endpoint.cs index 4472838d8..e9e725390 100644 --- a/api/src/Feature.PollingStations/List/Endpoint.cs +++ b/api/src/Feature.PollingStations/List/Endpoint.cs @@ -35,6 +35,8 @@ public override async Task>, Probl Number = x.Number, Address = x.Address, DisplayOrder = x.DisplayOrder, + Latitude = x.Latitude, + Longitude = x.Longitude, Tags = x.Tags.ToDictionary() }).ToList(); diff --git a/api/src/Feature.PollingStations/PollingStationModel.cs b/api/src/Feature.PollingStations/PollingStationModel.cs index 3577cb1f9..dfb167716 100644 --- a/api/src/Feature.PollingStations/PollingStationModel.cs +++ b/api/src/Feature.PollingStations/PollingStationModel.cs @@ -11,4 +11,6 @@ public class PollingStationModel public string Address { get; set; } public int DisplayOrder { get; set; } public Dictionary Tags { get; set; } + public double? Latitude { get; set; } + public double? Longitude { get; set; } } diff --git a/api/src/Feature.PollingStations/Services/PollingStationImportModel.cs b/api/src/Feature.PollingStations/Services/PollingStationImportModel.cs index 6f55d1e59..14b873ba3 100644 --- a/api/src/Feature.PollingStations/Services/PollingStationImportModel.cs +++ b/api/src/Feature.PollingStations/Services/PollingStationImportModel.cs @@ -14,4 +14,6 @@ public class PollingStationImportModel public string Address { get; set; } public List Tags { get; set; } -} \ No newline at end of file + public double? Latitude { get; set; } + public double? Longitude { get; set; } +} diff --git a/api/src/Feature.PollingStations/Services/PollingStationImportModelMapper.cs b/api/src/Feature.PollingStations/Services/PollingStationImportModelMapper.cs index 0d3861bb5..06825758b 100644 --- a/api/src/Feature.PollingStations/Services/PollingStationImportModelMapper.cs +++ b/api/src/Feature.PollingStations/Services/PollingStationImportModelMapper.cs @@ -15,14 +15,16 @@ public PollingStationImportModelMapper() Map(m => m.Address).Name("Address"); // 6 Map(m => m.DisplayOrder).Name("DisplayOrder"); //7 - Map(m => m.Tags).Convert(ReadTags); // 8 -> end + Map(m => m.Latitude).Name("Latitude"); //8 + Map(m => m.Longitude).Name("Longitude"); //9 + Map(m => m.Tags).Convert(ReadTags); // 10 -> end } private static List ReadTags(ConvertFromStringArgs row) { var tags = new List(); - for (var i = 8; i < row.Row?.HeaderRecord?.Length; i++) + for (var i = 10; i < row.Row?.HeaderRecord?.Length; i++) { var name = row.Row.HeaderRecord[i]; var value = row.Row[i]; diff --git a/api/src/Feature.PollingStations/Specifications/GetPollingStationsByIdsInOtherElectionRoundsSpecification.cs b/api/src/Feature.PollingStations/Specifications/GetPollingStationsByIdsInOtherElectionRoundsSpecification.cs new file mode 100644 index 000000000..a496fb4bd --- /dev/null +++ b/api/src/Feature.PollingStations/Specifications/GetPollingStationsByIdsInOtherElectionRoundsSpecification.cs @@ -0,0 +1,11 @@ +namespace Feature.PollingStations.Specifications; + +public sealed class GetPollingStationsByIdsInOtherElectionRoundsSpecification : Specification +{ + public GetPollingStationsByIdsInOtherElectionRoundsSpecification(Guid electionRoundId, IEnumerable pollingStationIds) + { + Query + .Where(x => x.ElectionRoundId != electionRoundId) + .Where(x => pollingStationIds.Contains(x.Id)); + } +} diff --git a/api/src/Feature.PollingStations/Update/Endpoint.cs b/api/src/Feature.PollingStations/Update/Endpoint.cs index 1f5e6efbb..cd53ae2e2 100644 --- a/api/src/Feature.PollingStations/Update/Endpoint.cs +++ b/api/src/Feature.PollingStations/Update/Endpoint.cs @@ -31,7 +31,7 @@ public override async Task, Conflict return TypedResults.NotFound(new ProblemDetails(ValidationFailures)); } - pollingStation.UpdateDetails(req.Level1, req.Level2, req.Level3, req.Level4, req.Level5, req.Number, req.Address, req.DisplayOrder, req.Tags.ToTagsObject()); + pollingStation.UpdateDetails(req.Level1, req.Level2, req.Level3, req.Level4, req.Level5, req.Number, req.Address, req.DisplayOrder, req.Tags.ToTagsObject(), req.Latitude,req.Longitude); await repository.UpdateAsync(pollingStation, ct); electionRound.UpdatePollingStationsVersion(); await electionRoundRepository.UpdateAsync(electionRound, ct); diff --git a/api/src/Feature.PollingStations/Update/Request.cs b/api/src/Feature.PollingStations/Update/Request.cs index a391c157c..ab941c39f 100644 --- a/api/src/Feature.PollingStations/Update/Request.cs +++ b/api/src/Feature.PollingStations/Update/Request.cs @@ -1,4 +1,5 @@ namespace Feature.PollingStations.Update; + public class Request { public Guid ElectionRoundId { get; set; } @@ -12,4 +13,7 @@ public class Request public int DisplayOrder { get; set; } public string Address { get; set; } public Dictionary Tags { get; set; } + + public double? Latitude { get; set; } + public double? Longitude { get; set; } } diff --git a/api/src/Vote.Monitor.Domain/Entities/PollingStationAggregate/PollingStation.cs b/api/src/Vote.Monitor.Domain/Entities/PollingStationAggregate/PollingStation.cs index 33e38de47..b6acefab7 100644 --- a/api/src/Vote.Monitor.Domain/Entities/PollingStationAggregate/PollingStation.cs +++ b/api/src/Vote.Monitor.Domain/Entities/PollingStationAggregate/PollingStation.cs @@ -7,8 +7,10 @@ private PollingStation() { } #pragma warning restore CS8618 - - internal PollingStation(ElectionRound electionRound, + + public static PollingStation Create( + Guid? id, + ElectionRound electionRound, string level1, string level2, string level3, @@ -17,11 +19,24 @@ internal PollingStation(ElectionRound electionRound, string number, string address, int displayOrder, - JsonDocument tags) : this(Guid.NewGuid(), electionRound, level1, level2, level3, level4, level5, number, address, displayOrder, tags) + JsonDocument tags, + double? latitude, + double? longitude, + DateTime createdOn, + Guid userId) { - } + var pollingStation = new PollingStation(id, electionRound, level1, level2, level3, level4, level5, number, address, + displayOrder, + tags, latitude, longitude); - public static PollingStation Create(ElectionRound electionRound, + pollingStation.CreatedOn = createdOn; + pollingStation.CreatedBy = userId; + + return pollingStation; + } + + public static PollingStation Create( + ElectionRound electionRound, string level1, string level2, string level3, @@ -31,16 +46,12 @@ public static PollingStation Create(ElectionRound electionRound, string address, int displayOrder, JsonDocument tags, + double? latitude, + double? longitude, DateTime createdOn, Guid userId) { - var pollingStation = new PollingStation(electionRound, level1, level2, level3, level4, level5, number, address, displayOrder, - tags); - - pollingStation.CreatedOn = createdOn; - pollingStation.CreatedBy = userId; - - return pollingStation; + return Create(null, electionRound, level1, level2, level3, level4, level5, number, address,displayOrder, tags, latitude, longitude, createdOn, userId); } public Guid Id { get; private set; } @@ -48,7 +59,7 @@ public static PollingStation Create(ElectionRound electionRound, public Guid ElectionRoundId { get; private set; } internal PollingStation( - Guid id, + Guid? id, ElectionRound electionRound, string level1, string level2, @@ -58,9 +69,11 @@ internal PollingStation( string number, string address, int displayOrder, - JsonDocument tags) + JsonDocument tags, + double? latitude, + double? longitude) { - Id = id; + Id = id ?? Guid.NewGuid(); ElectionRoundId = electionRound.Id; ElectionRound = electionRound; Level1 = level1; @@ -72,6 +85,8 @@ internal PollingStation( Address = address; DisplayOrder = displayOrder; Tags = tags; + Latitude = latitude; + Longitude = longitude; } public string Level1 { get; private set; } @@ -83,6 +98,8 @@ internal PollingStation( public string Address { get; private set; } public int DisplayOrder { get; private set; } + public double? Latitude { get; private set; } + public double? Longitude { get; private set; } public JsonDocument Tags { get; private set; } @@ -94,7 +111,9 @@ public void UpdateDetails(string level1, string number, string address, int displayOrder, - JsonDocument tags) + JsonDocument tags, + double? latitude, + double? longitude) { Level1 = level1; Level2 = level2; @@ -105,7 +124,10 @@ public void UpdateDetails(string level1, Address = address; DisplayOrder = displayOrder; Tags = tags; + Latitude = latitude; + Longitude = longitude; } + public void Dispose() { Tags.Dispose(); diff --git a/api/src/Vote.Monitor.Domain/EntitiesConfiguration/PollingStationConfiguration.cs b/api/src/Vote.Monitor.Domain/EntitiesConfiguration/PollingStationConfiguration.cs index 6e5543f42..01de18b89 100644 --- a/api/src/Vote.Monitor.Domain/EntitiesConfiguration/PollingStationConfiguration.cs +++ b/api/src/Vote.Monitor.Domain/EntitiesConfiguration/PollingStationConfiguration.cs @@ -11,13 +11,15 @@ public void Configure(EntityTypeBuilder builder) builder.Property(p => p.Id).IsRequired(); builder.Property(p => p.Address).HasMaxLength(2024).IsRequired(); builder.Property(p => p.DisplayOrder).IsRequired(); - builder.Property(p => p.Tags).IsRequired(false); + builder.Property(p => p.Tags).IsRequired(false).HasDefaultValueSql("'{}'::JSONB"); builder.Property(p => p.Level1).HasMaxLength(256).IsRequired(); builder.Property(p => p.Level2).HasMaxLength(256).IsRequired(false); builder.Property(p => p.Level3).HasMaxLength(256).IsRequired(false); builder.Property(p => p.Level4).HasMaxLength(256).IsRequired(false); builder.Property(p => p.Level5).HasMaxLength(256).IsRequired(false); builder.Property(p => p.Number).HasMaxLength(256).IsRequired(); + builder.Property(p => p.Latitude).IsRequired(false).HasDefaultValue(null); + builder.Property(p => p.Longitude).IsRequired(false).HasDefaultValue(null); builder .HasOne(x => x.ElectionRound) diff --git a/api/src/Vote.Monitor.Domain/Migrations/20250509131459_AddLatLongToPollingStations.Designer.cs b/api/src/Vote.Monitor.Domain/Migrations/20250509131459_AddLatLongToPollingStations.Designer.cs new file mode 100644 index 000000000..d1d750bb7 --- /dev/null +++ b/api/src/Vote.Monitor.Domain/Migrations/20250509131459_AddLatLongToPollingStations.Designer.cs @@ -0,0 +1,7039 @@ +// +using System; +using System.Collections.Generic; +using System.Text.Json; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Vote.Monitor.Domain; + +#nullable disable + +namespace Vote.Monitor.Domain.Migrations +{ + [DbContext(typeof(VoteMonitorContext))] + [Migration("20250509131459_AddLatLongToPollingStations")] + partial class AddLatLongToPollingStations + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "hstore"); + NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "uuid-ossp"); + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles", (string)null); + + b.HasData( + new + { + Id = new Guid("265e94b0-50fe-4546-b21c-83cb7e94aeff"), + Name = "PlatformAdmin", + NormalizedName = "PLATFORMADMIN" + }, + new + { + Id = new Guid("3239f803-dda8-408b-93ad-0ed973a04e45"), + Name = "NgoAdmin", + NormalizedName = "NGOADMIN" + }, + new + { + Id = new Guid("d1cbef39-62e0-4120-a42b-b01b029dc6ad"), + Name = "Observer", + NormalizedName = "OBSERVER" + }); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("DisplayName") + .IsRequired() + .ValueGeneratedOnAddOrUpdate() + .HasColumnType("text") + .HasComputedColumnSql("\"FirstName\" || ' ' || \"LastName\"", true); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("InvitationToken") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("RefreshToken") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("RefreshTokenExpiryTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Role") + .IsRequired() + .HasColumnType("text"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.AttachmentAggregate.Attachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("IsCompleted") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("LastUpdatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("MimeType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("MonitoringObserverId") + .HasColumnType("uuid"); + + b.Property("PollingStationId") + .HasColumnType("uuid"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("UploadedFileName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("FormId"); + + b.HasIndex("MonitoringObserverId"); + + b.HasIndex("PollingStationId"); + + b.ToTable("Attachments", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.Auditing.Trail", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AffectedColumns") + .HasColumnType("text"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("NewValues") + .HasColumnType("text"); + + b.Property("OldValues") + .HasColumnType("text"); + + b.Property("PrimaryKey") + .HasColumnType("text"); + + b.Property("TableName") + .HasColumnType("text"); + + b.Property("Timestamp") + .HasColumnType("timestamp with time zone"); + + b.Property("Type") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("AuditTrails"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenGuideAggregate.CitizenGuide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FileName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FilePath") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("GuideType") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("MimeType") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Text") + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("UploadedFileName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("WebsiteUrl") + .HasMaxLength(2048) + .HasColumnType("character varying(2048)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.ToTable("CitizenGuides"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenNotificationAggregate.CitizenNotification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("SenderId") + .HasColumnType("uuid"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("SenderId"); + + b.ToTable("CitizenNotifications"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenReportAggregate.CitizenReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Answers") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FollowUpStatus") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("NotApplicable"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("uuid"); + + b.Property("NumberOfFlaggedAnswers") + .HasColumnType("integer"); + + b.Property("NumberOfQuestionsAnswered") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("FormId"); + + b.HasIndex("LocationId"); + + b.ToTable("CitizenReports"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenReportAttachmentAggregate.CitizenReportAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CitizenReportId") + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("IsCompleted") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("MimeType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("UploadedFileName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("CitizenReportId"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("FormId"); + + b.ToTable("CitizenReportAttachments"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenReportNoteAggregate.CitizenReportNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CitizenReportId") + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("character varying(10000)"); + + b.HasKey("Id"); + + b.HasIndex("CitizenReportId"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("FormId"); + + b.ToTable("CitizenReportNotes"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.Coalition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("LeaderId") + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("LeaderId"); + + b.ToTable("Coalitions"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.CoalitionFormAccess", b => + { + b.Property("CoalitionId") + .HasColumnType("uuid"); + + b.Property("MonitoringNgoId") + .HasColumnType("uuid"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.HasKey("CoalitionId", "MonitoringNgoId", "FormId"); + + b.HasIndex("FormId"); + + b.HasIndex("MonitoringNgoId"); + + b.ToTable("CoalitionFormAccess"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.CoalitionGuideAccess", b => + { + b.Property("CoalitionId") + .HasColumnType("uuid"); + + b.Property("MonitoringNgoId") + .HasColumnType("uuid"); + + b.Property("GuideId") + .HasColumnType("uuid"); + + b.HasKey("CoalitionId", "MonitoringNgoId", "GuideId"); + + b.HasIndex("GuideId"); + + b.HasIndex("MonitoringNgoId"); + + b.ToTable("CoalitionGuideAccess"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.CoalitionMembership", b => + { + b.Property("MonitoringNgoId") + .HasColumnType("uuid"); + + b.Property("CoalitionId") + .HasColumnType("uuid"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.HasKey("MonitoringNgoId", "CoalitionId"); + + b.HasIndex("CoalitionId"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("MonitoringNgoId", "ElectionRoundId") + .IsUnique(); + + b.HasIndex("MonitoringNgoId", "CoalitionId", "ElectionRoundId") + .IsUnique(); + + b.ToTable("CoalitionMemberships"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CountryAggregate.Country", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Iso2") + .IsRequired() + .HasMaxLength(2) + .HasColumnType("character varying(2)"); + + b.Property("Iso3") + .IsRequired() + .HasMaxLength(3) + .HasColumnType("character varying(3)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NumericCode") + .IsRequired() + .HasMaxLength(3) + .HasColumnType("character varying(3)"); + + b.HasKey("Id"); + + b.HasIndex("Iso2") + .IsUnique(); + + b.HasIndex("Iso3") + .IsUnique(); + + b.HasIndex("NumericCode") + .IsUnique(); + + b.ToTable("Countries"); + + b.HasData( + new + { + Id = new Guid("edd4319b-86f3-24cb-248c-71da624c02f7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Islamic Republic of Afghanistan", + Iso2 = "AF", + Iso3 = "AFG", + Name = "Afghanistan", + NumericCode = "004" + }, + new + { + Id = new Guid("a96fe9bb-4ef4-fca0-f38b-0ec729822f37"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Åland Islands", + Iso2 = "AX", + Iso3 = "ALA", + Name = "Åland Islands", + NumericCode = "248" + }, + new + { + Id = new Guid("5aa0aeb7-4dc8-6a29-fc2f-35daec1541dd"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Albania", + Iso2 = "AL", + Iso3 = "ALB", + Name = "Albania", + NumericCode = "008" + }, + new + { + Id = new Guid("fee6f04f-c4c1-e3e4-645d-bb6bb703aeb7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "People's Democratic Republic of Algeria", + Iso2 = "DZ", + Iso3 = "DZA", + Name = "Algeria", + NumericCode = "012" + }, + new + { + Id = new Guid("538114de-7db0-9242-35e6-324fa7eff44d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "American Samoa", + Iso2 = "AS", + Iso3 = "ASM", + Name = "American Samoa", + NumericCode = "016" + }, + new + { + Id = new Guid("bd4bbfc7-d8bc-9d8d-7f7c-7b299c94e9e5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Principality of Andorra", + Iso2 = "AD", + Iso3 = "AND", + Name = "Andorra", + NumericCode = "020" + }, + new + { + Id = new Guid("478786f7-1842-8c1e-921c-12e7ed5329c5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Angola", + Iso2 = "AO", + Iso3 = "AGO", + Name = "Angola", + NumericCode = "024" + }, + new + { + Id = new Guid("2b68fb11-a0e0-3d23-5fb8-99721ecfc182"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Anguilla", + Iso2 = "AI", + Iso3 = "AIA", + Name = "Anguilla", + NumericCode = "660" + }, + new + { + Id = new Guid("a0098040-b7a0-59a1-e64b-0a9778b7f74c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Antarctica (the territory South of 60 deg S)", + Iso2 = "AQ", + Iso3 = "ATA", + Name = "Antarctica", + NumericCode = "010" + }, + new + { + Id = new Guid("f3eef99a-661e-2c68-7a4c-3053e2f28007"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Antigua and Barbuda", + Iso2 = "AG", + Iso3 = "ATG", + Name = "Antigua and Barbuda", + NumericCode = "028" + }, + new + { + Id = new Guid("a7afb7b1-b26d-4571-1a1f-3fff738ff21e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Argentine Republic", + Iso2 = "AR", + Iso3 = "ARG", + Name = "Argentina", + NumericCode = "032" + }, + new + { + Id = new Guid("688af4c8-9d64-ae1c-147f-b8afd54801e3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Armenia", + Iso2 = "AM", + Iso3 = "ARM", + Name = "Armenia", + NumericCode = "051" + }, + new + { + Id = new Guid("e6c7651f-182e-cf9c-1ef9-6293b95b500c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Aruba", + Iso2 = "AW", + Iso3 = "ABW", + Name = "Aruba", + NumericCode = "533" + }, + new + { + Id = new Guid("15639386-e4fc-120c-6916-c0c980e24be1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Commonwealth of Australia", + Iso2 = "AU", + Iso3 = "AUS", + Name = "Australia", + NumericCode = "036" + }, + new + { + Id = new Guid("704254eb-6959-8ddc-a5df-ac8f9658dc68"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Austria", + Iso2 = "AT", + Iso3 = "AUT", + Name = "Austria", + NumericCode = "040" + }, + new + { + Id = new Guid("008c3138-73d8-dbbc-f1dd-521e4c68bcf1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Azerbaijan", + Iso2 = "AZ", + Iso3 = "AZE", + Name = "Azerbaijan", + NumericCode = "031" + }, + new + { + Id = new Guid("46e88019-c521-57b2-d1c0-c0e2478d3b05"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Commonwealth of the Bahamas", + Iso2 = "BS", + Iso3 = "BHS", + Name = "Bahamas", + NumericCode = "044" + }, + new + { + Id = new Guid("44caa0f4-1e78-d2fb-96be-d01b3224bdc1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Bahrain", + Iso2 = "BH", + Iso3 = "BHR", + Name = "Bahrain", + NumericCode = "048" + }, + new + { + Id = new Guid("809c3424-8654-b82c-cbd4-d857d096943e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "People's Republic of Bangladesh", + Iso2 = "BD", + Iso3 = "BGD", + Name = "Bangladesh", + NumericCode = "050" + }, + new + { + Id = new Guid("316c68fc-9144-f6e1-8bf1-899fc54b2327"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Barbados", + Iso2 = "BB", + Iso3 = "BRB", + Name = "Barbados", + NumericCode = "052" + }, + new + { + Id = new Guid("d97b5460-11ab-45c5-9a6f-ffa441ed70d6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Belarus", + Iso2 = "BY", + Iso3 = "BLR", + Name = "Belarus", + NumericCode = "112" + }, + new + { + Id = new Guid("0797a7d5-bbc0-2e52-0de8-14a42fc80baa"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Belgium", + Iso2 = "BE", + Iso3 = "BEL", + Name = "Belgium", + NumericCode = "056" + }, + new + { + Id = new Guid("c89e02a0-9506-90df-5545-b98a2453cd63"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Belize", + Iso2 = "BZ", + Iso3 = "BLZ", + Name = "Belize", + NumericCode = "084" + }, + new + { + Id = new Guid("96a22cee-9af7-8f03-b483-b3e774a36d3b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Benin", + Iso2 = "BJ", + Iso3 = "BEN", + Name = "Benin", + NumericCode = "204" + }, + new + { + Id = new Guid("ca2a5560-d4c4-3c87-3090-6f5436310b55"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Bermuda", + Iso2 = "BM", + Iso3 = "BMU", + Name = "Bermuda", + NumericCode = "060" + }, + new + { + Id = new Guid("8ed6a34e-8135-27fa-f86a-caa247b29768"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Bhutan", + Iso2 = "BT", + Iso3 = "BTN", + Name = "Bhutan", + NumericCode = "064" + }, + new + { + Id = new Guid("f33ced84-eb43-fb39-ef79-b266e4d4cd94"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Plurinational State of Bolivia", + Iso2 = "BO", + Iso3 = "BOL", + Name = "Bolivia", + NumericCode = "068" + }, + new + { + Id = new Guid("d8101f9d-8313-4054-c5f3-42c7a1c72862"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Bonaire, Sint Eustatius and Saba", + Iso2 = "BQ", + Iso3 = "BES", + Name = "Bonaire, Sint Eustatius and Saba", + NumericCode = "535" + }, + new + { + Id = new Guid("a7716d29-6ef6-b775-51c5-97094536329d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Bosnia and Herzegovina", + Iso2 = "BA", + Iso3 = "BIH", + Name = "Bosnia and Herzegovina", + NumericCode = "070" + }, + new + { + Id = new Guid("14f190c6-97c9-3e12-2eba-db17c59d6a04"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Botswana", + Iso2 = "BW", + Iso3 = "BWA", + Name = "Botswana", + NumericCode = "072" + }, + new + { + Id = new Guid("32da0208-9048-1339-a8ee-6955cfff4c12"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Bouvet Island (Bouvetøya)", + Iso2 = "BV", + Iso3 = "BVT", + Name = "Bouvet Island (Bouvetøya)", + NumericCode = "074" + }, + new + { + Id = new Guid("5283afbb-2744-e930-2c16-c5ea6b0ff7cc"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Federative Republic of Brazil", + Iso2 = "BR", + Iso3 = "BRA", + Name = "Brazil", + NumericCode = "076" + }, + new + { + Id = new Guid("b8b09512-ea4c-4a61-9331-304f55324ef7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "British Indian Ocean Territory (Chagos Archipelago)", + Iso2 = "IO", + Iso3 = "IOT", + Name = "British Indian Ocean Territory (Chagos Archipelago)", + NumericCode = "086" + }, + new + { + Id = new Guid("39be5e86-aea5-f64f-fd7e-1017fe24e543"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "British Virgin Islands", + Iso2 = "VG", + Iso3 = "VGB", + Name = "British Virgin Islands", + NumericCode = "092" + }, + new + { + Id = new Guid("ed6278e0-436c-9fd9-0b9e-44fd424cbd1b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Brunei Darussalam", + Iso2 = "BN", + Iso3 = "BRN", + Name = "Brunei Darussalam", + NumericCode = "096" + }, + new + { + Id = new Guid("46576b73-c05b-7498-5b07-9bbf59b7645d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Bulgaria", + Iso2 = "BG", + Iso3 = "BGR", + Name = "Bulgaria", + NumericCode = "100" + }, + new + { + Id = new Guid("42697d56-52cf-b411-321e-c51929f02f90"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Burkina Faso", + Iso2 = "BF", + Iso3 = "BFA", + Name = "Burkina Faso", + NumericCode = "854" + }, + new + { + Id = new Guid("75e4464b-a784-63b8-1ecc-69ee1f09f43f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Burundi", + Iso2 = "BI", + Iso3 = "BDI", + Name = "Burundi", + NumericCode = "108" + }, + new + { + Id = new Guid("c9702851-1f67-f2a6-89d4-37b3fbb12044"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Cambodia", + Iso2 = "KH", + Iso3 = "KHM", + Name = "Cambodia", + NumericCode = "116" + }, + new + { + Id = new Guid("c0b7e39e-223a-ebb0-b899-5404573bbdb7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Cameroon", + Iso2 = "CM", + Iso3 = "CMR", + Name = "Cameroon", + NumericCode = "120" + }, + new + { + Id = new Guid("5c0e654b-8547-5d02-ee7b-d65e3c5c5273"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Canada", + Iso2 = "CA", + Iso3 = "CAN", + Name = "Canada", + NumericCode = "124" + }, + new + { + Id = new Guid("17ed5f0f-e091-94ff-0512-ad291bde94d7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Cabo Verde", + Iso2 = "CV", + Iso3 = "CPV", + Name = "Cabo Verde", + NumericCode = "132" + }, + new + { + Id = new Guid("3c5828e0-16a8-79ba-4e5c-9b45065df113"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Cayman Islands", + Iso2 = "KY", + Iso3 = "CYM", + Name = "Cayman Islands", + NumericCode = "136" + }, + new + { + Id = new Guid("b4e0625c-7597-c185-b8ae-cfb35a731f2f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Central African Republic", + Iso2 = "CF", + Iso3 = "CAF", + Name = "Central African Republic", + NumericCode = "140" + }, + new + { + Id = new Guid("2a1ca5b6-fba0-cfa8-9928-d7a2382bc4d7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Chad", + Iso2 = "TD", + Iso3 = "TCD", + Name = "Chad", + NumericCode = "148" + }, + new + { + Id = new Guid("ad4f938a-bf7b-684b-2c9e-e824d3fa3863"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Chile", + Iso2 = "CL", + Iso3 = "CHL", + Name = "Chile", + NumericCode = "152" + }, + new + { + Id = new Guid("8250c49f-9438-7c2e-f403-54d962db0c18"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "People's Republic of China", + Iso2 = "CN", + Iso3 = "CHN", + Name = "China", + NumericCode = "156" + }, + new + { + Id = new Guid("0f1ba59e-ade5-23e5-6fce-e2fd3282e114"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Christmas Island", + Iso2 = "CX", + Iso3 = "CXR", + Name = "Christmas Island", + NumericCode = "162" + }, + new + { + Id = new Guid("a16263a5-810c-bf6a-206d-72cb914e2d5c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Cocos (Keeling) Islands", + Iso2 = "CC", + Iso3 = "CCK", + Name = "Cocos (Keeling) Islands", + NumericCode = "166" + }, + new + { + Id = new Guid("c64288fc-d941-0615-47f9-28e6c294ce26"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Colombia", + Iso2 = "CO", + Iso3 = "COL", + Name = "Colombia", + NumericCode = "170" + }, + new + { + Id = new Guid("5e7a08f2-7d59-bcdb-7ddd-876b87181420"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Union of the Comoros", + Iso2 = "KM", + Iso3 = "COM", + Name = "Comoros", + NumericCode = "174" + }, + new + { + Id = new Guid("1258ec90-c47e-ff72-b7e3-f90c3ee320f8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Democratic Republic of the Congo", + Iso2 = "CD", + Iso3 = "COD", + Name = "Congo", + NumericCode = "180" + }, + new + { + Id = new Guid("1934954c-66c2-6226-c5b6-491065a3e4c0"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of the Congo", + Iso2 = "CG", + Iso3 = "COG", + Name = "Congo", + NumericCode = "178" + }, + new + { + Id = new Guid("af79558d-51fb-b08d-185b-afeb983ab99b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Cook Islands", + Iso2 = "CK", + Iso3 = "COK", + Name = "Cook Islands", + NumericCode = "184" + }, + new + { + Id = new Guid("d13935c1-8956-1399-7c4e-0354795cd37b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Costa Rica", + Iso2 = "CR", + Iso3 = "CRI", + Name = "Costa Rica", + NumericCode = "188" + }, + new + { + Id = new Guid("5be18efe-6db8-a727-7f2a-62bd71bc6593"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Cote d'Ivoire", + Iso2 = "CI", + Iso3 = "CIV", + Name = "Cote d'Ivoire", + NumericCode = "384" + }, + new + { + Id = new Guid("1f8be615-5746-277e-d82b-47596b5bb922"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Croatia", + Iso2 = "HR", + Iso3 = "HRV", + Name = "Croatia", + NumericCode = "191" + }, + new + { + Id = new Guid("57765d87-2424-2c86-ad9c-1af58ef3127a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Cuba", + Iso2 = "CU", + Iso3 = "CUB", + Name = "Cuba", + NumericCode = "192" + }, + new + { + Id = new Guid("3345e205-3e72-43ed-de1b-ac6e050543e5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Curaçao", + Iso2 = "CW", + Iso3 = "CUW", + Name = "Curaçao", + NumericCode = "531" + }, + new + { + Id = new Guid("df20d0d7-9fbe-e725-d966-4fdf9f5c9dfb"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Cyprus", + Iso2 = "CY", + Iso3 = "CYP", + Name = "Cyprus", + NumericCode = "196" + }, + new + { + Id = new Guid("9d4ec95b-974a-f5bb-bb4b-ba6747440631"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Czech Republic", + Iso2 = "CZ", + Iso3 = "CZE", + Name = "Czechia", + NumericCode = "203" + }, + new + { + Id = new Guid("8a4fcb23-f3e6-fb5b-8cda-975872f600d5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Denmark", + Iso2 = "DK", + Iso3 = "DNK", + Name = "Denmark", + NumericCode = "208" + }, + new + { + Id = new Guid("37a79267-d38a-aaef-577a-aa68a96880ae"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Djibouti", + Iso2 = "DJ", + Iso3 = "DJI", + Name = "Djibouti", + NumericCode = "262" + }, + new + { + Id = new Guid("19ea3a6a-1a76-23c8-8e4e-1d298f15207f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Commonwealth of Dominica", + Iso2 = "DM", + Iso3 = "DMA", + Name = "Dominica", + NumericCode = "212" + }, + new + { + Id = new Guid("b2c4d2d7-7ada-7864-426f-10a28d9f9eba"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Dominican Republic", + Iso2 = "DO", + Iso3 = "DOM", + Name = "Dominican Republic", + NumericCode = "214" + }, + new + { + Id = new Guid("49c82f1b-968d-b5e7-8559-e39567d46787"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Ecuador", + Iso2 = "EC", + Iso3 = "ECU", + Name = "Ecuador", + NumericCode = "218" + }, + new + { + Id = new Guid("ee5dfc29-80f1-86ae-cde7-02484a18907a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Arab Republic of Egypt", + Iso2 = "EG", + Iso3 = "EGY", + Name = "Egypt", + NumericCode = "818" + }, + new + { + Id = new Guid("4d8bcda4-5598-16cd-b379-97eb7a5e1c29"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of El Salvador", + Iso2 = "SV", + Iso3 = "SLV", + Name = "El Salvador", + NumericCode = "222" + }, + new + { + Id = new Guid("824392e8-a6cc-0cd4-af13-3067dad3258e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Equatorial Guinea", + Iso2 = "GQ", + Iso3 = "GNQ", + Name = "Equatorial Guinea", + NumericCode = "226" + }, + new + { + Id = new Guid("8b5a477a-070a-a84f-bd3b-f54dc2a172de"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "State of Eritrea", + Iso2 = "ER", + Iso3 = "ERI", + Name = "Eritrea", + NumericCode = "232" + }, + new + { + Id = new Guid("2dc643bd-cc6c-eb0c-7314-44123576f0ee"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Estonia", + Iso2 = "EE", + Iso3 = "EST", + Name = "Estonia", + NumericCode = "233" + }, + new + { + Id = new Guid("e75515a6-63cf-3612-a3a2-befa0d7048a7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Federal Democratic Republic of Ethiopia", + Iso2 = "ET", + Iso3 = "ETH", + Name = "Ethiopia", + NumericCode = "231" + }, + new + { + Id = new Guid("0d4fe6e6-ea1e-d1ce-5134-6c0c1a696a00"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Faroe Islands", + Iso2 = "FO", + Iso3 = "FRO", + Name = "Faroe Islands", + NumericCode = "234" + }, + new + { + Id = new Guid("b86375dc-edbb-922c-9ed4-2f724094a5a2"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Falkland Islands (Malvinas)", + Iso2 = "FK", + Iso3 = "FLK", + Name = "Falkland Islands (Malvinas)", + NumericCode = "238" + }, + new + { + Id = new Guid("0e2a1681-d852-67ae-7387-0d04be9e7fd3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Fiji", + Iso2 = "FJ", + Iso3 = "FJI", + Name = "Fiji", + NumericCode = "242" + }, + new + { + Id = new Guid("5a5d9168-081b-1e02-1fbb-cdfa910e526c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Finland", + Iso2 = "FI", + Iso3 = "FIN", + Name = "Finland", + NumericCode = "246" + }, + new + { + Id = new Guid("b2261c50-1a57-7f1f-d72d-f8c21593874f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "French Republic", + Iso2 = "FR", + Iso3 = "FRA", + Name = "France", + NumericCode = "250" + }, + new + { + Id = new Guid("ac6cde6e-f645-d04e-8afc-0391ecf38a70"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "French Guiana", + Iso2 = "GF", + Iso3 = "GUF", + Name = "French Guiana", + NumericCode = "254" + }, + new + { + Id = new Guid("11dbce82-a154-7aee-7b5e-d5981f220572"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "French Polynesia", + Iso2 = "PF", + Iso3 = "PYF", + Name = "French Polynesia", + NumericCode = "258" + }, + new + { + Id = new Guid("903bee63-bcf0-0264-6eaf-a8cde95c5f41"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "French Southern Territories", + Iso2 = "TF", + Iso3 = "ATF", + Name = "French Southern Territories", + NumericCode = "260" + }, + new + { + Id = new Guid("4826bc0f-235e-572f-2b1a-21f1c9e05f83"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Gabonese Republic", + Iso2 = "GA", + Iso3 = "GAB", + Name = "Gabon", + NumericCode = "266" + }, + new + { + Id = new Guid("a40b91b3-cc13-2470-65f0-a0fdc946f2a2"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of the Gambia", + Iso2 = "GM", + Iso3 = "GMB", + Name = "Gambia", + NumericCode = "270" + }, + new + { + Id = new Guid("980176e8-7d9d-9729-b3e9-ebc455fb8fc4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Georgia", + Iso2 = "GE", + Iso3 = "GEO", + Name = "Georgia", + NumericCode = "268" + }, + new + { + Id = new Guid("46ef1468-86f6-0c99-f4e9-46f966167b05"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Federal Republic of Germany", + Iso2 = "DE", + Iso3 = "DEU", + Name = "Germany", + NumericCode = "276" + }, + new + { + Id = new Guid("6d0c77a7-a4aa-c2bd-2db6-0e2ad2d61f8a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Ghana", + Iso2 = "GH", + Iso3 = "GHA", + Name = "Ghana", + NumericCode = "288" + }, + new + { + Id = new Guid("8e0de349-f9ab-2bca-3910-efd48bf1170a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Gibraltar", + Iso2 = "GI", + Iso3 = "GIB", + Name = "Gibraltar", + NumericCode = "292" + }, + new + { + Id = new Guid("4fc1a9dc-cc74-f6ce-5743-c5cee8d709ef"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Hellenic Republic of Greece", + Iso2 = "GR", + Iso3 = "GRC", + Name = "Greece", + NumericCode = "300" + }, + new + { + Id = new Guid("2f00fe86-a06b-dc95-0ea7-4520d1dec784"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Greenland", + Iso2 = "GL", + Iso3 = "GRL", + Name = "Greenland", + NumericCode = "304" + }, + new + { + Id = new Guid("ff5b4d88-c179-ff0d-6285-cf46ba475d7d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Grenada", + Iso2 = "GD", + Iso3 = "GRD", + Name = "Grenada", + NumericCode = "308" + }, + new + { + Id = new Guid("3bcd2aad-fb69-09f4-1ad7-2c7f5fa23f9f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Guadeloupe", + Iso2 = "GP", + Iso3 = "GLP", + Name = "Guadeloupe", + NumericCode = "312" + }, + new + { + Id = new Guid("096a8586-9702-6fec-5f6a-6eb3b7b7837f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Guam", + Iso2 = "GU", + Iso3 = "GUM", + Name = "Guam", + NumericCode = "316" + }, + new + { + Id = new Guid("d24b46ba-8e9d-2a09-7995-e35e8ae54f6b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Guatemala", + Iso2 = "GT", + Iso3 = "GTM", + Name = "Guatemala", + NumericCode = "320" + }, + new + { + Id = new Guid("5b0ee3be-596d-bdc1-f101-00ef33170655"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Bailiwick of Guernsey", + Iso2 = "GG", + Iso3 = "GGY", + Name = "Guernsey", + NumericCode = "831" + }, + new + { + Id = new Guid("3ffe68ca-7350-175b-4e95-0c34f54dc1f4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Guinea", + Iso2 = "GN", + Iso3 = "GIN", + Name = "Guinea", + NumericCode = "324" + }, + new + { + Id = new Guid("a9a5f440-a9bd-487d-e7f4-914df0d52fa6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Guinea-Bissau", + Iso2 = "GW", + Iso3 = "GNB", + Name = "Guinea-Bissau", + NumericCode = "624" + }, + new + { + Id = new Guid("a9949ac7-8d2d-32b5-3f4f-e2a3ef291a67"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Co-operative Republic of Guyana", + Iso2 = "GY", + Iso3 = "GUY", + Name = "Guyana", + NumericCode = "328" + }, + new + { + Id = new Guid("2bebebe4-edaa-9160-5a0c-4d99048bd8d5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Haiti", + Iso2 = "HT", + Iso3 = "HTI", + Name = "Haiti", + NumericCode = "332" + }, + new + { + Id = new Guid("592b4658-a210-ab0a-5660-3dcc673dc581"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Heard Island and McDonald Islands", + Iso2 = "HM", + Iso3 = "HMD", + Name = "Heard Island and McDonald Islands", + NumericCode = "334" + }, + new + { + Id = new Guid("d0e11a85-6623-69f5-bd95-3779dfeec297"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Holy See (Vatican City State)", + Iso2 = "VA", + Iso3 = "VAT", + Name = "Holy See (Vatican City State)", + NumericCode = "336" + }, + new + { + Id = new Guid("0aebadaa-91b2-8794-c153-4f903a2a1004"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Honduras", + Iso2 = "HN", + Iso3 = "HND", + Name = "Honduras", + NumericCode = "340" + }, + new + { + Id = new Guid("500bb0de-61f5-dc9b-0488-1c507456ea4d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Hong Kong Special Administrative Region of China", + Iso2 = "HK", + Iso3 = "HKG", + Name = "Hong Kong", + NumericCode = "344" + }, + new + { + Id = new Guid("dcf19e1d-74a6-7b8b-a5ed-76b94a8ac2a7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Hungary", + Iso2 = "HU", + Iso3 = "HUN", + Name = "Hungary", + NumericCode = "348" + }, + new + { + Id = new Guid("4ee6400d-5534-7c67-1521-870d6b732366"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Iceland", + Iso2 = "IS", + Iso3 = "ISL", + Name = "Iceland", + NumericCode = "352" + }, + new + { + Id = new Guid("72d8d1fe-d5f6-f440-1185-82ec69427027"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of India", + Iso2 = "IN", + Iso3 = "IND", + Name = "India", + NumericCode = "356" + }, + new + { + Id = new Guid("1d974338-decf-08e5-3e62-89e1bbdbb003"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Indonesia", + Iso2 = "ID", + Iso3 = "IDN", + Name = "Indonesia", + NumericCode = "360" + }, + new + { + Id = new Guid("b3460bab-2a35-57bc-17e2-4e117748bbb1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Islamic Republic of Iran", + Iso2 = "IR", + Iso3 = "IRN", + Name = "Iran", + NumericCode = "364" + }, + new + { + Id = new Guid("6c8be2e6-8c2e-cd80-68a6-d18c80d0eedc"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Iraq", + Iso2 = "IQ", + Iso3 = "IRQ", + Name = "Iraq", + NumericCode = "368" + }, + new + { + Id = new Guid("294978f0-2702-d35d-cfc4-e676148aea2e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Ireland", + Iso2 = "IE", + Iso3 = "IRL", + Name = "Ireland", + NumericCode = "372" + }, + new + { + Id = new Guid("a1b83be0-6a9b-c8a9-2cce-531705a29664"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Isle of Man", + Iso2 = "IM", + Iso3 = "IMN", + Name = "Isle of Man", + NumericCode = "833" + }, + new + { + Id = new Guid("7ffa909b-8a6a-3028-9589-fcc3dfa530a8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "State of Israel", + Iso2 = "IL", + Iso3 = "ISR", + Name = "Israel", + NumericCode = "376" + }, + new + { + Id = new Guid("7bbf15f4-a907-c0b2-7029-144aafb3c59d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Italy", + Iso2 = "IT", + Iso3 = "ITA", + Name = "Italy", + NumericCode = "380" + }, + new + { + Id = new Guid("6699efd5-0939-7812-315e-21f37b279ee9"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Jamaica", + Iso2 = "JM", + Iso3 = "JAM", + Name = "Jamaica", + NumericCode = "388" + }, + new + { + Id = new Guid("13c69e56-375d-8a7e-c326-be2be2fd4cd8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Japan", + Iso2 = "JP", + Iso3 = "JPN", + Name = "Japan", + NumericCode = "392" + }, + new + { + Id = new Guid("65d871be-4a1d-a632-9cdb-62e3ff04928d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Bailiwick of Jersey", + Iso2 = "JE", + Iso3 = "JEY", + Name = "Jersey", + NumericCode = "832" + }, + new + { + Id = new Guid("9ae7ad80-9ce7-6657-75cf-28b4c0254238"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Hashemite Kingdom of Jordan", + Iso2 = "JO", + Iso3 = "JOR", + Name = "Jordan", + NumericCode = "400" + }, + new + { + Id = new Guid("b723594d-7800-0f37-db86-0f6b85bb6cf9"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Kazakhstan", + Iso2 = "KZ", + Iso3 = "KAZ", + Name = "Kazakhstan", + NumericCode = "398" + }, + new + { + Id = new Guid("b32fe2b5-a06e-0d76-ffd2-f186c3e64b15"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Kenya", + Iso2 = "KE", + Iso3 = "KEN", + Name = "Kenya", + NumericCode = "404" + }, + new + { + Id = new Guid("914618fd-86f9-827a-91b8-826f0db9e02d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Kiribati", + Iso2 = "KI", + Iso3 = "KIR", + Name = "Kiribati", + NumericCode = "296" + }, + new + { + Id = new Guid("f70ae426-f130-5637-0383-a5b63a06c500"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Democratic People's Republic of Korea", + Iso2 = "KP", + Iso3 = "PRK", + Name = "Korea", + NumericCode = "408" + }, + new + { + Id = new Guid("7bf934fa-bcf4-80b5-fd7d-ab4cca45c67b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Korea", + Iso2 = "KR", + Iso3 = "KOR", + Name = "Korea", + NumericCode = "410" + }, + new + { + Id = new Guid("b6f70436-9515-7ef8-af57-aad196503499"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "State of Kuwait", + Iso2 = "KW", + Iso3 = "KWT", + Name = "Kuwait", + NumericCode = "414" + }, + new + { + Id = new Guid("0932ed88-c79f-591a-d684-9a77735f947e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kyrgyz Republic", + Iso2 = "KG", + Iso3 = "KGZ", + Name = "Kyrgyz Republic", + NumericCode = "417" + }, + new + { + Id = new Guid("c4754c00-cfa5-aa6f-a9c8-a200457de7a8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Lao People's Democratic Republic", + Iso2 = "LA", + Iso3 = "LAO", + Name = "Lao People's Democratic Republic", + NumericCode = "418" + }, + new + { + Id = new Guid("9205dbfc-60cd-91d9-b0b8-8a18a3755286"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Latvia", + Iso2 = "LV", + Iso3 = "LVA", + Name = "Latvia", + NumericCode = "428" + }, + new + { + Id = new Guid("1e5c0dcc-83e9-f275-c81d-3bc49f88e70c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Lebanese Republic", + Iso2 = "LB", + Iso3 = "LBN", + Name = "Lebanon", + NumericCode = "422" + }, + new + { + Id = new Guid("bf210ee6-6c75-cf08-052e-5c3e608aed15"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Lesotho", + Iso2 = "LS", + Iso3 = "LSO", + Name = "Lesotho", + NumericCode = "426" + }, + new + { + Id = new Guid("ee926d09-799c-7c6a-2419-a6ff814b2c03"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Liberia", + Iso2 = "LR", + Iso3 = "LBR", + Name = "Liberia", + NumericCode = "430" + }, + new + { + Id = new Guid("695c85b3-a6c6-c217-9be8-3baebc7719ce"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "State of Libya", + Iso2 = "LY", + Iso3 = "LBY", + Name = "Libya", + NumericCode = "434" + }, + new + { + Id = new Guid("9d6e6446-185e-235e-8771-9eb2d19f22e7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Principality of Liechtenstein", + Iso2 = "LI", + Iso3 = "LIE", + Name = "Liechtenstein", + NumericCode = "438" + }, + new + { + Id = new Guid("52538361-bbdf-fafb-e434-5655fc7451e5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Lithuania", + Iso2 = "LT", + Iso3 = "LTU", + Name = "Lithuania", + NumericCode = "440" + }, + new + { + Id = new Guid("70673250-4cc3-3ba1-a42c-6b62ea8ab1d5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Grand Duchy of Luxembourg", + Iso2 = "LU", + Iso3 = "LUX", + Name = "Luxembourg", + NumericCode = "442" + }, + new + { + Id = new Guid("8d32a12d-3230-1431-8fbb-72c789184345"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Macao Special Administrative Region of China", + Iso2 = "MO", + Iso3 = "MAC", + Name = "Macao", + NumericCode = "446" + }, + new + { + Id = new Guid("976e496f-ca38-d113-1697-8af2d9a3b159"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Madagascar", + Iso2 = "MG", + Iso3 = "MDG", + Name = "Madagascar", + NumericCode = "450" + }, + new + { + Id = new Guid("fbf4479d-d70d-c76e-b053-699362443a17"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Malawi", + Iso2 = "MW", + Iso3 = "MWI", + Name = "Malawi", + NumericCode = "454" + }, + new + { + Id = new Guid("d292ea2d-fbb6-7c1e-cb7d-23d552673776"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Malaysia", + Iso2 = "MY", + Iso3 = "MYS", + Name = "Malaysia", + NumericCode = "458" + }, + new + { + Id = new Guid("1d2aa3ab-e1c3-8c76-9be6-7a3b3eca35da"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Maldives", + Iso2 = "MV", + Iso3 = "MDV", + Name = "Maldives", + NumericCode = "462" + }, + new + { + Id = new Guid("c03d71a5-b215-8672-ec0c-dd8fe5c20e05"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Mali", + Iso2 = "ML", + Iso3 = "MLI", + Name = "Mali", + NumericCode = "466" + }, + new + { + Id = new Guid("f0219540-8b2c-bd29-4f76-b832de53a56f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Malta", + Iso2 = "MT", + Iso3 = "MLT", + Name = "Malta", + NumericCode = "470" + }, + new + { + Id = new Guid("943d2419-2ca6-95f8-9c3b-ed445aea0371"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of the Marshall Islands", + Iso2 = "MH", + Iso3 = "MHL", + Name = "Marshall Islands", + NumericCode = "584" + }, + new + { + Id = new Guid("fc78fa89-b372-dcf7-7f1c-1e1bb14ecbe7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Martinique", + Iso2 = "MQ", + Iso3 = "MTQ", + Name = "Martinique", + NumericCode = "474" + }, + new + { + Id = new Guid("74da982f-cf20-e1b4-517b-a040511af23c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Islamic Republic of Mauritania", + Iso2 = "MR", + Iso3 = "MRT", + Name = "Mauritania", + NumericCode = "478" + }, + new + { + Id = new Guid("1b634ca2-2b90-7e54-715a-74cee7e4d294"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Mauritius", + Iso2 = "MU", + Iso3 = "MUS", + Name = "Mauritius", + NumericCode = "480" + }, + new + { + Id = new Guid("08a999e4-e420-b864-2864-bef78c138448"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Mayotte", + Iso2 = "YT", + Iso3 = "MYT", + Name = "Mayotte", + NumericCode = "175" + }, + new + { + Id = new Guid("a9940e91-93ef-19f7-79c0-00d31c6a9f87"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "United Mexican States", + Iso2 = "MX", + Iso3 = "MEX", + Name = "Mexico", + NumericCode = "484" + }, + new + { + Id = new Guid("a2da72dc-5866-ba2f-6283-6575af00ade5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Federated States of Micronesia", + Iso2 = "FM", + Iso3 = "FSM", + Name = "Micronesia", + NumericCode = "583" + }, + new + { + Id = new Guid("daf6bc7a-92c4-ef47-3111-e13199b86b90"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Moldova", + Iso2 = "MD", + Iso3 = "MDA", + Name = "Moldova", + NumericCode = "498" + }, + new + { + Id = new Guid("5cab34ca-8c74-0766-c7ca-4a826b44c5bd"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Principality of Monaco", + Iso2 = "MC", + Iso3 = "MCO", + Name = "Monaco", + NumericCode = "492" + }, + new + { + Id = new Guid("c522b3d3-74cc-846f-0394-737dff4d2b1a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Mongolia", + Iso2 = "MN", + Iso3 = "MNG", + Name = "Mongolia", + NumericCode = "496" + }, + new + { + Id = new Guid("86db2170-be87-fd1d-bf57-05ff61ae83a7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Montenegro", + Iso2 = "ME", + Iso3 = "MNE", + Name = "Montenegro", + NumericCode = "499" + }, + new + { + Id = new Guid("50e5954d-7cb4-2201-b96c-f2a846ab3ae3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Montserrat", + Iso2 = "MS", + Iso3 = "MSR", + Name = "Montserrat", + NumericCode = "500" + }, + new + { + Id = new Guid("915805f0-9ff0-48ff-39b3-44a4af5e0482"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Morocco", + Iso2 = "MA", + Iso3 = "MAR", + Name = "Morocco", + NumericCode = "504" + }, + new + { + Id = new Guid("10b58d9b-42ef-edb8-54a3-712636fda55a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Mozambique", + Iso2 = "MZ", + Iso3 = "MOZ", + Name = "Mozambique", + NumericCode = "508" + }, + new + { + Id = new Guid("015a9f83-6e57-bc1e-8227-24a4e5248582"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of the Union of Myanmar", + Iso2 = "MM", + Iso3 = "MMR", + Name = "Myanmar", + NumericCode = "104" + }, + new + { + Id = new Guid("0c0fef20-0e8d-98ea-7724-12cea9b3b926"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Namibia", + Iso2 = "NA", + Iso3 = "NAM", + Name = "Namibia", + NumericCode = "516" + }, + new + { + Id = new Guid("e3bacefb-d79b-1569-a91c-43d7e4f6f230"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Nauru", + Iso2 = "NR", + Iso3 = "NRU", + Name = "Nauru", + NumericCode = "520" + }, + new + { + Id = new Guid("e81c5db3-401a-e047-001e-045f39bef8ef"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Nepal", + Iso2 = "NP", + Iso3 = "NPL", + Name = "Nepal", + NumericCode = "524" + }, + new + { + Id = new Guid("cfff3443-1378-9c7d-9d58-66146d7f29a6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of the Netherlands", + Iso2 = "NL", + Iso3 = "NLD", + Name = "Netherlands", + NumericCode = "528" + }, + new + { + Id = new Guid("4b0729b6-f698-5730-767c-88e2d36691bb"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "New Caledonia", + Iso2 = "NC", + Iso3 = "NCL", + Name = "New Caledonia", + NumericCode = "540" + }, + new + { + Id = new Guid("360e3c61-aaac-fa2f-d731-fc0824c05107"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "New Zealand", + Iso2 = "NZ", + Iso3 = "NZL", + Name = "New Zealand", + NumericCode = "554" + }, + new + { + Id = new Guid("cd0e8275-3def-1de4-8858-61aab36851c4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Nicaragua", + Iso2 = "NI", + Iso3 = "NIC", + Name = "Nicaragua", + NumericCode = "558" + }, + new + { + Id = new Guid("97cd39d5-1aca-8f10-9f5e-3f611d7606d8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Niger", + Iso2 = "NE", + Iso3 = "NER", + Name = "Niger", + NumericCode = "562" + }, + new + { + Id = new Guid("2e1bd9d8-df06-d773-0eb9-98e274b63b43"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Federal Republic of Nigeria", + Iso2 = "NG", + Iso3 = "NGA", + Name = "Nigeria", + NumericCode = "566" + }, + new + { + Id = new Guid("3eea06f4-c085-f619-6d52-b76a5f6fd2b6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Niue", + Iso2 = "NU", + Iso3 = "NIU", + Name = "Niue", + NumericCode = "570" + }, + new + { + Id = new Guid("47804b6a-e705-b925-f4fd-4adf6500180b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Norfolk Island", + Iso2 = "NF", + Iso3 = "NFK", + Name = "Norfolk Island", + NumericCode = "574" + }, + new + { + Id = new Guid("aa0f69b2-93aa-ec51-b43b-60145db79e38"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of North Macedonia", + Iso2 = "MK", + Iso3 = "MKD", + Name = "North Macedonia", + NumericCode = "807" + }, + new + { + Id = new Guid("6ac64a20-5688-ccd0-4eca-88d8a2560079"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Commonwealth of the Northern Mariana Islands", + Iso2 = "MP", + Iso3 = "MNP", + Name = "Northern Mariana Islands", + NumericCode = "580" + }, + new + { + Id = new Guid("914d7923-3ac5-75e8-c8e2-47d72561e35d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Norway", + Iso2 = "NO", + Iso3 = "NOR", + Name = "Norway", + NumericCode = "578" + }, + new + { + Id = new Guid("6c366974-3672-3a2c-2345-0fda33942304"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Sultanate of Oman", + Iso2 = "OM", + Iso3 = "OMN", + Name = "Oman", + NumericCode = "512" + }, + new + { + Id = new Guid("cc7fabfc-4c2b-d9ff-bb45-003bfc2e468a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Islamic Republic of Pakistan", + Iso2 = "PK", + Iso3 = "PAK", + Name = "Pakistan", + NumericCode = "586" + }, + new + { + Id = new Guid("057884bc-3c2e-dea9-6522-b003c9297f7a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Palau", + Iso2 = "PW", + Iso3 = "PLW", + Name = "Palau", + NumericCode = "585" + }, + new + { + Id = new Guid("d6d31cdd-280a-56bc-24a4-a414028d2b67"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "State of Palestine", + Iso2 = "PS", + Iso3 = "PSE", + Name = "Palestine", + NumericCode = "275" + }, + new + { + Id = new Guid("7bf4a786-3733-c670-e85f-03ee3caa6ef9"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Panama", + Iso2 = "PA", + Iso3 = "PAN", + Name = "Panama", + NumericCode = "591" + }, + new + { + Id = new Guid("c926f091-fe96-35b3-56b5-d418d17e0159"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Independent State of Papua New Guinea", + Iso2 = "PG", + Iso3 = "PNG", + Name = "Papua New Guinea", + NumericCode = "598" + }, + new + { + Id = new Guid("db6ce903-ab43-3793-960c-659529bae6df"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Paraguay", + Iso2 = "PY", + Iso3 = "PRY", + Name = "Paraguay", + NumericCode = "600" + }, + new + { + Id = new Guid("75634729-8e4a-4cfd-739d-9f679bfca3ab"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Peru", + Iso2 = "PE", + Iso3 = "PER", + Name = "Peru", + NumericCode = "604" + }, + new + { + Id = new Guid("c93bccaf-1835-3c02-e2ee-c113ced19e43"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of the Philippines", + Iso2 = "PH", + Iso3 = "PHL", + Name = "Philippines", + NumericCode = "608" + }, + new + { + Id = new Guid("a5d0c9af-2022-2b43-9332-eb6a2ce4305d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Pitcairn Islands", + Iso2 = "PN", + Iso3 = "PCN", + Name = "Pitcairn Islands", + NumericCode = "612" + }, + new + { + Id = new Guid("de503629-2607-b948-e279-0509d8109d0f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Poland", + Iso2 = "PL", + Iso3 = "POL", + Name = "Poland", + NumericCode = "616" + }, + new + { + Id = new Guid("2a039b16-2adf-0fb8-3bdf-fbdf14358d9d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Portuguese Republic", + Iso2 = "PT", + Iso3 = "PRT", + Name = "Portugal", + NumericCode = "620" + }, + new + { + Id = new Guid("cd2c97c3-5473-0719-3803-fcacedfe2ea2"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Commonwealth of Puerto Rico", + Iso2 = "PR", + Iso3 = "PRI", + Name = "Puerto Rico", + NumericCode = "630" + }, + new + { + Id = new Guid("067c9448-9ad0-2c21-a1dc-fbdf5a63d18d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "State of Qatar", + Iso2 = "QA", + Iso3 = "QAT", + Name = "Qatar", + NumericCode = "634" + }, + new + { + Id = new Guid("881b4bb8-b6da-c73e-55c0-c9f31c02aaef"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Réunion", + Iso2 = "RE", + Iso3 = "REU", + Name = "Réunion", + NumericCode = "638" + }, + new + { + Id = new Guid("51aa4900-30a6-91b7-2728-071542a064ff"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Romania", + Iso2 = "RO", + Iso3 = "ROU", + Name = "Romania", + NumericCode = "642" + }, + new + { + Id = new Guid("58337ef3-3d24-43e9-a440-832306e7fc07"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Russian Federation", + Iso2 = "RU", + Iso3 = "RUS", + Name = "Russian Federation", + NumericCode = "643" + }, + new + { + Id = new Guid("f5b15ea6-133d-c2c9-7ef9-b0916ea96edb"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Rwanda", + Iso2 = "RW", + Iso3 = "RWA", + Name = "Rwanda", + NumericCode = "646" + }, + new + { + Id = new Guid("77f6f69b-ec41-8818-9395-8d39bf09e653"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Saint Barthélemy", + Iso2 = "BL", + Iso3 = "BLM", + Name = "Saint Barthélemy", + NumericCode = "652" + }, + new + { + Id = new Guid("6a76d068-49e1-da80-ddb4-9ef3d11191e6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Saint Helena, Ascension and Tristan da Cunha", + Iso2 = "SH", + Iso3 = "SHN", + Name = "Saint Helena, Ascension and Tristan da Cunha", + NumericCode = "654" + }, + new + { + Id = new Guid("fa633273-9866-840d-9739-c6c957901e46"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Federation of Saint Kitts and Nevis", + Iso2 = "KN", + Iso3 = "KNA", + Name = "Saint Kitts and Nevis", + NumericCode = "659" + }, + new + { + Id = new Guid("220e980a-7363-0150-c250-89e83b967fb4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Saint Lucia", + Iso2 = "LC", + Iso3 = "LCA", + Name = "Saint Lucia", + NumericCode = "662" + }, + new + { + Id = new Guid("899c2a9f-f35d-5a49-a6cd-f92531bb2266"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Saint Martin (French part)", + Iso2 = "MF", + Iso3 = "MAF", + Name = "Saint Martin", + NumericCode = "663" + }, + new + { + Id = new Guid("5476986b-11a4-8463-9bd7-0f7354ec7a20"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Saint Pierre and Miquelon", + Iso2 = "PM", + Iso3 = "SPM", + Name = "Saint Pierre and Miquelon", + NumericCode = "666" + }, + new + { + Id = new Guid("2f49855b-ff93-c399-d72a-121f2bf28bc9"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Saint Vincent and the Grenadines", + Iso2 = "VC", + Iso3 = "VCT", + Name = "Saint Vincent and the Grenadines", + NumericCode = "670" + }, + new + { + Id = new Guid("a7c4c9db-8fe4-7d43-e830-1a70954970c3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Independent State of Samoa", + Iso2 = "WS", + Iso3 = "WSM", + Name = "Samoa", + NumericCode = "882" + }, + new + { + Id = new Guid("0a25f96f-5173-2fff-a2f8-c6872393edf6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of San Marino", + Iso2 = "SM", + Iso3 = "SMR", + Name = "San Marino", + NumericCode = "674" + }, + new + { + Id = new Guid("766c1ebb-78c1-bada-37fb-c45d1bd4baff"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Democratic Republic of Sao Tome and Principe", + Iso2 = "ST", + Iso3 = "STP", + Name = "Sao Tome and Principe", + NumericCode = "678" + }, + new + { + Id = new Guid("a8f30b36-4a25-3fb9-c69e-84ce6640d785"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Saudi Arabia", + Iso2 = "SA", + Iso3 = "SAU", + Name = "Saudi Arabia", + NumericCode = "682" + }, + new + { + Id = new Guid("3175ac19-c801-0b87-8e66-7480a40dcf1e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Senegal", + Iso2 = "SN", + Iso3 = "SEN", + Name = "Senegal", + NumericCode = "686" + }, + new + { + Id = new Guid("971c7e66-c6e3-71f4-580a-5caf2852f9f4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Serbia", + Iso2 = "RS", + Iso3 = "SRB", + Name = "Serbia", + NumericCode = "688" + }, + new + { + Id = new Guid("2167da32-4f80-d31d-226c-0551970304eb"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Seychelles", + Iso2 = "SC", + Iso3 = "SYC", + Name = "Seychelles", + NumericCode = "690" + }, + new + { + Id = new Guid("b0f4bdfa-17dd-9714-4fe8-3c3b1f010ffa"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Sierra Leone", + Iso2 = "SL", + Iso3 = "SLE", + Name = "Sierra Leone", + NumericCode = "694" + }, + new + { + Id = new Guid("3ce3d958-7341-bd79-f294-f2e6907c186c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Singapore", + Iso2 = "SG", + Iso3 = "SGP", + Name = "Singapore", + NumericCode = "702" + }, + new + { + Id = new Guid("141e589a-7046-a265-d2f6-b2f85e6eeadd"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Sint Maarten (Dutch part)", + Iso2 = "SX", + Iso3 = "SXM", + Name = "Sint Maarten (Dutch part)", + NumericCode = "534" + }, + new + { + Id = new Guid("3252e51a-5bc1-f065-7101-5b34ba493dc4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Slovakia (Slovak Republic)", + Iso2 = "SK", + Iso3 = "SVK", + Name = "Slovakia (Slovak Republic)", + NumericCode = "703" + }, + new + { + Id = new Guid("357c121b-e28d-1765-e699-cc4ec5ff86fc"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Slovenia", + Iso2 = "SI", + Iso3 = "SVN", + Name = "Slovenia", + NumericCode = "705" + }, + new + { + Id = new Guid("7453c201-ecf1-d3dd-0409-e94d0733173b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Solomon Islands", + Iso2 = "SB", + Iso3 = "SLB", + Name = "Solomon Islands", + NumericCode = "090" + }, + new + { + Id = new Guid("802c05db-3866-545d-dc1a-a02c83ea6cf6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Federal Republic of Somalia", + Iso2 = "SO", + Iso3 = "SOM", + Name = "Somalia", + NumericCode = "706" + }, + new + { + Id = new Guid("ebf38b9a-6fbe-6e82-3977-2c4763bea072"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of South Africa", + Iso2 = "ZA", + Iso3 = "ZAF", + Name = "South Africa", + NumericCode = "710" + }, + new + { + Id = new Guid("6af4d03e-edd0-d98a-bc7e-abc7df87d3dd"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "South Georgia and the South Sandwich Islands", + Iso2 = "GS", + Iso3 = "SGS", + Name = "South Georgia and the South Sandwich Islands", + NumericCode = "239" + }, + new + { + Id = new Guid("6aac6f0e-d13a-a629-4c2b-9d6eaf6680e4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of South Sudan", + Iso2 = "SS", + Iso3 = "SSD", + Name = "South Sudan", + NumericCode = "728" + }, + new + { + Id = new Guid("414a34ce-2781-8f96-2bd0-7ada86c8cf38"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Spain", + Iso2 = "ES", + Iso3 = "ESP", + Name = "Spain", + NumericCode = "724" + }, + new + { + Id = new Guid("687320c8-e841-c911-6d30-b14eb998feb6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Democratic Socialist Republic of Sri Lanka", + Iso2 = "LK", + Iso3 = "LKA", + Name = "Sri Lanka", + NumericCode = "144" + }, + new + { + Id = new Guid("f0965449-6b15-6c1a-f5cb-ebd2d575c02c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Sudan", + Iso2 = "SD", + Iso3 = "SDN", + Name = "Sudan", + NumericCode = "729" + }, + new + { + Id = new Guid("61ba1844-4d33-84b4-dbac-70718aa91d59"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Suriname", + Iso2 = "SR", + Iso3 = "SUR", + Name = "Suriname", + NumericCode = "740" + }, + new + { + Id = new Guid("d525de3a-aecc-07de-0426-68f32af2968e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Svalbard & Jan Mayen Islands", + Iso2 = "SJ", + Iso3 = "SJM", + Name = "Svalbard & Jan Mayen Islands", + NumericCode = "744" + }, + new + { + Id = new Guid("a32a9fc2-677f-43e0-97aa-9e83943d785c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Eswatini", + Iso2 = "SZ", + Iso3 = "SWZ", + Name = "Eswatini", + NumericCode = "748" + }, + new + { + Id = new Guid("0ab731f0-5326-44be-af3a-20aa33ad0f35"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Sweden", + Iso2 = "SE", + Iso3 = "SWE", + Name = "Sweden", + NumericCode = "752" + }, + new + { + Id = new Guid("37c89068-a8e9-87e8-d651-f86fac63673a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Swiss Confederation", + Iso2 = "CH", + Iso3 = "CHE", + Name = "Switzerland", + NumericCode = "756" + }, + new + { + Id = new Guid("c1a923f6-b9ec-78f7-cc1c-7025e3d69d7d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Syrian Arab Republic", + Iso2 = "SY", + Iso3 = "SYR", + Name = "Syrian Arab Republic", + NumericCode = "760" + }, + new + { + Id = new Guid("875060ca-73f6-af3b-d844-1b1416ce4583"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Taiwan, Province of China", + Iso2 = "TW", + Iso3 = "TWN", + Name = "Taiwan", + NumericCode = "158" + }, + new + { + Id = new Guid("2a848549-9777-cf48-a0f2-b32c6f942096"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Tajikistan", + Iso2 = "TJ", + Iso3 = "TJK", + Name = "Tajikistan", + NumericCode = "762" + }, + new + { + Id = new Guid("4736c1ad-54bd-c8e8-d9ee-492a88268de8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "United Republic of Tanzania", + Iso2 = "TZ", + Iso3 = "TZA", + Name = "Tanzania", + NumericCode = "834" + }, + new + { + Id = new Guid("84d58b3d-d131-1506-0792-1b3228b6f71f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Thailand", + Iso2 = "TH", + Iso3 = "THA", + Name = "Thailand", + NumericCode = "764" + }, + new + { + Id = new Guid("fb9a713c-2de1-882a-64b7-0e8fef5d2f7e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Democratic Republic of Timor-Leste", + Iso2 = "TL", + Iso3 = "TLS", + Name = "Timor-Leste", + NumericCode = "626" + }, + new + { + Id = new Guid("9dacf00b-7d0a-d744-cc60-e5fa66371e9d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Togolese Republic", + Iso2 = "TG", + Iso3 = "TGO", + Name = "Togo", + NumericCode = "768" + }, + new + { + Id = new Guid("11765ad0-30f2-bab8-b616-20f88b28b21e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Tokelau", + Iso2 = "TK", + Iso3 = "TKL", + Name = "Tokelau", + NumericCode = "772" + }, + new + { + Id = new Guid("9e7dbdc3-2c8b-e8ae-082b-e02695f8268e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Kingdom of Tonga", + Iso2 = "TO", + Iso3 = "TON", + Name = "Tonga", + NumericCode = "776" + }, + new + { + Id = new Guid("95467997-f989-f456-34b7-0b578302dcba"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Trinidad and Tobago", + Iso2 = "TT", + Iso3 = "TTO", + Name = "Trinidad and Tobago", + NumericCode = "780" + }, + new + { + Id = new Guid("06f8ad57-7133-9a5e-5a83-53052012b014"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Tunisian Republic", + Iso2 = "TN", + Iso3 = "TUN", + Name = "Tunisia", + NumericCode = "788" + }, + new + { + Id = new Guid("f39cca22-449e-9866-3a65-465a5510483e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Türkiye", + Iso2 = "TR", + Iso3 = "TUR", + Name = "Türkiye", + NumericCode = "792" + }, + new + { + Id = new Guid("550ca5df-3995-617c-c39d-437beb400a42"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Turkmenistan", + Iso2 = "TM", + Iso3 = "TKM", + Name = "Turkmenistan", + NumericCode = "795" + }, + new + { + Id = new Guid("0e0fefd5-9a05-fde5-bee9-ef56db7748a1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Turks and Caicos Islands", + Iso2 = "TC", + Iso3 = "TCA", + Name = "Turks and Caicos Islands", + NumericCode = "796" + }, + new + { + Id = new Guid("e0d562ca-f573-3c2f-eb83-f72d4d70d4fc"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Tuvalu", + Iso2 = "TV", + Iso3 = "TUV", + Name = "Tuvalu", + NumericCode = "798" + }, + new + { + Id = new Guid("3e2cccbe-1615-c707-a97b-421a799b2559"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Uganda", + Iso2 = "UG", + Iso3 = "UGA", + Name = "Uganda", + NumericCode = "800" + }, + new + { + Id = new Guid("e087f51c-feba-19b6-5595-fcbdce170411"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Ukraine", + Iso2 = "UA", + Iso3 = "UKR", + Name = "Ukraine", + NumericCode = "804" + }, + new + { + Id = new Guid("29201cbb-ca65-1924-75a9-0c4d4db43001"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "United Arab Emirates", + Iso2 = "AE", + Iso3 = "ARE", + Name = "United Arab Emirates", + NumericCode = "784" + }, + new + { + Id = new Guid("0b3b04b4-9782-79e3-bc55-9ab33b6ae9c7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "United Kingdom of Great Britain & Northern Ireland", + Iso2 = "GB", + Iso3 = "GBR", + Name = "United Kingdom of Great Britain and Northern Ireland", + NumericCode = "826" + }, + new + { + Id = new Guid("cb2e209b-d4c6-6d5c-8901-d989a9188783"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "United States of America", + Iso2 = "US", + Iso3 = "USA", + Name = "United States of America", + NumericCode = "840" + }, + new + { + Id = new Guid("0868cdd3-7f50-5a25-88d6-98c45f9157e3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "United States Minor Outlying Islands", + Iso2 = "UM", + Iso3 = "UMI", + Name = "United States Minor Outlying Islands", + NumericCode = "581" + }, + new + { + Id = new Guid("e1947bdc-ff2c-d2c1-3c55-f1f9bf778578"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "United States Virgin Islands", + Iso2 = "VI", + Iso3 = "VIR", + Name = "United States Virgin Islands", + NumericCode = "850" + }, + new + { + Id = new Guid("8e787470-aae6-575a-fe0b-d65fc78b648a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Eastern Republic of Uruguay", + Iso2 = "UY", + Iso3 = "URY", + Name = "Uruguay", + NumericCode = "858" + }, + new + { + Id = new Guid("357369e3-85a8-86f7-91c7-349772ae7744"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Uzbekistan", + Iso2 = "UZ", + Iso3 = "UZB", + Name = "Uzbekistan", + NumericCode = "860" + }, + new + { + Id = new Guid("c98174ef-8198-54ba-2ff1-b93f3c646db8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Vanuatu", + Iso2 = "VU", + Iso3 = "VUT", + Name = "Vanuatu", + NumericCode = "548" + }, + new + { + Id = new Guid("52d9992c-19bd-82b4-9188-11dabcac6171"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Bolivarian Republic of Venezuela", + Iso2 = "VE", + Iso3 = "VEN", + Name = "Venezuela", + NumericCode = "862" + }, + new + { + Id = new Guid("d7236157-d5a7-6b7a-3bc1-69802313fa30"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Socialist Republic of Vietnam", + Iso2 = "VN", + Iso3 = "VNM", + Name = "Vietnam", + NumericCode = "704" + }, + new + { + Id = new Guid("e186a953-7ab3-c009-501c-a754267b770b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Wallis and Futuna", + Iso2 = "WF", + Iso3 = "WLF", + Name = "Wallis and Futuna", + NumericCode = "876" + }, + new + { + Id = new Guid("2f4cc994-53f1-1763-8220-5d89e063804f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Western Sahara", + Iso2 = "EH", + Iso3 = "ESH", + Name = "Western Sahara", + NumericCode = "732" + }, + new + { + Id = new Guid("8c4441fd-8cd4-ff1e-928e-e46f9ca12552"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Yemen", + Iso2 = "YE", + Iso3 = "YEM", + Name = "Yemen", + NumericCode = "887" + }, + new + { + Id = new Guid("ab0b7e83-bf02-16e6-e5ae-46c4bd4c093b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Zambia", + Iso2 = "ZM", + Iso3 = "ZMB", + Name = "Zambia", + NumericCode = "894" + }, + new + { + Id = new Guid("6984f722-6963-d067-d4d4-9fd3ef2edbf6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Zimbabwe", + Iso2 = "ZW", + Iso3 = "ZWE", + Name = "Zimbabwe", + NumericCode = "716" + }, + new + { + Id = new Guid("4b07d158-c1d0-8ab0-a28e-a56d64f910e1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + FullName = "Republic of Kosovo", + Iso2 = "XK", + Iso3 = "XKX", + Name = "Kosovo", + NumericCode = "926" + }); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CitizenReportingEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false); + + b.Property("CountryId") + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("EnglishTitle") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationsVersion") + .HasColumnType("uuid"); + + b.Property("MonitoringNgoForCitizenReportingId") + .HasColumnType("uuid"); + + b.Property("PollingStationsVersion") + .HasColumnType("uuid"); + + b.Property("StartDate") + .HasColumnType("date"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("CountryId"); + + b.HasIndex("MonitoringNgoForCitizenReportingId"); + + b.ToTable("ElectionRounds"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ElectionRoundFormTemplateAggregate.ElectionRoundFormTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FormTemplateId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("FormTemplateId"); + + b.HasIndex("ElectionRoundId", "FormTemplateId") + .IsUnique(); + + b.ToTable("ElectionRoundFormTemplates"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ExportedDataAggregate.ExportedData", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Base64EncodedData") + .HasColumnType("text"); + + b.Property("CitizenReportsFilers") + .HasColumnType("jsonb"); + + b.Property("CompletedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ExportStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExportedDataType") + .IsRequired() + .HasColumnType("text"); + + b.Property("FileName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FormSubmissionsFilters") + .HasColumnType("jsonb"); + + b.Property("IncidentReportsFilters") + .HasColumnType("jsonb"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("QuickReportsFilters") + .HasColumnType("jsonb"); + + b.Property("StartedAt") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("Id"); + + b.HasIndex("OwnerId"); + + b.ToTable("ExportedData", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.FeedbackAggregate.Feedback", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property>("Metadata") + .IsRequired() + .HasColumnType("hstore"); + + b.Property("ObserverId") + .HasColumnType("uuid"); + + b.Property("TimeSubmitted") + .HasColumnType("timestamp with time zone"); + + b.Property("UserFeedback") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("ObserverId"); + + b.ToTable("UserFeedback"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.FormAggregate.Form", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("DefaultLanguage") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DisplayOrder") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FormType") + .IsRequired() + .HasColumnType("text"); + + b.Property("Icon") + .HasColumnType("text"); + + b.Property("Languages") + .IsRequired() + .HasColumnType("text[]"); + + b.Property("LanguagesTranslationStatus") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("MonitoringNgoId") + .HasColumnType("uuid"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("NumberOfQuestions") + .HasColumnType("integer"); + + b.Property("Questions") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("MonitoringNgoId"); + + b.ToTable("Forms"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.FormSubmissionAggregate.FormSubmission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Answers") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FollowUpStatus") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("NotApplicable"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("IsCompleted") + .HasColumnType("boolean"); + + b.Property("LastUpdatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("MonitoringObserverId") + .HasColumnType("uuid"); + + b.Property("NumberOfFlaggedAnswers") + .HasColumnType("integer"); + + b.Property("NumberOfQuestionsAnswered") + .HasColumnType("integer"); + + b.Property("PollingStationId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("FormId"); + + b.HasIndex("MonitoringObserverId"); + + b.HasIndex("PollingStationId"); + + b.HasIndex("ElectionRoundId", "PollingStationId", "MonitoringObserverId", "FormId") + .IsUnique(); + + b.ToTable("FormSubmissions", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.FormTemplateAggregate.FormTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("DefaultLanguage") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("character varying(64)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("FormType") + .IsRequired() + .HasColumnType("text"); + + b.Property("Icon") + .HasColumnType("text"); + + b.Property("Languages") + .IsRequired() + .HasColumnType("text[]"); + + b.Property("LanguagesTranslationStatus") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("NumberOfQuestions") + .HasColumnType("integer"); + + b.Property("Questions") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("FormTemplates"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ImportValidationErrorsAggregate.ImportValidationErrors", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Data") + .IsRequired() + .HasColumnType("text"); + + b.Property("ImportType") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("OriginalFileName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("Id"); + + b.ToTable("ImportValidationErrors"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.IncidentReportAggregate.IncidentReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Answers") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FollowUpStatus") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("NotApplicable"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("IsCompleted") + .HasColumnType("boolean"); + + b.Property("LastUpdatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationDescription") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("LocationType") + .IsRequired() + .HasColumnType("text"); + + b.Property("MonitoringObserverId") + .HasColumnType("uuid"); + + b.Property("NumberOfFlaggedAnswers") + .HasColumnType("integer"); + + b.Property("NumberOfQuestionsAnswered") + .HasColumnType("integer"); + + b.Property("PollingStationId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("FormId"); + + b.HasIndex("MonitoringObserverId"); + + b.HasIndex("PollingStationId"); + + b.ToTable("IncidentReports"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.IncidentReportAttachmentAggregate.IncidentReportAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FileName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FilePath") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("IncidentReportId") + .HasColumnType("uuid"); + + b.Property("IsCompleted") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("MimeType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("UploadedFileName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("FormId"); + + b.HasIndex("IncidentReportId"); + + b.ToTable("IncidentReportAttachments"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.IncidentReportNoteAggregate.IncidentReportNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("IncidentReportId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("character varying(10000)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("FormId"); + + b.HasIndex("IncidentReportId"); + + b.ToTable("IncidentReportNotes"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.LanguageAggregate.Language", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Iso1") + .IsRequired() + .HasMaxLength(2) + .HasColumnType("character varying(2)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NativeName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("Id"); + + b.HasIndex("Iso1") + .IsUnique(); + + b.ToTable("Language"); + + b.HasData( + new + { + Id = new Guid("9c11bb58-5135-453a-1d24-dc20ef0e9031"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AA", + Name = "Afar", + NativeName = "Afaraf" + }, + new + { + Id = new Guid("bd4f1638-6017-733d-f696-b8b4d72664d7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AB", + Name = "Abkhaz", + NativeName = "аҧсуа бызшәа" + }, + new + { + Id = new Guid("29201cbb-ca65-1924-75a9-0c4d4db43001"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AE", + Name = "Avestan", + NativeName = "avesta" + }, + new + { + Id = new Guid("edd4319b-86f3-24cb-248c-71da624c02f7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AF", + Name = "Afrikaans", + NativeName = "Afrikaans" + }, + new + { + Id = new Guid("ef584e3c-03f2-42b0-7139-69d15d21e5a8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AK", + Name = "Akan", + NativeName = "Akan" + }, + new + { + Id = new Guid("688af4c8-9d64-ae1c-147f-b8afd54801e3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AM", + Name = "Amharic", + NativeName = "አማርኛ" + }, + new + { + Id = new Guid("d4d5c45a-d3c2-891e-6d7d-75569c3386ac"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AN", + Name = "Aragonese", + NativeName = "aragonés" + }, + new + { + Id = new Guid("a7afb7b1-b26d-4571-1a1f-3fff738ff21e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AR", + Name = "Arabic", + NativeName = "اَلْعَرَبِيَّةُ" + }, + new + { + Id = new Guid("538114de-7db0-9242-35e6-324fa7eff44d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AS", + Name = "Assamese", + NativeName = "অসমীয়া" + }, + new + { + Id = new Guid("e43a2010-14fc-63a9-f9d3-0ab2a1d0e52f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AV", + Name = "Avaric", + NativeName = "авар мацӀ" + }, + new + { + Id = new Guid("78c6e8af-fcb4-c783-987c-7e1aca3aed64"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AY", + Name = "Aymara", + NativeName = "aymar aru" + }, + new + { + Id = new Guid("008c3138-73d8-dbbc-f1dd-521e4c68bcf1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "AZ", + Name = "Azerbaijani", + NativeName = "azərbaycan dili" + }, + new + { + Id = new Guid("a7716d29-6ef6-b775-51c5-97094536329d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BA", + Name = "Bashkir", + NativeName = "башҡорт теле" + }, + new + { + Id = new Guid("0797a7d5-bbc0-2e52-0de8-14a42fc80baa"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BE", + Name = "Belarusian", + NativeName = "беларуская мова" + }, + new + { + Id = new Guid("46576b73-c05b-7498-5b07-9bbf59b7645d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BG", + Name = "Bulgarian", + NativeName = "български език" + }, + new + { + Id = new Guid("75e4464b-a784-63b8-1ecc-69ee1f09f43f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BI", + Name = "Bislama", + NativeName = "Bislama" + }, + new + { + Id = new Guid("ca2a5560-d4c4-3c87-3090-6f5436310b55"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BM", + Name = "Bambara", + NativeName = "bamanankan" + }, + new + { + Id = new Guid("ed6278e0-436c-9fd9-0b9e-44fd424cbd1b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BN", + Name = "Bengali", + NativeName = "বাংলা" + }, + new + { + Id = new Guid("f33ced84-eb43-fb39-ef79-b266e4d4cd94"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BO", + Name = "Tibetan", + NativeName = "བོད་ཡིག" + }, + new + { + Id = new Guid("5283afbb-2744-e930-2c16-c5ea6b0ff7cc"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BR", + Name = "Breton", + NativeName = "brezhoneg" + }, + new + { + Id = new Guid("46e88019-c521-57b2-d1c0-c0e2478d3b05"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "BS", + Name = "Bosnian", + NativeName = "bosanski jezik" + }, + new + { + Id = new Guid("5c0e654b-8547-5d02-ee7b-d65e3c5c5273"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CA", + Name = "Catalan", + NativeName = "Català" + }, + new + { + Id = new Guid("cd5689d6-7a06-73c7-650e-f6f94387fd88"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CE", + Name = "Chechen", + NativeName = "нохчийн мотт" + }, + new + { + Id = new Guid("37c89068-a8e9-87e8-d651-f86fac63673a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CH", + Name = "Chamorro", + NativeName = "Chamoru" + }, + new + { + Id = new Guid("c64288fc-d941-0615-47f9-28e6c294ce26"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CO", + Name = "Corsican", + NativeName = "corsu" + }, + new + { + Id = new Guid("d13935c1-8956-1399-7c4e-0354795cd37b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CR", + Name = "Cree", + NativeName = "ᓀᐦᐃᔭᐍᐏᐣ" + }, + new + { + Id = new Guid("4def223a-9524-596d-cc29-ab7830c590de"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CS", + Name = "Czech", + NativeName = "čeština" + }, + new + { + Id = new Guid("57765d87-2424-2c86-ad9c-1af58ef3127a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CU", + Name = "Old Church Slavonic", + NativeName = "ѩзыкъ словѣньскъ" + }, + new + { + Id = new Guid("17ed5f0f-e091-94ff-0512-ad291bde94d7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CV", + Name = "Chuvash", + NativeName = "чӑваш чӗлхи" + }, + new + { + Id = new Guid("df20d0d7-9fbe-e725-d966-4fdf9f5c9dfb"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "CY", + Name = "Welsh", + NativeName = "Cymraeg" + }, + new + { + Id = new Guid("b356a541-1383-3c0a-9afd-6aebae3753cb"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "DA", + Name = "Danish", + NativeName = "dansk" + }, + new + { + Id = new Guid("46ef1468-86f6-0c99-f4e9-46f966167b05"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "DE", + Name = "German", + NativeName = "Deutsch" + }, + new + { + Id = new Guid("d8d4f63d-fa65-63dd-a788-de2eec3d24ec"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "DV", + Name = "Divehi", + NativeName = "ދިވެހި" + }, + new + { + Id = new Guid("fee6f04f-c4c1-e3e4-645d-bb6bb703aeb7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "DZ", + Name = "Dzongkha", + NativeName = "རྫོང་ཁ" + }, + new + { + Id = new Guid("2dc643bd-cc6c-eb0c-7314-44123576f0ee"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "EE", + Name = "Ewe", + NativeName = "Eʋegbe" + }, + new + { + Id = new Guid("b9da7f73-60cd-404c-18fb-1bc5bbfffb38"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "EL", + Name = "Greek", + NativeName = "Ελληνικά" + }, + new + { + Id = new Guid("094b3769-68b1-6211-ba2d-6bba92d6a167"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "EN", + Name = "English", + NativeName = "English" + }, + new + { + Id = new Guid("1da84244-fa39-125e-06dc-3c0cb2342ce9"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "EO", + Name = "Esperanto", + NativeName = "Esperanto" + }, + new + { + Id = new Guid("414a34ce-2781-8f96-2bd0-7ada86c8cf38"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ES", + Name = "Spanish", + NativeName = "Español" + }, + new + { + Id = new Guid("e75515a6-63cf-3612-a3a2-befa0d7048a7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ET", + Name = "Estonian", + NativeName = "eesti" + }, + new + { + Id = new Guid("b2a87091-32fb-ba34-a721-bf8b3de5935d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "EU", + Name = "Basque", + NativeName = "euskara" + }, + new + { + Id = new Guid("e9da8997-dee8-0c2d-79d3-05fafc45092e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "FA", + Name = "Persian", + NativeName = "فارسی" + }, + new + { + Id = new Guid("51a86a09-0d0b-31c1-90f1-f237db8e29ad"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "FF", + Name = "Fula", + NativeName = "Fulfulde" + }, + new + { + Id = new Guid("5a5d9168-081b-1e02-1fbb-cdfa910e526c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "FI", + Name = "Finnish", + NativeName = "suomi" + }, + new + { + Id = new Guid("0e2a1681-d852-67ae-7387-0d04be9e7fd3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "FJ", + Name = "Fijian", + NativeName = "vosa Vakaviti" + }, + new + { + Id = new Guid("0d4fe6e6-ea1e-d1ce-5134-6c0c1a696a00"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "FO", + Name = "Faroese", + NativeName = "føroyskt" + }, + new + { + Id = new Guid("b2261c50-1a57-7f1f-d72d-f8c21593874f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "FR", + Name = "French", + NativeName = "Français" + }, + new + { + Id = new Guid("fb429393-f994-0a16-37f9-edc0510fced5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "FY", + Name = "Western Frisian", + NativeName = "Frysk" + }, + new + { + Id = new Guid("4826bc0f-235e-572f-2b1a-21f1c9e05f83"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "GA", + Name = "Irish", + NativeName = "Gaeilge" + }, + new + { + Id = new Guid("ff5b4d88-c179-ff0d-6285-cf46ba475d7d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "GD", + Name = "Scottish Gaelic", + NativeName = "Gàidhlig" + }, + new + { + Id = new Guid("2f00fe86-a06b-dc95-0ea7-4520d1dec784"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "GL", + Name = "Galician", + NativeName = "galego" + }, + new + { + Id = new Guid("3ffe68ca-7350-175b-4e95-0c34f54dc1f4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "GN", + Name = "Guaraní", + NativeName = "Avañe'ẽ" + }, + new + { + Id = new Guid("096a8586-9702-6fec-5f6a-6eb3b7b7837f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "GU", + Name = "Gujarati", + NativeName = "ગુજરાતી" + }, + new + { + Id = new Guid("849b5e66-dc68-a1ed-6ed3-e315fbd0a0e5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "GV", + Name = "Manx", + NativeName = "Gaelg" + }, + new + { + Id = new Guid("2e9cb133-68a7-2f3b-49d1-0921cf42dfae"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HA", + Name = "Hausa", + NativeName = "هَوُسَ" + }, + new + { + Id = new Guid("d685aa26-aee7-716b-9433-1b3411209f4b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HE", + Name = "Hebrew", + NativeName = "עברית" + }, + new + { + Id = new Guid("54686fcd-3f35-f468-7c9c-93217c5084bc"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HI", + Name = "Hindi", + NativeName = "हिन्दी" + }, + new + { + Id = new Guid("87813ec7-4830-e4dc-5ab1-bd599057ede0"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HO", + Name = "Hiri Motu", + NativeName = "Hiri Motu" + }, + new + { + Id = new Guid("1f8be615-5746-277e-d82b-47596b5bb922"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HR", + Name = "Croatian", + NativeName = "Hrvatski" + }, + new + { + Id = new Guid("2bebebe4-edaa-9160-5a0c-4d99048bd8d5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HT", + Name = "Haitian", + NativeName = "Kreyòl ayisyen" + }, + new + { + Id = new Guid("dcf19e1d-74a6-7b8b-a5ed-76b94a8ac2a7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HU", + Name = "Hungarian", + NativeName = "magyar" + }, + new + { + Id = new Guid("d832c50a-112e-4591-9432-4ada24bc85b2"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HY", + Name = "Armenian", + NativeName = "Հայերեն" + }, + new + { + Id = new Guid("d5bffdfb-6a8e-6d9f-2e59-4ada912acdba"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "HZ", + Name = "Herero", + NativeName = "Otjiherero" + }, + new + { + Id = new Guid("7f065da7-4ba4-81ca-5126-dbf606a73907"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "IA", + Name = "Interlingua", + NativeName = "Interlingua" + }, + new + { + Id = new Guid("1d974338-decf-08e5-3e62-89e1bbdbb003"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ID", + Name = "Indonesian", + NativeName = "Bahasa Indonesia" + }, + new + { + Id = new Guid("294978f0-2702-d35d-cfc4-e676148aea2e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "IE", + Name = "Interlingue", + NativeName = "Interlingue" + }, + new + { + Id = new Guid("caddae27-283a-82b2-9365-76a3d6c49eee"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "IG", + Name = "Igbo", + NativeName = "Asụsụ Igbo" + }, + new + { + Id = new Guid("f21f562e-5c35-4806-4efc-416619b5b7f7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "II", + Name = "Nuosu", + NativeName = "ꆈꌠ꒿ Nuosuhxop" + }, + new + { + Id = new Guid("23785991-fef4-e625-4d3b-b6ac364d0fa0"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "IK", + Name = "Inupiaq", + NativeName = "Iñupiaq" + }, + new + { + Id = new Guid("b8b09512-ea4c-4a61-9331-304f55324ef7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "IO", + Name = "Ido", + NativeName = "Ido" + }, + new + { + Id = new Guid("4ee6400d-5534-7c67-1521-870d6b732366"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "IS", + Name = "Icelandic", + NativeName = "Íslenska" + }, + new + { + Id = new Guid("7bbf15f4-a907-c0b2-7029-144aafb3c59d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "IT", + Name = "Italian", + NativeName = "Italiano" + }, + new + { + Id = new Guid("899392d7-d54f-a1c6-407a-1bada9b85fdd"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "IU", + Name = "Inuktitut", + NativeName = "ᐃᓄᒃᑎᑐᑦ" + }, + new + { + Id = new Guid("6857242c-f772-38b5-b5a2-c8e8b9db551f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "JA", + Name = "Japanese", + NativeName = "日本語" + }, + new + { + Id = new Guid("e7532b00-3b1b-ff2c-b7c0-26bd7e91af55"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "JV", + Name = "Javanese", + NativeName = "basa Jawa" + }, + new + { + Id = new Guid("9204928b-c569-ef6a-446e-4853aee439b0"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KA", + Name = "Georgian", + NativeName = "ქართული" + }, + new + { + Id = new Guid("0932ed88-c79f-591a-d684-9a77735f947e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KG", + Name = "Kongo", + NativeName = "Kikongo" + }, + new + { + Id = new Guid("914618fd-86f9-827a-91b8-826f0db9e02d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KI", + Name = "Kikuyu", + NativeName = "Gĩkũyũ" + }, + new + { + Id = new Guid("80ecea2c-8969-1929-0d4a-39ed2324abc6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KJ", + Name = "Kwanyama", + NativeName = "Kuanyama" + }, + new + { + Id = new Guid("b6b2351f-4f1e-c92f-0e9a-a915f4cc5fa6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KK", + Name = "Kazakh", + NativeName = "қазақ тілі" + }, + new + { + Id = new Guid("081a5fdb-445a-015a-1e36-f2e5014265ae"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KL", + Name = "Kalaallisut", + NativeName = "kalaallisut" + }, + new + { + Id = new Guid("5e7a08f2-7d59-bcdb-7ddd-876b87181420"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KM", + Name = "Khmer", + NativeName = "ខេមរភាសា" + }, + new + { + Id = new Guid("fa633273-9866-840d-9739-c6c957901e46"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KN", + Name = "Kannada", + NativeName = "ಕನ್ನಡ" + }, + new + { + Id = new Guid("74f19a84-b1c5-fa2d-8818-2220b80a3056"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KO", + Name = "Korean", + NativeName = "한국어" + }, + new + { + Id = new Guid("7bf934fa-bcf4-80b5-fd7d-ab4cca45c67b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KR", + Name = "Kanuri", + NativeName = "Kanuri" + }, + new + { + Id = new Guid("eace47f6-5499-f4f0-8f97-ed165b681d84"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KS", + Name = "Kashmiri", + NativeName = "कश्मीरी" + }, + new + { + Id = new Guid("7451108d-ad49-940a-d479-4d868b62a7c6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KU", + Name = "Kurdish", + NativeName = "Kurdî" + }, + new + { + Id = new Guid("78b7020d-8b82-3fae-2049-30e490ae1faf"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KV", + Name = "Komi", + NativeName = "коми кыв" + }, + new + { + Id = new Guid("b6f70436-9515-7ef8-af57-aad196503499"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KW", + Name = "Cornish", + NativeName = "Kernewek" + }, + new + { + Id = new Guid("3c5828e0-16a8-79ba-4e5c-9b45065df113"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "KY", + Name = "Kyrgyz", + NativeName = "Кыргызча" + }, + new + { + Id = new Guid("c4754c00-cfa5-aa6f-a9c8-a200457de7a8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LA", + Name = "Latin", + NativeName = "latine" + }, + new + { + Id = new Guid("1e5c0dcc-83e9-f275-c81d-3bc49f88e70c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LB", + Name = "Luxembourgish", + NativeName = "Lëtzebuergesch" + }, + new + { + Id = new Guid("80b770b8-4797-3d62-ef66-1ded7b0da0e5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LG", + Name = "Ganda", + NativeName = "Luganda" + }, + new + { + Id = new Guid("9d6e6446-185e-235e-8771-9eb2d19f22e7"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LI", + Name = "Limburgish", + NativeName = "Limburgs" + }, + new + { + Id = new Guid("ca44a869-d3b6-052d-1e1a-ad4e3682a2ed"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LN", + Name = "Lingala", + NativeName = "Lingála" + }, + new + { + Id = new Guid("e9ad0bec-7dee-bd01-9528-1fc74d1d78dd"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LO", + Name = "Lao", + NativeName = "ພາສາລາວ" + }, + new + { + Id = new Guid("52538361-bbdf-fafb-e434-5655fc7451e5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LT", + Name = "Lithuanian", + NativeName = "lietuvių kalba" + }, + new + { + Id = new Guid("70673250-4cc3-3ba1-a42c-6b62ea8ab1d5"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LU", + Name = "Luba-Katanga", + NativeName = "Kiluba" + }, + new + { + Id = new Guid("9205dbfc-60cd-91d9-b0b8-8a18a3755286"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "LV", + Name = "Latvian", + NativeName = "latviešu valoda" + }, + new + { + Id = new Guid("976e496f-ca38-d113-1697-8af2d9a3b159"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MG", + Name = "Malagasy", + NativeName = "fiteny malagasy" + }, + new + { + Id = new Guid("943d2419-2ca6-95f8-9c3b-ed445aea0371"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MH", + Name = "Marshallese", + NativeName = "Kajin M̧ajeļ" + }, + new + { + Id = new Guid("54726f17-03b8-8af3-0359-c42d8fe8459d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MI", + Name = "Māori", + NativeName = "te reo Māori" + }, + new + { + Id = new Guid("aa0f69b2-93aa-ec51-b43b-60145db79e38"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MK", + Name = "Macedonian", + NativeName = "македонски јазик" + }, + new + { + Id = new Guid("c03d71a5-b215-8672-ec0c-dd8fe5c20e05"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ML", + Name = "Malayalam", + NativeName = "മലയാളം" + }, + new + { + Id = new Guid("c522b3d3-74cc-846f-0394-737dff4d2b1a"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MN", + Name = "Mongolian", + NativeName = "Монгол хэл" + }, + new + { + Id = new Guid("74da982f-cf20-e1b4-517b-a040511af23c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MR", + Name = "Marathi", + NativeName = "मराठी" + }, + new + { + Id = new Guid("50e5954d-7cb4-2201-b96c-f2a846ab3ae3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MS", + Name = "Malay", + NativeName = "Bahasa Melayu" + }, + new + { + Id = new Guid("f0219540-8b2c-bd29-4f76-b832de53a56f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MT", + Name = "Maltese", + NativeName = "Malti" + }, + new + { + Id = new Guid("d292ea2d-fbb6-7c1e-cb7d-23d552673776"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "MY", + Name = "Burmese", + NativeName = "ဗမာစာ" + }, + new + { + Id = new Guid("0c0fef20-0e8d-98ea-7724-12cea9b3b926"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NA", + Name = "Nauru", + NativeName = "Dorerin Naoero" + }, + new + { + Id = new Guid("4a3aa5a4-473f-45cd-f054-fa0465c476a4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NB", + Name = "Norwegian Bokmål", + NativeName = "Norsk bokmål" + }, + new + { + Id = new Guid("b4292ad3-3ca8-eea5-f3e0-d1983db8f61e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ND", + Name = "Northern Ndebele", + NativeName = "isiNdebele" + }, + new + { + Id = new Guid("97cd39d5-1aca-8f10-9f5e-3f611d7606d8"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NE", + Name = "Nepali", + NativeName = "नेपाली" + }, + new + { + Id = new Guid("2e1bd9d8-df06-d773-0eb9-98e274b63b43"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NG", + Name = "Ndonga", + NativeName = "Owambo" + }, + new + { + Id = new Guid("cfff3443-1378-9c7d-9d58-66146d7f29a6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NL", + Name = "Dutch", + NativeName = "Nederlands" + }, + new + { + Id = new Guid("df41c815-40f8-197a-7a8b-e456d43283d9"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NN", + Name = "Norwegian Nynorsk", + NativeName = "Norsk nynorsk" + }, + new + { + Id = new Guid("914d7923-3ac5-75e8-c8e2-47d72561e35d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NO", + Name = "Norwegian", + NativeName = "Norsk" + }, + new + { + Id = new Guid("e3bacefb-d79b-1569-a91c-43d7e4f6f230"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NR", + Name = "Southern Ndebele", + NativeName = "isiNdebele" + }, + new + { + Id = new Guid("67729f87-ef47-dd3f-65f7-b0f6df0d6384"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NV", + Name = "Navajo", + NativeName = "Diné bizaad" + }, + new + { + Id = new Guid("720b4e12-b001-8d38-7c07-f43194b9645d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "NY", + Name = "Chichewa", + NativeName = "chiCheŵa" + }, + new + { + Id = new Guid("2b6d383a-9ab6-fcdf-bcfe-a4538faca407"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "OC", + Name = "Occitan", + NativeName = "occitan" + }, + new + { + Id = new Guid("9ec46cb5-6c2b-0e22-07c5-eb2fe1b8d2ff"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "OJ", + Name = "Ojibwe", + NativeName = "ᐊᓂᔑᓈᐯᒧᐎᓐ" + }, + new + { + Id = new Guid("6c366974-3672-3a2c-2345-0fda33942304"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "OM", + Name = "Oromo", + NativeName = "Afaan Oromoo" + }, + new + { + Id = new Guid("285b9e82-38af-33ab-79fd-0b4f3fd4f2f1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "OR", + Name = "Oriya", + NativeName = "ଓଡ଼ିଆ" + }, + new + { + Id = new Guid("2d013d34-b258-8fe9-ef52-dd34e82a4672"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "OS", + Name = "Ossetian", + NativeName = "ирон æвзаг" + }, + new + { + Id = new Guid("7bf4a786-3733-c670-e85f-03ee3caa6ef9"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "PA", + Name = "Panjabi", + NativeName = "ਪੰਜਾਬੀ" + }, + new + { + Id = new Guid("d8ef067c-1087-4ff5-8e1f-2291df7ac958"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "PI", + Name = "Pāli", + NativeName = "पाऴि" + }, + new + { + Id = new Guid("de503629-2607-b948-e279-0509d8109d0f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "PL", + Name = "Polish", + NativeName = "Polski" + }, + new + { + Id = new Guid("d6d31cdd-280a-56bc-24a4-a414028d2b67"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "PS", + Name = "Pashto", + NativeName = "پښتو" + }, + new + { + Id = new Guid("2a039b16-2adf-0fb8-3bdf-fbdf14358d9d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "PT", + Name = "Portuguese", + NativeName = "Português" + }, + new + { + Id = new Guid("93fb8ace-4156-12d5-218e-64b7d35129b1"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "QU", + Name = "Quechua", + NativeName = "Runa Simi" + }, + new + { + Id = new Guid("136610e1-8115-9cf1-d671-7950c6483495"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "RM", + Name = "Romansh", + NativeName = "rumantsch grischun" + }, + new + { + Id = new Guid("7a0725cf-311a-4f59-cff8-ad8b43dd226e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "RN", + Name = "Kirundi", + NativeName = "Ikirundi" + }, + new + { + Id = new Guid("51aa4900-30a6-91b7-2728-071542a064ff"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "RO", + Name = "Romanian", + NativeName = "Română" + }, + new + { + Id = new Guid("58337ef3-3d24-43e9-a440-832306e7fc07"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "RU", + Name = "Russian", + NativeName = "Русский" + }, + new + { + Id = new Guid("f5b15ea6-133d-c2c9-7ef9-b0916ea96edb"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "RW", + Name = "Kinyarwanda", + NativeName = "Ikinyarwanda" + }, + new + { + Id = new Guid("a8f30b36-4a25-3fb9-c69e-84ce6640d785"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SA", + Name = "Sanskrit", + NativeName = "संस्कृतम्" + }, + new + { + Id = new Guid("2167da32-4f80-d31d-226c-0551970304eb"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SC", + Name = "Sardinian", + NativeName = "sardu" + }, + new + { + Id = new Guid("f0965449-6b15-6c1a-f5cb-ebd2d575c02c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SD", + Name = "Sindhi", + NativeName = "सिन्धी" + }, + new + { + Id = new Guid("0ab731f0-5326-44be-af3a-20aa33ad0f35"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SE", + Name = "Northern Sami", + NativeName = "Davvisámegiella" + }, + new + { + Id = new Guid("3ce3d958-7341-bd79-f294-f2e6907c186c"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SG", + Name = "Sango", + NativeName = "yângâ tî sängö" + }, + new + { + Id = new Guid("357c121b-e28d-1765-e699-cc4ec5ff86fc"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SI", + Name = "Sinhala", + NativeName = "සිංහල" + }, + new + { + Id = new Guid("3252e51a-5bc1-f065-7101-5b34ba493dc4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SK", + Name = "Slovak", + NativeName = "slovenčina" + }, + new + { + Id = new Guid("b0f4bdfa-17dd-9714-4fe8-3c3b1f010ffa"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SL", + Name = "Slovenian", + NativeName = "slovenščina" + }, + new + { + Id = new Guid("0a25f96f-5173-2fff-a2f8-c6872393edf6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SM", + Name = "Samoan", + NativeName = "gagana fa'a Samoa" + }, + new + { + Id = new Guid("3175ac19-c801-0b87-8e66-7480a40dcf1e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SN", + Name = "Shona", + NativeName = "chiShona" + }, + new + { + Id = new Guid("802c05db-3866-545d-dc1a-a02c83ea6cf6"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SO", + Name = "Somali", + NativeName = "Soomaaliga" + }, + new + { + Id = new Guid("fb1cce84-4a6c-1834-0ff2-6df002e3d56f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SQ", + Name = "Albanian", + NativeName = "Shqip" + }, + new + { + Id = new Guid("61ba1844-4d33-84b4-dbac-70718aa91d59"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SR", + Name = "Serbian", + NativeName = "српски језик" + }, + new + { + Id = new Guid("6aac6f0e-d13a-a629-4c2b-9d6eaf6680e4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SS", + Name = "Swati", + NativeName = "SiSwati" + }, + new + { + Id = new Guid("766c1ebb-78c1-bada-37fb-c45d1bd4baff"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ST", + Name = "Southern Sotho", + NativeName = "Sesotho" + }, + new + { + Id = new Guid("ee1ace14-e945-4767-85ec-3d74be8b516b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SU", + Name = "Sundanese", + NativeName = "Basa Sunda" + }, + new + { + Id = new Guid("4d8bcda4-5598-16cd-b379-97eb7a5e1c29"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SV", + Name = "Swedish", + NativeName = "Svenska" + }, + new + { + Id = new Guid("5f002f07-f2c3-9fa4-2e29-225d116c10a3"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "SW", + Name = "Swahili", + NativeName = "Kiswahili" + }, + new + { + Id = new Guid("8bc44f03-84a5-2afc-8b0b-40c727e4ce36"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TA", + Name = "Tamil", + NativeName = "தமிழ்" + }, + new + { + Id = new Guid("3bf5a74a-6d12-e971-16bc-c75e487f2615"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TE", + Name = "Telugu", + NativeName = "తెలుగు" + }, + new + { + Id = new Guid("9dacf00b-7d0a-d744-cc60-e5fa66371e9d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TG", + Name = "Tajik", + NativeName = "тоҷикӣ" + }, + new + { + Id = new Guid("84d58b3d-d131-1506-0792-1b3228b6f71f"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TH", + Name = "Thai", + NativeName = "ไทย" + }, + new + { + Id = new Guid("596e8283-10ce-d81d-2e6f-400fa259d717"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TI", + Name = "Tigrinya", + NativeName = "ትግርኛ" + }, + new + { + Id = new Guid("11765ad0-30f2-bab8-b616-20f88b28b21e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TK", + Name = "Turkmen", + NativeName = "Türkmençe" + }, + new + { + Id = new Guid("fb9a713c-2de1-882a-64b7-0e8fef5d2f7e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TL", + Name = "Tagalog", + NativeName = "Wikang Tagalog" + }, + new + { + Id = new Guid("06f8ad57-7133-9a5e-5a83-53052012b014"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TN", + Name = "Tswana", + NativeName = "Setswana" + }, + new + { + Id = new Guid("9e7dbdc3-2c8b-e8ae-082b-e02695f8268e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TO", + Name = "Tonga", + NativeName = "faka Tonga" + }, + new + { + Id = new Guid("f39cca22-449e-9866-3a65-465a5510483e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TR", + Name = "Turkish", + NativeName = "Türkçe" + }, + new + { + Id = new Guid("6200b376-9eae-d01b-de52-8674aaf5b013"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TS", + Name = "Tsonga", + NativeName = "Xitsonga" + }, + new + { + Id = new Guid("95467997-f989-f456-34b7-0b578302dcba"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TT", + Name = "Tatar", + NativeName = "татар теле" + }, + new + { + Id = new Guid("875060ca-73f6-af3b-d844-1b1416ce4583"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TW", + Name = "Twi", + NativeName = "Twi" + }, + new + { + Id = new Guid("2299a74f-3ebc-f022-da1a-44ae59335b3b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "TY", + Name = "Tahitian", + NativeName = "Reo Tahiti" + }, + new + { + Id = new Guid("3e2cccbe-1615-c707-a97b-421a799b2559"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "UG", + Name = "Uyghur", + NativeName = "ئۇيغۇرچە‎" + }, + new + { + Id = new Guid("de29d5e7-2ecf-a4ff-5e40-5e83edd0d9b4"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "UK", + Name = "Ukrainian", + NativeName = "Українська" + }, + new + { + Id = new Guid("f1f09549-a9bb-da4a-9b98-8655a01235aa"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "UR", + Name = "Urdu", + NativeName = "اردو" + }, + new + { + Id = new Guid("357369e3-85a8-86f7-91c7-349772ae7744"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "UZ", + Name = "Uzbek", + NativeName = "Ўзбек" + }, + new + { + Id = new Guid("52d9992c-19bd-82b4-9188-11dabcac6171"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "VE", + Name = "Venda", + NativeName = "Tshivenḓa" + }, + new + { + Id = new Guid("e1947bdc-ff2c-d2c1-3c55-f1f9bf778578"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "VI", + Name = "Vietnamese", + NativeName = "Tiếng Việt" + }, + new + { + Id = new Guid("c2254fd9-159e-4064-0fbf-a7969cba06ec"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "VO", + Name = "Volapük", + NativeName = "Volapük" + }, + new + { + Id = new Guid("629b68d8-1d71-d3ce-f13e-45048ffff017"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "WA", + Name = "Walloon", + NativeName = "walon" + }, + new + { + Id = new Guid("ca6bfadf-4e87-0692-a6b3-20ea6a51555d"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "WO", + Name = "Wolof", + NativeName = "Wollof" + }, + new + { + Id = new Guid("0b9b4368-7ceb-e519-153d-2c58c983852b"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "XH", + Name = "Xhosa", + NativeName = "isiXhosa" + }, + new + { + Id = new Guid("13016d0c-fbf0-9503-12f2-e0f8d27394ae"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "YI", + Name = "Yiddish", + NativeName = "ייִדיש" + }, + new + { + Id = new Guid("d55a9eb2-48fc-2719-47bf-99e902c28e80"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "YO", + Name = "Yoruba", + NativeName = "Yorùbá" + }, + new + { + Id = new Guid("ebf38b9a-6fbe-6e82-3977-2c4763bea072"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ZA", + Name = "Zhuang", + NativeName = "Saɯ cueŋƅ" + }, + new + { + Id = new Guid("0ce6f5e0-0789-fa0e-b4b5-23a5b1f5e257"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ZH", + Name = "Chinese", + NativeName = "中文" + }, + new + { + Id = new Guid("2c7b808d-7786-2deb-5318-56f7c238520e"), + CreatedOn = new DateTime(2024, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), + Iso1 = "ZU", + Name = "Zulu", + NativeName = "isiZulu" + }); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.LocationAggregate.Location", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("DisplayOrder") + .HasColumnType("integer"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Level1") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Level2") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Level3") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Level4") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Level5") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Tags") + .HasColumnType("jsonb"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.ToTable("Locations"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FormsVersion") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("NgoId") + .HasColumnType("uuid"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("NgoId"); + + b.ToTable("MonitoringNgos"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("MonitoringNgoId") + .HasColumnType("uuid"); + + b.Property("ObserverId") + .HasColumnType("uuid"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tags") + .IsRequired() + .HasColumnType("text[]"); + + b.HasKey("Id"); + + b.HasIndex("MonitoringNgoId"); + + b.HasIndex("ObserverId"); + + b.HasIndex("ElectionRoundId", "Id") + .IsUnique(); + + b.ToTable("MonitoringObservers"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NgoAdminAggregate.NgoAdmin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicationUserId") + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("NgoId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationUserId"); + + b.HasIndex("NgoId"); + + b.ToTable("NgoAdmins", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NgoAggregate.Ngo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Ngos"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NoteAggregate.Note", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FormId") + .HasColumnType("uuid"); + + b.Property("LastUpdatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("MonitoringObserverId") + .HasColumnType("uuid"); + + b.Property("PollingStationId") + .HasColumnType("uuid"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("character varying(10000)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("FormId"); + + b.HasIndex("MonitoringObserverId"); + + b.HasIndex("PollingStationId"); + + b.ToTable("Notes", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NotificationAggregate.MonitoringObserverNotification", b => + { + b.Property("MonitoringObserverId") + .HasColumnType("uuid"); + + b.Property("NotificationId") + .HasColumnType("uuid"); + + b.Property("IsRead") + .HasColumnType("boolean"); + + b.HasKey("MonitoringObserverId", "NotificationId"); + + b.HasIndex("NotificationId"); + + b.ToTable("MonitoringObserverNotification"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NotificationAggregate.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("SenderId") + .HasColumnType("uuid"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("SenderId"); + + b.ToTable("Notifications"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NotificationStubAggregate.NotificationStub", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("HasBeenProcessed") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false); + + b.Property("SerializedData") + .IsRequired() + .HasColumnType("text"); + + b.Property("StubType") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("NotificationStubs"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NotificationTokenAggregate.NotificationToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("ObserverId") + .HasColumnType("uuid"); + + b.Property("Token") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.HasKey("Id"); + + b.HasIndex("ObserverId"); + + b.ToTable("NotificationTokens"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ObserverAggregate.Observer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicationUserId") + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationUserId"); + + b.ToTable("Observers", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ObserverGuideAggregate.ObserverGuide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("FileName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("FilePath") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("GuideType") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("MimeType") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("MonitoringNgoId") + .HasColumnType("uuid"); + + b.Property("Text") + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("UploadedFileName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("WebsiteUrl") + .HasMaxLength(2048) + .HasColumnType("character varying(2048)"); + + b.HasKey("Id"); + + b.HasIndex("MonitoringNgoId"); + + b.ToTable("ObserversGuides"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.PollingStationAggregate.PollingStation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Address") + .IsRequired() + .HasMaxLength(2024) + .HasColumnType("character varying(2024)"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("DisplayOrder") + .HasColumnType("integer"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Latitude") + .HasColumnType("double precision"); + + b.Property("Level1") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Level2") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Level3") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Level4") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Level5") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Longitude") + .HasColumnType("double precision"); + + b.Property("Number") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Tags") + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasDefaultValueSql("'{}'::JSONB"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.ToTable("PollingStations"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.PollingStationInfoAggregate.PollingStationInformation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Answers") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ArrivalTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Breaks") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasDefaultValueSql("'[]'::JSONB"); + + b.Property("DepartureTime") + .HasColumnType("timestamp with time zone"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FollowUpStatus") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("NotApplicable"); + + b.Property("IsCompleted") + .HasColumnType("boolean"); + + b.Property("LastUpdatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("MonitoringObserverId") + .HasColumnType("uuid"); + + b.Property("NumberOfFlaggedAnswers") + .HasColumnType("integer"); + + b.Property("NumberOfQuestionsAnswered") + .HasColumnType("integer"); + + b.Property("PollingStationId") + .HasColumnType("uuid"); + + b.Property("PollingStationInformationFormId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("MonitoringObserverId"); + + b.HasIndex("PollingStationId"); + + b.HasIndex("PollingStationInformationFormId"); + + b.HasIndex("ElectionRoundId", "PollingStationId", "MonitoringObserverId", "PollingStationInformationFormId") + .IsUnique(); + + b.ToTable("PollingStationInformation", (string)null); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.PollingStationInfoFormAggregate.PollingStationInformationForm", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("CreatedBy") + .HasColumnType("uuid"); + + b.Property("CreatedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("DefaultLanguage") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("Description") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FormType") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("PSI"); + + b.Property("Languages") + .IsRequired() + .HasColumnType("text[]"); + + b.Property("LanguagesTranslationStatus") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("LastModifiedBy") + .HasColumnType("uuid"); + + b.Property("LastModifiedOn") + .HasColumnType("timestamp with time zone"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("NumberOfQuestions") + .HasColumnType("integer"); + + b.Property("Questions") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Status") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("Published"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId") + .IsUnique(); + + b.ToTable("PollingStationInformationForms"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.QuickReportAggregate.QuickReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("character varying(10000)"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FollowUpStatus") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("NotApplicable"); + + b.Property("IncidentCategory") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("text") + .HasDefaultValue("Other"); + + b.Property("LastUpdatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("MonitoringObserverId") + .HasColumnType("uuid"); + + b.Property("PollingStationDetails") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("PollingStationId") + .HasColumnType("uuid"); + + b.Property("QuickReportLocationType") + .IsRequired() + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("Id"); + + b.HasIndex("MonitoringObserverId"); + + b.HasIndex("PollingStationId"); + + b.ToTable("QuickReports"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.QuickReportAttachmentAggregate.QuickReportAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ElectionRoundId") + .HasColumnType("uuid"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("text"); + + b.Property("FilePath") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsCompleted") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("LastUpdatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("MimeType") + .IsRequired() + .HasColumnType("text"); + + b.Property("MonitoringObserverId") + .HasColumnType("uuid"); + + b.Property("QuickReportId") + .HasColumnType("uuid"); + + b.Property("UploadedFileName") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ElectionRoundId"); + + b.HasIndex("MonitoringObserverId"); + + b.ToTable("QuickReportAttachments"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", b => + { + b.OwnsOne("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.UserPreferences", "Preferences", b1 => + { + b1.Property("ApplicationUserId") + .HasColumnType("uuid"); + + b1.Property("LanguageCode") + .IsRequired() + .HasColumnType("text"); + + b1.HasKey("ApplicationUserId"); + + b1.ToTable("AspNetUsers"); + + b1.ToJson("Preferences"); + + b1.WithOwner() + .HasForeignKey("ApplicationUserId"); + }); + + b.Navigation("Preferences") + .IsRequired(); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.AttachmentAggregate.Attachment", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", "MonitoringObserver") + .WithMany() + .HasForeignKey("MonitoringObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.PollingStationAggregate.PollingStation", "PollingStation") + .WithMany() + .HasForeignKey("PollingStationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + + b.Navigation("MonitoringObserver"); + + b.Navigation("PollingStation"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenGuideAggregate.CitizenGuide", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenNotificationAggregate.CitizenNotification", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.NgoAdminAggregate.NgoAdmin", "Sender") + .WithMany() + .HasForeignKey("SenderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Sender"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenReportAggregate.CitizenReport", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.LocationAggregate.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + + b.Navigation("Location"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenReportAttachmentAggregate.CitizenReportAttachment", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.CitizenReportAggregate.CitizenReport", "CitizenReport") + .WithMany("Attachments") + .HasForeignKey("CitizenReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CitizenReport"); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenReportNoteAggregate.CitizenReportNote", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.CitizenReportAggregate.CitizenReport", "CitizenReport") + .WithMany("Notes") + .HasForeignKey("CitizenReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CitizenReport"); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.Coalition", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", "Leader") + .WithMany() + .HasForeignKey("LeaderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Leader"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.CoalitionFormAccess", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.CoalitionAggregate.Coalition", "Coalition") + .WithMany("FormAccess") + .HasForeignKey("CoalitionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", "MonitoringNgo") + .WithMany() + .HasForeignKey("MonitoringNgoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Coalition"); + + b.Navigation("Form"); + + b.Navigation("MonitoringNgo"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.CoalitionGuideAccess", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.CoalitionAggregate.Coalition", "Coalition") + .WithMany("GuideAccess") + .HasForeignKey("CoalitionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.ObserverGuideAggregate.ObserverGuide", "Guide") + .WithMany() + .HasForeignKey("GuideId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", "MonitoringNgo") + .WithMany() + .HasForeignKey("MonitoringNgoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Coalition"); + + b.Navigation("Guide"); + + b.Navigation("MonitoringNgo"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.CoalitionMembership", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.CoalitionAggregate.Coalition", "Coalition") + .WithMany("Memberships") + .HasForeignKey("CoalitionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", "MonitoringNgo") + .WithMany("Memberships") + .HasForeignKey("MonitoringNgoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Coalition"); + + b.Navigation("ElectionRound"); + + b.Navigation("MonitoringNgo"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.CountryAggregate.Country", "Country") + .WithMany() + .HasForeignKey("CountryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", "MonitoringNgoForCitizenReporting") + .WithMany() + .HasForeignKey("MonitoringNgoForCitizenReportingId"); + + b.Navigation("Country"); + + b.Navigation("MonitoringNgoForCitizenReporting"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ElectionRoundFormTemplateAggregate.ElectionRoundFormTemplate", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormTemplateAggregate.FormTemplate", "FormTemplate") + .WithMany() + .HasForeignKey("FormTemplateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("FormTemplate"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ExportedDataAggregate.ExportedData", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.FeedbackAggregate.Feedback", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.ObserverAggregate.Observer", "Observer") + .WithMany() + .HasForeignKey("ObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Observer"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.FormAggregate.Form", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", "MonitoringNgo") + .WithMany() + .HasForeignKey("MonitoringNgoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("MonitoringNgo"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.FormSubmissionAggregate.FormSubmission", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", "MonitoringObserver") + .WithMany() + .HasForeignKey("MonitoringObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.PollingStationAggregate.PollingStation", "PollingStation") + .WithMany() + .HasForeignKey("PollingStationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + + b.Navigation("MonitoringObserver"); + + b.Navigation("PollingStation"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.IncidentReportAggregate.IncidentReport", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", "MonitoringObserver") + .WithMany() + .HasForeignKey("MonitoringObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.PollingStationAggregate.PollingStation", "PollingStation") + .WithMany() + .HasForeignKey("PollingStationId"); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + + b.Navigation("MonitoringObserver"); + + b.Navigation("PollingStation"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.IncidentReportAttachmentAggregate.IncidentReportAttachment", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.IncidentReportAggregate.IncidentReport", "IncidentReport") + .WithMany("Attachments") + .HasForeignKey("IncidentReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + + b.Navigation("IncidentReport"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.IncidentReportNoteAggregate.IncidentReportNote", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.IncidentReportAggregate.IncidentReport", "IncidentReport") + .WithMany("Notes") + .HasForeignKey("IncidentReportId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + + b.Navigation("IncidentReport"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.LocationAggregate.Location", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany("MonitoringNgos") + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.NgoAggregate.Ngo", "Ngo") + .WithMany() + .HasForeignKey("NgoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Ngo"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", "MonitoringNgo") + .WithMany("MonitoringObservers") + .HasForeignKey("MonitoringNgoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.ObserverAggregate.Observer", "Observer") + .WithMany("MonitoringObservers") + .HasForeignKey("ObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("MonitoringNgo"); + + b.Navigation("Observer"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NgoAdminAggregate.NgoAdmin", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", "ApplicationUser") + .WithMany() + .HasForeignKey("ApplicationUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.NgoAggregate.Ngo", "Ngo") + .WithMany("Admins") + .HasForeignKey("NgoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ApplicationUser"); + + b.Navigation("Ngo"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NoteAggregate.Note", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.FormAggregate.Form", "Form") + .WithMany() + .HasForeignKey("FormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", "MonitoringObserver") + .WithMany() + .HasForeignKey("MonitoringObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.PollingStationAggregate.PollingStation", "PollingStation") + .WithMany() + .HasForeignKey("PollingStationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Form"); + + b.Navigation("MonitoringObserver"); + + b.Navigation("PollingStation"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NotificationAggregate.MonitoringObserverNotification", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", "MonitoringObserver") + .WithMany() + .HasForeignKey("MonitoringObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.NotificationAggregate.Notification", "Notification") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MonitoringObserver"); + + b.Navigation("Notification"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NotificationAggregate.Notification", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.NgoAdminAggregate.NgoAdmin", "Sender") + .WithMany() + .HasForeignKey("SenderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("Sender"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NotificationTokenAggregate.NotificationToken", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ObserverAggregate.Observer", null) + .WithMany() + .HasForeignKey("ObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ObserverAggregate.Observer", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ApplicationUserAggregate.ApplicationUser", "ApplicationUser") + .WithMany() + .HasForeignKey("ApplicationUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ApplicationUser"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ObserverGuideAggregate.ObserverGuide", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", "MonitoringNgo") + .WithMany() + .HasForeignKey("MonitoringNgoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MonitoringNgo"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.PollingStationAggregate.PollingStation", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.PollingStationInfoAggregate.PollingStationInformation", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", "MonitoringObserver") + .WithMany() + .HasForeignKey("MonitoringObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.PollingStationAggregate.PollingStation", "PollingStation") + .WithMany() + .HasForeignKey("PollingStationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.PollingStationInfoFormAggregate.PollingStationInformationForm", "PollingStationInformationForm") + .WithMany() + .HasForeignKey("PollingStationInformationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("MonitoringObserver"); + + b.Navigation("PollingStation"); + + b.Navigation("PollingStationInformationForm"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.PollingStationInfoFormAggregate.PollingStationInformationForm", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithOne() + .HasForeignKey("Vote.Monitor.Domain.Entities.PollingStationInfoFormAggregate.PollingStationInformationForm", "ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.QuickReportAggregate.QuickReport", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", "MonitoringObserver") + .WithMany() + .HasForeignKey("MonitoringObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.PollingStationAggregate.PollingStation", "PollingStation") + .WithMany() + .HasForeignKey("PollingStationId"); + + b.Navigation("ElectionRound"); + + b.Navigation("MonitoringObserver"); + + b.Navigation("PollingStation"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.QuickReportAttachmentAggregate.QuickReportAttachment", b => + { + b.HasOne("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", "ElectionRound") + .WithMany() + .HasForeignKey("ElectionRoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Vote.Monitor.Domain.Entities.MonitoringObserverAggregate.MonitoringObserver", "MonitoringObserver") + .WithMany() + .HasForeignKey("MonitoringObserverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ElectionRound"); + + b.Navigation("MonitoringObserver"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CitizenReportAggregate.CitizenReport", b => + { + b.Navigation("Attachments"); + + b.Navigation("Notes"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.CoalitionAggregate.Coalition", b => + { + b.Navigation("FormAccess"); + + b.Navigation("GuideAccess"); + + b.Navigation("Memberships"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ElectionRoundAggregate.ElectionRound", b => + { + b.Navigation("MonitoringNgos"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.IncidentReportAggregate.IncidentReport", b => + { + b.Navigation("Attachments"); + + b.Navigation("Notes"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.MonitoringNgoAggregate.MonitoringNgo", b => + { + b.Navigation("Memberships"); + + b.Navigation("MonitoringObservers"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.NgoAggregate.Ngo", b => + { + b.Navigation("Admins"); + }); + + modelBuilder.Entity("Vote.Monitor.Domain.Entities.ObserverAggregate.Observer", b => + { + b.Navigation("MonitoringObservers"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/api/src/Vote.Monitor.Domain/Migrations/20250509131459_AddLatLongToPollingStations.cs b/api/src/Vote.Monitor.Domain/Migrations/20250509131459_AddLatLongToPollingStations.cs new file mode 100644 index 000000000..cb2f8387d --- /dev/null +++ b/api/src/Vote.Monitor.Domain/Migrations/20250509131459_AddLatLongToPollingStations.cs @@ -0,0 +1,59 @@ +using System.Text.Json; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Vote.Monitor.Domain.Migrations +{ + /// + public partial class AddLatLongToPollingStations : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "Tags", + table: "PollingStations", + type: "jsonb", + nullable: true, + defaultValueSql: "'{}'::JSONB", + oldClrType: typeof(JsonDocument), + oldType: "jsonb", + oldNullable: true); + + migrationBuilder.AddColumn( + name: "Latitude", + table: "PollingStations", + type: "double precision", + nullable: true); + + migrationBuilder.AddColumn( + name: "Longitude", + table: "PollingStations", + type: "double precision", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Latitude", + table: "PollingStations"); + + migrationBuilder.DropColumn( + name: "Longitude", + table: "PollingStations"); + + migrationBuilder.AlterColumn( + name: "Tags", + table: "PollingStations", + type: "jsonb", + nullable: true, + oldClrType: typeof(JsonDocument), + oldType: "jsonb", + oldNullable: true, + oldDefaultValueSql: "'{}'::JSONB"); + } + } +} diff --git a/api/src/Vote.Monitor.Domain/Migrations/VoteMonitorContextModelSnapshot.cs b/api/src/Vote.Monitor.Domain/Migrations/VoteMonitorContextModelSnapshot.cs index e034d9c6e..8c730d13a 100644 --- a/api/src/Vote.Monitor.Domain/Migrations/VoteMonitorContextModelSnapshot.cs +++ b/api/src/Vote.Monitor.Domain/Migrations/VoteMonitorContextModelSnapshot.cs @@ -5883,6 +5883,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("LastModifiedOn") .HasColumnType("timestamp with time zone"); + b.Property("Latitude") + .HasColumnType("double precision"); + b.Property("Level1") .IsRequired() .HasMaxLength(256) @@ -5904,13 +5907,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasMaxLength(256) .HasColumnType("character varying(256)"); + b.Property("Longitude") + .HasColumnType("double precision"); + b.Property("Number") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)"); b.Property("Tags") - .HasColumnType("jsonb"); + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasDefaultValueSql("'{}'::JSONB"); b.HasKey("Id"); diff --git a/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/ExportPollingStationsJob.cs b/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/ExportPollingStationsJob.cs index 77c34107a..f96c13c26 100644 --- a/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/ExportPollingStationsJob.cs +++ b/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/ExportPollingStationsJob.cs @@ -84,6 +84,8 @@ private async Task> GetPollingStationsAsync(Guid elect PS."Number", PS."Address", ps."DisplayOrder", + ps."Latitude", + ps."Longitude", COALESCE(NULLIF(PS."Tags", 'null'::jsonb), '{}'::jsonb) AS "Tags" FROM "PollingStations" PS diff --git a/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/PollingStationsDataTable.cs b/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/PollingStationsDataTable.cs index db17ec3be..a6b9554b9 100644 --- a/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/PollingStationsDataTable.cs +++ b/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/PollingStationsDataTable.cs @@ -19,6 +19,8 @@ private PollingStationsDataTable() "Level5", "Number", "Address", + "Latitude", + "Longitude", "DisplayOrder", ]); } diff --git a/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/PollingStationsDataTableGenerator.cs b/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/PollingStationsDataTableGenerator.cs index bbbee8801..a6a4a5768 100644 --- a/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/PollingStationsDataTableGenerator.cs +++ b/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/PollingStationsDataTableGenerator.cs @@ -34,6 +34,8 @@ public PollingStationsDataTableGenerator For(PollingStationModel pollingStation) pollingStation.Level5, pollingStation.Number, pollingStation.Address, + pollingStation.Latitude?.ToString() ?? "", + pollingStation.Longitude?.ToString() ?? "", pollingStation.DisplayOrder }; @@ -114,4 +116,4 @@ private void WithTags(JsonDocument tags) } } } -} \ No newline at end of file +} diff --git a/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/ReadModels/PollingStationModel.cs b/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/ReadModels/PollingStationModel.cs index b94a051d8..7e13a70dc 100644 --- a/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/ReadModels/PollingStationModel.cs +++ b/api/src/Vote.Monitor.Hangfire/Jobs/Export/PollingStations/ReadModels/PollingStationModel.cs @@ -13,5 +13,7 @@ public class PollingStationModel public string Number { get; set; } public string DisplayOrder { get; set; } public string Address { get; set; } + public double? Latitude { get; set; } + public double? Longitude { get; set; } public JsonDocument Tags { get; set; } } diff --git a/api/tests/Feature.PollingStations.UnitTests/ServicesTests/PollingStationParserTests.cs b/api/tests/Feature.PollingStations.UnitTests/ServicesTests/PollingStationParserTests.cs index 6257789ff..5b4a1827c 100644 --- a/api/tests/Feature.PollingStations.UnitTests/ServicesTests/PollingStationParserTests.cs +++ b/api/tests/Feature.PollingStations.UnitTests/ServicesTests/PollingStationParserTests.cs @@ -103,10 +103,10 @@ public void Parsing_ShouldSucceed_When_ValidCsv() var reader = new CsvReader(); var sut = new PollingStationParser(reader, NullLogger.Instance, _parserConfig); - var csvData = "Level1,Level2,Level3,Level4,Level5,Number,DisplayOrder,Address,Tag1,Tag2\n" + - "Level1,Level2,Level3,Level4,Level5,Number 1,1,Address1,TagA,TagB\n" + - "Level1,Level2,Level3,Level4,Level5,Number 2,2,Address2,TagC,TagD\n" + - "Level1,Level2,Level3,Level4,Level5,Number 3,3,Address3,TagE,TagF"; + var csvData = "Level1,Level2,Level3,Level4,Level5,Number,DisplayOrder,Address,Latitude,Longitude,Tag1,Tag2\n" + + "Level1,Level2,Level3,Level4,Level5,Number 1,1,Address1,,,TagA,TagB\n" + + "Level1,Level2,Level3,Level4,Level5,Number 2,2,Address2,,,TagC,TagD\n" + + "Level1,Level2,Level3,Level4,Level5,Number 3,3,Address3,,,TagE,TagF"; using var stream = new MemoryStream(); using var writer = new StreamWriter(stream); writer.Write(csvData); @@ -133,6 +133,8 @@ public void Parsing_ShouldSucceed_When_ValidCsv() Number = "Number 1", DisplayOrder = 1, Address = "Address1", + Latitude =null, + Longitude = null, Tags = new List { new() @@ -234,4 +236,4 @@ public void Parsing_ShouldSucceed_When_ValidCsv() "Malformed import polling stations file provided." } }; -} \ No newline at end of file +} diff --git a/api/tests/Vote.Monitor.Hangfire.UnitTests/Jobs/ExportData/Fakes/Fake.PollingStation.cs b/api/tests/Vote.Monitor.Hangfire.UnitTests/Jobs/ExportData/Fakes/Fake.PollingStation.cs index a720721b7..006fce25b 100644 --- a/api/tests/Vote.Monitor.Hangfire.UnitTests/Jobs/ExportData/Fakes/Fake.PollingStation.cs +++ b/api/tests/Vote.Monitor.Hangfire.UnitTests/Jobs/ExportData/Fakes/Fake.PollingStation.cs @@ -8,7 +8,9 @@ public sealed partial class Fake { private static readonly JsonDocument _emptyTags = JsonDocument.Parse("{}"); - public static PollingStationModel PollingStation(Guid pollingStationId, JsonDocument? tags = null) + public static PollingStationModel PollingStation(Guid pollingStationId, + (double latitude, double longitude )? coordinates = null, + JsonDocument? tags = null) { var fakePollingStation = new Faker() .RuleFor(x => x.Id, pollingStationId) @@ -20,6 +22,8 @@ public static PollingStationModel PollingStation(Guid pollingStationId, JsonDocu .RuleFor(x => x.Level5, f => f.Lorem.Word()) .RuleFor(x => x.Number, f => f.Lorem.Word()) .RuleFor(x => x.Address, f => f.Lorem.Sentence(10)) + .RuleFor(x => x.Latitude, f => coordinates?.latitude) + .RuleFor(x => x.Longitude, f => coordinates?.longitude) .RuleFor(x => x.DisplayOrder, f => f.Random.Int().ToString()); return fakePollingStation.Generate(); diff --git a/api/tests/Vote.Monitor.Hangfire.UnitTests/Jobs/ExportData/PollingStationsDataTableGeneratorTests.cs b/api/tests/Vote.Monitor.Hangfire.UnitTests/Jobs/ExportData/PollingStationsDataTableGeneratorTests.cs index 82232f8a2..e3e0d26bf 100644 --- a/api/tests/Vote.Monitor.Hangfire.UnitTests/Jobs/ExportData/PollingStationsDataTableGeneratorTests.cs +++ b/api/tests/Vote.Monitor.Hangfire.UnitTests/Jobs/ExportData/PollingStationsDataTableGeneratorTests.cs @@ -11,6 +11,9 @@ public class PollingStationsDataTableGeneratorTests private readonly Guid _pollingStationId2 = Guid.NewGuid(); private readonly Guid _pollingStationId3 = Guid.NewGuid(); + private readonly (double latitude, double longitude ) _pollingStationId1Coordinates = (69, 420); + private readonly (double latitude, double longitude ) _pollingStationId3Coordinates = (12, 23); + private readonly string _pollingStationId1Tags = """ { "tag1": "tag1_value1", @@ -47,6 +50,8 @@ public class PollingStationsDataTableGeneratorTests "Level5", "Number", "Address", + "Latitude", + "Longitude", "DisplayOrder", ]; @@ -114,9 +119,9 @@ .. GetDefaultExpectedColumns(pollingStation3), public void PollingStationsDataTableGenerator_Should_Generates_Correct_DataTableWhenTags() { // Arrange - var pollingStation1 = Fake.PollingStation(_pollingStationId1, JsonDocument.Parse(_pollingStationId1Tags)); - var pollingStation2 = Fake.PollingStation(_pollingStationId2, JsonDocument.Parse(_pollingStationId2Tags)); - var pollingStation3 = Fake.PollingStation(_pollingStationId3, JsonDocument.Parse(_pollingStationId3Tags)); + var pollingStation1 = Fake.PollingStation(_pollingStationId1, coordinates:_pollingStationId1Coordinates, tags:JsonDocument.Parse(_pollingStationId1Tags)); + var pollingStation2 = Fake.PollingStation(_pollingStationId2, tags:JsonDocument.Parse(_pollingStationId2Tags)); + var pollingStation3 = Fake.PollingStation(_pollingStationId3, coordinates:_pollingStationId3Coordinates, tags:JsonDocument.Parse(_pollingStationId3Tags)); List expectedData = [ @@ -195,6 +200,8 @@ private object[] GetDefaultExpectedColumns(PollingStationModel pollingStation) pollingStation.Level5, pollingStation.Number, pollingStation.Address, + pollingStation.Latitude?.ToString() ?? string.Empty, + pollingStation.Longitude?.ToString() ?? string.Empty, pollingStation.DisplayOrder ]; } diff --git a/api/tests/Vote.Monitor.TestUtils/Fakes/Aggregates/PollingStationFaker.cs b/api/tests/Vote.Monitor.TestUtils/Fakes/Aggregates/PollingStationFaker.cs index ba765c5f8..d01945f9d 100644 --- a/api/tests/Vote.Monitor.TestUtils/Fakes/Aggregates/PollingStationFaker.cs +++ b/api/tests/Vote.Monitor.TestUtils/Fakes/Aggregates/PollingStationFaker.cs @@ -23,6 +23,8 @@ public PollingStationFaker(Guid? id = null, number: f.Random.Number(1, 1000).ToString(), address: f.Address.FullAddress(), displayOrder: f.IndexFaker, - tags: JsonSerializer.SerializeToDocument(""))); + tags: JsonSerializer.SerializeToDocument(""), + latitude: f.Address.Latitude(), + longitude: f.Address.Longitude())); } } diff --git a/utils/excel-to-locales/german-locales.csv b/utils/excel-to-locales/german-locales.csv new file mode 100644 index 000000000..0d647d631 --- /dev/null +++ b/utils/excel-to-locales/german-locales.csv @@ -0,0 +1,549 @@ +Key,en,de +common.skip,Next,Weiter +common.search,Search,Suchen +common.loading,Loading...,Wird geladen… +common.status.completed,Done,Erledigt +common.status.in_progress,In progress,In Bearbeitung +common.status.not_started,Not started,Nicht begonnen +common.status.marked_as_completed,Marked as done,Als erledigt markiert +common.forms.mark_as_done,Mark form as done,Formular als erledigt markieren +common.forms.mark_as_in_progress,Mark form as in progress,Formular als in Bearbeitung markieren +common.cancel,Cancel,Abbrechen +common.save,Save,Speichern +common.no_data,No data found.,Keine Daten gefunden. +common.select,Select,Auswählen +common.done,Done,Erledigt +common.ok,OK,OK +common.back,Back,Zurück +languages.ro,Romanian,Rumänisch +languages.en,English,Englisch +languages.pl,Polish,Polnisch +languages.bg,Bulgarian,Bulgarisch +languages.sr,Serbian,Serbisch +languages.ka,Georgian,Georgisch +languages.hy,Armenian,Armenisch +languages.ru,Russian,Russisch +languages.az,Azerbaijani,Aserbaidschanisch +languages.es,Spanish,Spanisch +onboarding.language.heading,Choose your language,Sprache auswählen +onboarding.language.description,"This will be the language in which your app will be displayed, and can be changed at any time from the More Section of the application.","Dies ist die Sprache, in der deine App angezeigt wird, und sie kann jederzeit im Bereich „Mehr“ der Anwendung geändert werden." +onboarding.language.save,Apply selection,Auswahl anwenden +onboarding.polling_stations.heading,Monitor election processes,Wahlprozesse überwachen +onboarding.polling_stations.description,"and report campaign irregularities, polling station issues, and flag any problems with voting day procedures","und Unregelmäßigkeiten im Wahlkampf, Probleme in Wahllokalen melden sowie etwaige Verstöße gegen die Abläufe am Wahltag kennzeichnen" +onboarding.forms.heading,Fill in observation forms,Beobachtungsformulare ausfüllen +onboarding.forms.description,and submit reports for each monitoring stage to help ensure a transparent and fair electoral process,"und Berichte für jede Beobachtungsphase einreichen, um einen transparenten und fairen Wahlprozess zu gewährleisten" +onboarding.media.heading,Add notes or media files,Notizen oder Mediendateien hinzufügen +onboarding.media.description,to further support your observations and provide evidence for any irregularities,um deine Beobachtungen weiter zu unterstützen und Belege für etwaige Unregelmäßigkeiten bereitzustellen +onboarding.media.save,Go to app,Zur App +select_app_mode.heading,Select app mode,App-Modus auswählen +select_app_mode.description,"You can monitor the electoral process as an accredited observer, or just as a citizen interested in supporting fair and democratic elections.","Du kannst den Wahlprozess als akkreditierte*r Beobachter*in überwachen oder als Bürger*in, der/die faire und demokratische Wahlen unterstützen möchte." +select_app_mode.accredited_observer.title,Vote Monitor for Accredited Observers,Vote Monitor für akkreditierte Beobachter*innen +select_app_mode.accredited_observer.description,"I am an accredited independent observer, invited by an NGO to observe the electoral process. **","Ich bin eine*r akkreditierte*r unabhängige*r Beobachter*in und wurde von einer NGO eingeladen, den Wahlprozess zu beobachten. **" +select_app_mode.citizen.title,Vote Monitor for Citizens,Vote Monitor für Bürger*innen +select_app_mode.citizen.description,I am a citizen and I want to report electoral irregularities I see during the electoral campaign or on election day.,"Ich bin Bürger*in und möchte Unregelmäßigkeiten melden, die ich während des Wahlkampfs oder am Wahltag beobachte." +select_app_mode.helper,"**As an accredited observer you will be able to switch to Citizen mode at any time, from the app’s menu.",**Als akkreditierte*r Beobachter*in kannst du jederzeit über das App-Menü in den Bürger*innenmodus wechseln. +select_app_mode.continue,Continue,Fortfahren +select_election_event.heading,Available election events,Verfügbare Wahlereignisse +select_election_event.description,Select the event for which you would like to submit a report for:,"Wähle das Ereignis aus, für das du einen Bericht einreichen möchtest:" +select_election_event.continue,Continue,Fortfahren +select_election_event.empty_description,"At this moment there are no active electoral events for which you can report incidents as a citizen. Once an event will be available, you will see it in this section.","Derzeit gibt es keine aktiven Wahlereignisse, für die du als Bürger*in Vorfälle melden kannst. Sobald ein Ereignis verfügbar ist, wird es in diesem Bereich angezeigt." +select_election_event.error_description,Something went wrong while retrieving the available election events. Please retry.,Beim Abrufen der verfügbaren Wahlereignisse ist ein Fehler aufgetreten. Bitte versuche es erneut. +select_election_event.retry,Retry,Erneut versuchen +drawer.report_as_citizen,Report as citizen,Als Bürger*in melden +drawer.report_as_accredited_observer,Report as accredited observer,Als akkreditierte*r Beobachter*in melden +citizen_report_issue.header_title,Report an issue,Ein Vorkommnis melden +citizen_report_issue.description,"As a citizen, you can report an election-related issue by completing one of the reporting forms available below.","Als Bürger*in kannst du ein wahlbezogenes Problem melden, indem du eines der unten verfügbaren Meldeformulare ausfüllst." +citizen_report_issue.disclaimer,"Submitting a report through Vote Monitor Citizen is not the same as filing an official complaint with the authorities responsible for organizing elections. For more information on how reports are used, check the info button in the upper right corner. If you want to submit an official complaint, please refer to the article How to Submit an Official Complaint in the Resources section.","Das Einreichen eines Berichts über Vote Monitor Citizen ist nicht dasselbe wie das Einreichen einer offiziellen Beschwerde bei den für die Organisation von Wahlen zuständigen Behörden. Weitere Informationen zur Verwendung der Berichte findest du über die Info-Schaltfläche in der oberen rechten Ecke. Wenn du eine offizielle Beschwerde einreichen möchtest, lies bitte den Artikel „Wie man eine offizielle Beschwerde einreicht“ im Bereich „Ressourcen“." +citizen_report_issue.empty_forms,Reporting forms will appear here once Vote Monitor team will publish them in the system.,"Meldeformulare werden hier angezeigt, sobald das Vote-Monitor-Team sie im System veröffentlicht hat." +citizen_report_issue.error_message,Something went wrong while retrieving the reporting forms. Please retry.,Beim Abrufen der Meldeformulare ist ein Fehler aufgetreten. Bitte versuche es erneut. +citizen_report_issue.retry,Retry,Erneut versuchen +citizen_report_issue.info_modal.p1,Submitting a report through Vote Monitor Citizen does not constitute an official complaint to the authorities responsible for organizing elections and does not guarantee that your report will be reviewed or addressed.,"Das Einreichen eines Berichts über Vote Monitor Citizen stellt keine offizielle Beschwerde bei den für die Organisation von Wahlen zuständigen Behörden dar und garantiert nicht, dass dein Bericht geprüft oder bearbeitet wird." +citizen_report_issue.info_modal.p2,"After data analysis, some reports submitted through the app may be included in election observation reports prepared by organizations partnered with Code for Romania/Commit Global. Aggregated and anonymized data may also be used for statistical purposes.","Nach der Datenanalyse können einige über die App eingereichte Berichte in Wahlbeobachtungsberichten aufgenommen werden, die von mit Code for Romania/Commit Global kooperierenden Organisationen erstellt werden. Aggregierte und anonymisierte Daten können außerdem zu statistischen Zwecken verwendet werden." +citizen_report_issue.info_modal.p3,"In certain cases, your reports may be shared with authorities responsible for organizing elections to help improve future electoral processes, though this is not guaranteed.","In bestimmten Fällen können deine Berichte an die für die Organisation von Wahlen zuständigen Behörden weitergegeben werden, um zukünftige Wahlprozesse zu verbessern; dies ist jedoch nicht garantiert." +citizen_report_issue.info_modal.p4,You have full control over your personal data. Reporting forms allow you to choose whether to report anonymously or consent to being contacted by an organization should your report be reviewed.,"Du hast die volle Kontrolle über deine personenbezogenen Daten. In den Meldeformularen kannst du wählen, ob du anonym berichten oder der Kontaktaufnahme durch eine Organisation zustimmen möchtest, falls dein Bericht geprüft wird." +citizen_report_issue.info_modal.ok,OK,OK +citizen_form.review.heading,Review your report,Bericht überprüfen +citizen_form.review.send,Send report,Bericht senden +citizen_form.review.sending_report,We're sending your report. Please wait...,Dein Bericht wird gesendet. Bitte warten… +citizen_form.progress_bar_label,Form progress,Formularfortschritt +citizen_form.success.title,Your report has been successfuly sent!,Dein Bericht wurde erfolgreich gesendet! +citizen_form.success.description,"Thank you for your civic involvement. You have the option to send a copy of your responses to your email, or you can return to the main page.","Vielen Dank für dein zivilgesellschaftliches Engagement. Du hast die Möglichkeit, dir eine Kopie deiner Antworten per E-Mail senden zu lassen oder zur Hauptseite zurückzukehren." +citizen_form.success.back_to_main,Back to the main page,Zurück zur Hauptseite +citizen_form.success.send_copy,Send me a copy,Mir eine Kopie senden +citizen_form.error,There was a problem while sending your review.,Beim Senden deines Berichts ist ein Problem aufgetreten. +citizen_form.email_copy.title,Enter your email to receive a form copy,"E-Mail-Adresse eingeben, um eine Kopie des Formulars zu erhalten" +citizen_form.email_copy.description,"To receive a copy of your form, please enter your email address below. This email address will be used only to send you the copy and will not be stored or used for any other purpose.","Um eine Kopie deines Formulars zu erhalten, gib bitte unten deine E-Mail-Adresse ein. Diese E-Mail-Adresse wird ausschließlich zum Versand der Kopie verwendet und nicht gespeichert oder für andere Zwecke genutzt." +citizen_form.email_copy.placeholder,Enter your email,E-Mail-Adresse eingeben +citizen_form.email_copy.required,The email is mandatory,Die E-Mail-Adresse ist erforderlich +citizen_form.email_copy.invalid,The email format is not valid,Das E-Mail-Format ist ungültig +citizen_form.email_copy.cancel,Cancel,Abbrechen +citizen_form.email_copy.send,Send,Senden +citizen_form.copy_sent.title,Your copy has been sent,Deine Kopie wurde gesendet +citizen_form.copy_sent.description,"Your copy should arrive instantly, but in rare occasions it may take a few minutes to process. You can return to the main page in the meantime.","Deine Kopie sollte sofort ankommen, in seltenen Fällen kann die Verarbeitung jedoch einige Minuten dauern. Du kannst in der Zwischenzeit zur Hauptseite zurückkehren." +citizen_form.unsaved_changes_dialog.title,You have unsaved changes,Du hast ungespeicherte Änderungen +citizen_form.unsaved_changes_dialog.description,Leaving this page will cause all your progress on the form to be lost. Are you sure you wish to go back?,"Wenn du diese Seite verlässt, gehen alle bisherigen Eingaben im Formular verloren. Möchtest du wirklich zurückgehen?" +citizen_form.unsaved_changes_dialog.actions.discard,Go back,Zurückgehen +citizen_form.unsaved_changes_dialog.actions.save,Stay here,Hier bleiben +citizen_form.attachments.heading,Uploaded media,Hochgeladene Medien +citizen_form.attachments.loading,Adding attachment... ,Anhang wird hinzugefügt… +citizen_form.attachments.error,Error while sending the attachment!,Fehler beim Senden des Anhangs! +citizen_form.attachments.add,Add media files,Mediendateien hinzufügen +citizen_form.attachments.menu.load,Load from gallery,Aus Galerie laden +citizen_form.attachments.menu.take_picture,Take a photo,Foto aufnehmen +citizen_form.attachments.menu.record_video,Record a video,Video aufnehmen +citizen_form.attachments.menu.upload_audio,Upload audio file,Audiodatei hochladen +citizen_form.attachments.upload.compressing,Compressing attachment: ,Anhang wird komprimiert: +citizen_form.attachments.upload.preparing,Preparing attachment...,Anhang wird vorbereitet… +citizen_form.attachments.upload.starting,Starting the upload...,Upload wird gestartet… +citizen_form.attachments.upload.progress,Uploading attachments: ,Anhänge werden hochgeladen: +citizen_form.attachments.upload.completed,Upload completed.,Upload abgeschlossen. +citizen_form.attachments.upload.aborted,Upload aborted.,Upload abgebrochen. +citizen_form.attachments.upload.offline,You need an internet connection in order to perform this action.,Für diese Aktion ist eine Internetverbindung erforderlich. +citizen_form.attachments.delete.title,Delete media file,Mediendatei löschen +citizen_form.attachments.delete.description,"This action cannot be undone. Once deleted, a media file cannot be retrieved.",Diese Aktion kann nicht rückgängig gemacht werden. Nach dem Löschen kann eine Mediendatei nicht wiederhergestellt werden. +citizen_form.attachments.delete.actions.cancel,Cancel,Abbrechen +citizen_form.attachments.delete.actions.clear,Delete,Löschen +login.disclaimer.paragraph1,"Vote Monitor Observer can only be used by independent observers, accredited by an organisation which monitors election processes. An invitation email from your organisation is needed, with instructions to set up an account.","Vote Monitor Observer kann nur von unabhängigen Beobachter*innen genutzt werden, die von einer Organisation akkreditiert sind, welche Wahlprozesse überwacht. Eine Einladungs-E-Mail deiner Organisation mit Anweisungen zur Kontoerstellung ist erforderlich." +login.disclaimer.paragraph2.slice1,"If you are not an accredited observer, you may still","Wenn du keine*r akkreditierte*r Beobachter*in bist, kannst du dennoch" +login.disclaimer.paragraph2.link,report irregularities as a citizen,Unregelmäßigkeiten als Bürger*in melden +login.disclaimer.paragraph2.slice2,"for an ongoing election event, without needing an account.","für ein laufendes Wahlereignis, ohne ein Konto zu benötigen." +login.heading,Log in,Anmelden +login.paragraph,Please use the email address with which you registered as an independent observer:,"Bitte verwende die E-Mail-Adresse, mit der du dich als unabhängige*r Beobachter*in registriert hast:" +login.form.email.label,E-mail *,E-Mail * +login.form.email.placeholder,E-mail,E-Mail +login.form.email.required,E-mail is mandatory,E-Mail ist erforderlich +login.form.email.pattern,E-mail format is not valid,Das E-Mail-Format ist ungültig +login.form.password.label,Password *,Passwort * +login.form.password.placeholder,Password,Passwort +login.form.password.required,Password is mandatory,Passwort ist erforderlich +login.form.submit.save,Log in,Anmelden +login.form.submit.loading,Log in...,Anmelden… +login.form.errors.invalid_credentials,There was an error with your credentials. Please try again.,Bei deinen Zugangsdaten ist ein Fehler aufgetreten. Bitte versuche es erneut. +login.form.errors.offline,You need an internet connection in order to log in.,Zum Anmelden ist eine Internetverbindung erforderlich. +login.actions.forgot_password,Forgot your password?,Passwort vergessen? +login.email_toast,Email address was copied to clipboard,E-Mail-Adresse wurde in die Zwischenablage kopiert +forgot_password.header.title,Forgot password,Passwort vergessen +forgot_password.heading,Forgot your password?,Passwort vergessen? +forgot_password.paragraph,Please enter the email address associated with your account and we’ll send you a link to reset your password.,Bitte gib die mit deinem Konto verknüpfte E-Mail-Adresse ein. Wir senden dir einen Link zum Zurücksetzen deines Passworts. +forgot_password.form.email.label,E-mail *,E-Mail * +forgot_password.form.email.placeholder,E-mail,E-Mail +forgot_password.form.email.required,E-mail is mandatory,E-Mail ist erforderlich +forgot_password.form.email.pattern,E-mail format is not valid,Das E-Mail-Format ist ungültig +forgot_password.form.submit.loading,Sending...,Wird gesendet… +forgot_password.form.submit.save,Send,Senden +forgot_password.form.errors.invalid_email,The current email is not registered in the system. Please try again.,Die aktuelle E-Mail-Adresse ist im System nicht registriert. Bitte versuche es erneut. +forgot_password.confirmation.heading,Email sent,E-Mail gesendet +forgot_password.confirmation.paragraph,Check your email and open the link we sent to continue. Check your spam filter if you did not receive the email.,"Überprüfe dein E-Mail-Postfach und öffne den Link, den wir dir gesendet haben, um fortzufahren. Prüfe auch deinen Spam-Ordner, falls du keine E-Mail erhalten hast." +forgot_password.confirmation.confirm,Back to login,Zurück zur Anmeldung +about_app.title,About Vote Monitor,Über Vote Monitor +about_app.title_observer,About Vote Monitor Observer,Über Vote Monitor Observer +about_app.general,Vote Monitor is a dedicated digital tool for independent observers and international organizations engaged in election monitoring. Vote Monitor is developed and managed by Code for Romania/Commit Global.,"Vote Monitor ist ein spezielles digitales Tool für unabhängige Beobachter und internationale Organisationen, die sich mit Wahlbeobachtung befassen. Vote Monitor wird von Code for Romania/Commit Global entwickelt und verwaltet." +about_app.purpose,"The app assists independent observers in monitoring polling stations and documenting the polling process in real-time for a specific election round. All data collected through the mobile app is sent in real-time to accrediting organizations to identify potential red flags that may indicate fraud or other irregularities. Ultimately, our goal is to provide a clear, simple, and realistic snapshot of the polling process proceedings.","Die App unterstützt unabhängige Beobachter dabei, Wahllokale zu beobachten und den Wahlprozess für eine bestimmte Wahlrunde in Echtzeit zu dokumentieren. Alle über die mobile App gesammelten Daten werden in Echtzeit an akkreditierte Organisationen gesendet, um potenzielle Warnsignale zu identifizieren, die auf Betrug oder andere Unregelmäßigkeiten hindeuten könnten. Letztendlich ist es unser Ziel, einen klaren, einfachen und realistischen Überblick über den Ablauf des Wahlprozesses zu bieten." +about_app.app_provides.paragraph,The app provides observers with:,Die App bietet Beobachtern: +about_app.app_provides.item1,A way to manage multiple visited polling stations,"Eine Möglichkeit, mehrere besuchte Wahllokale zu verwalten" +about_app.app_provides.item2,An efficient method to monitor the flow of the polling process through forms set up by accrediting organizations,"Eine effiziente Methode zur Beobachtung des Ablaufs des Wahlprozesses anhand von Formularen, die von akkreditierten Organisationen erstellt wurden." +about_app.app_provides.item3,A means of quickly reporting other problematic issues outside the standard forms,"Eine Möglichkeit, andere problematische Sachverhalte außerhalb der Standardformulare schnell zu melden" +about_app.usage,"The Vote Monitor App can be used during any type of election in any country worldwide. Since 2016, it has been used in multiple election rounds in Romania, Poland and Bulgaria.","Die Vote Monitor App kann bei jeder Art von Wahl in jedem Land weltweit eingesetzt werden. Seit 2016 wurde sie bereits in mehreren Wahlgängen in Rumänien, Polen und Bulgarien verwendet." +about_app.version,Vote Monitor version {{value}},Vote Monitor Version {{value}} +about_app_citizen.title,About Vote Monitor,Über Vote Monitor +about_app_citizen.title_observer,About Vote Monitor Citizen,Über Vote Monitor Citizen +about_app_citizen.p1,"Vote Monitor Citizen enables everyday citizens to actively participate in monitoring elections by reporting any irregularities they encounter during the electoral period, including campaign activities, polling station operations, and voting day procedures.","Vote Monitor Citizen ermöglicht es normalen Bürgern, sich aktiv an der Beobachtung von Wahlen zu beteiligen, indem sie Unregelmäßigkeiten melden, die ihnen während der Wahlperiode auffallen, darunter Wahlkampfaktivitäten, Abläufe in Wahllokalen und Verfahren am Wahltag." +about_app_citizen.p2,"Vote Monitor Citizen is an extension of the Vote Monitor app, which was initially developed by Code for Romania/Commit Global for independent observers working alongside NGOs in election monitoring efforts.","Vote Monitor Citizen ist eine Erweiterung der Vote Monitor-App, die ursprünglich von Code for Romania/Commit Global für unabhängige Beobachter entwickelt wurde, die gemeinsam mit NGOs bei der Wahlbeobachtung tätig sind." +about_app_citizen.p3,"Users can submit real-time reports that will be analysed by non-governmental organizations involved in the electoral process. These reports may contribute to detailed observation documents and, in some instances, could be forwarded to relevant institutions to improve future elections.","Die Nutzer können Echtzeitberichte einreichen, die von Nichtregierungsorganisationen, die am Wahlprozess beteiligt sind, analysiert werden. Diese Berichte können zu detaillierten Beobachtungsdokumenten beitragen und in einigen Fällen an relevante Institutionen weitergeleitet werden, um künftige Wahlen zu verbessern." +about_app_citizen.p4,"While citizen reports play a vital role in promoting transparency, please note that submitting a report through this app does not constitute an official complaint to the institutions responsible for organizing elections.","Bürgerberichte spielen zwar eine wichtige Rolle bei der Förderung der Transparenz; bitte beachten Sie jedoch, dass die Einreichung eines Berichts über diese App keine offizielle Beschwerde bei den für die Organisation von Wahlen zuständigen Institutionen darstellt." +about_app_citizen.version,Vote Monitor version {{value}},Vote Monitor Version {{value}} +loading_screen.heading,Loading...,Wird geladen... +loading_screen.paragraph,"We are preparing all the data, please wait!","Wir bereiten alle Daten vor, bitte warten Sie!" +tabs.observation,Observation,Beobachtung +tabs.quick_report,Report,Bericht +tabs.guides,Guides,Anleitungen +tabs.inbox,Inbox,Posteingang +tabs.more,More,Mehr +tabs.report,Report,Bericht +Leitfäden und Ressourcen Ihrer Organisation griffbereit.,Resources,Ressourcen +tabs.updates,Updates,Aktualisierungen +add_polling_station.title,Add polling station,Wahllokal hinzufügen +add_polling_station.progress.location,Add polling station from {{value}},Wahllokal von {{value}} hinzufügen +add_polling_station.actions.next_step,Next step,Nächster Schritt +add_polling_station.actions.back,Back,Zurück +add_polling_station.actions.finalize,Finalize,Abschließen +add_polling_station.error,Error while loading polling stations!,Fehler beim Laden der Wahllokale! +observation.title,Polling Station Observation,Beobachtung von Wahllokalen +observation.no_election_round.heading,No election event to observe yet,Noch keine Wahlhandlung zu beobachten +observation.no_election_round.paragraph,You will be able to use the app once you will be assigned to an election event by your organization,"Sie können die App nutzen, sobald Sie von Ihrer Organisation einer Wahl zugewiesen wurden." +observation.no_form,The Polling Station Information form is not configured,Das Formular „Informationen zum Wahllokal“ ist nicht konfiguriert. +observation.refresh_page,"If data is not visible, try refreshing the page to retrieve the most recent information","Wenn die Daten nicht angezeigt werden, aktualisieren Sie die Seite, um die neuesten Informationen abzurufen." +observation.no_visited_polling_stations.heading,No visited polling stations yet,Noch keine Wahllokale besucht +observation.no_visited_polling_stations.paragraph,Start configuring your first polling station before completing observation forms.,"Beginnen Sie mit der Konfiguration Ihres ersten Wahllokals, bevor Sie die Beobachtungsformulare ausfüllen." +observation.no_visited_polling_stations.add,Add your first polling station,Fügen Sie Ihr erstes Wahllokal hinzu +observation.my_polling_stations.heading,My polling stations,Meine Wahllokale +observation.my_polling_stations.paragraph,You can switch between polling stations if you want to revisit form answers or polling station information.,"Sie können zwischen Wahllokalen wechseln, wenn Sie Formularantworten oder Wahllokaldaten erneut aufrufen möchten." +observation.my_polling_stations.add,Add new polling station,Neues Wahllokal hinzufügen +observation.polling_stations_information.heading,Polling station information,Informationen zum Wahllokal +observation.polling_stations_information.time_select.not_defined,Not defined,Nicht definiert +observation.polling_stations_information.time_select.arrival_time,Arrival time,Ankunftszeit +observation.polling_stations_information.time_select.departure_time,Departure time,Zeitpunkt des Aufbruchs +observation.polling_stations_information.time_select.save,Done,Erledigt +observation.polling_stations_information.time_select.error.arrival_first,Please select an arrival time first.,Bitte wählen Sie zuerst eine Ankunftszeit. +observation.polling_stations_information.time_select.error.later_departure,Please select a departure time that is at a later time than the arrival.,"Bitte wählen Sie einen Zeitpunkt des Aufbruchs, der später als die Ankunftszeit liegt." +observation.polling_stations_information.time_select.error.earlier_arrival,Please select an arrival time that is at an earlier time than the departure.,"Bitte wählen Sie eine Ankunftszeit, die vor dem Zeitpunkt des Aufbruchs liegt." +observation.polling_stations_information.time_select.error.server,We couldn't send the information to the server.,Wir konnten die Informationen nicht an den Server senden. +observation.polling_stations_information.observation_time.observation_time,Observation time,Beobachtungszeit +observation.polling_stations_information.observation_time.not_defined,Not defined,Nicht definiert +observation.polling_stations_information.observation_time.no_of_breaks,{{value}} breaks,{{Wert}} Unterbrechungen +observation.polling_stations_information.observation_time.one_break,{{value}} break,{{Wert}} Unterbrechung +observation.polling_stations_information.observation_time.arrival_and_departure,Arrival and departure time,Ankunftszeit und Zeitpunkt des Aufbruchs +observation.polling_stations_information.observation_time.arrival_time,Arrival time,Ankunftszeit +observation.polling_stations_information.observation_time.departure_time,Departure time,Zeitpunkt des Aufbruchs +observation.polling_stations_information.observation_time.departure_after_arrival,The departure time must be after the arrival time,Der Zeitpunkt des Aufbruchs muss nach der Ankunftszeit liegen. +observation.polling_stations_information.observation_time.select_arrival_time,Select arrival time,Ankunftszeit auswählen +observation.polling_stations_information.observation_time.select_departure_time,Select departure time,Zeitpunkt des Aufbruchs auswählen +observation.polling_stations_information.observation_time.add_break,Add new break in observation,Neue Pause in Beobachtung hinzufügen +observation.polling_stations_information.observation_time.break,Break {{value}},Pause {{Wert}} +observation.polling_stations_information.observation_time.start_time,Start time,Startzeit +observation.polling_stations_information.observation_time.select_start_time,Select start time,Startzeit auswählen +observation.polling_stations_information.observation_time.end_time,End time,Endzeitpunkt +observation.polling_stations_information.observation_time.select_end_time,Select end time, Endzeitpunkt auswählen +observation.polling_stations_information.observation_time.undefined_date,DD/MM/YYYY,Tag/Monat/Jahr +observation.polling_stations_information.observation_time.undefined_time,HH:MM,Stunde:Minute +observation.polling_stations_information.observation_time.save,Save observation time,Beobachtungszeit speichern +observation.polling_stations_information.observation_time.clear,Clear observation time,Beobachtungszeit löschen +observation.polling_stations_information.observation_time.confirmation_modals.clear.title,Clear observation time,Beobachtungszeit löschen +observation.polling_stations_information.observation_time.confirmation_modals.clear.description,"This action will delete your arrival and departure time, including all your breaks entered so far for this polling station. To avoid unintended information loss, please ensure you check the times before performing this action.","Durch diese Aktion werden Ihre Ankunftszeit und die Zeit des Aufbruchs sowie alle bisher für dieses Wahllokal eingegebenen Pausen gelöscht. Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte die Zeiten, bevor Sie diese Aktion durchführen." +observation.polling_stations_information.observation_time.confirmation_modals.clear.actions.cancel,Cancel,Abbrechen +observation.polling_stations_information.observation_time.confirmation_modals.clear.actions.clear,Clear observation time,Beobachtungszeit löschen +observation.polling_stations_information.observation_time.confirmation_modals.delete.title,Delete break,Pause löschen +observation.polling_stations_information.observation_time.confirmation_modals.delete.description,"This action will delete your break. To avoid unintended information loss, please ensure you check the times before performing this action.","Durch diese Aktion wird Ihre Pause gelöscht. Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte die Zeiten, bevor Sie diese Aktion ausführen." +observation.polling_stations_information.observation_time.confirmation_modals.delete.actions.cancel,Cancel,Abbrechen +observation.polling_stations_information.observation_time.confirmation_modals.delete.actions.delete,Delete break,Pause löschen +observation.polling_stations_information.observation_time.confirmation_modals.unsaved_changes.title,Save changes to observation time,Änderungen an der Beobachtungszeit speichern +observation.polling_stations_information.observation_time.confirmation_modals.unsaved_changes.description,You have unsaved changes related to the observation time you entered. Do you want to save your changes before leaving the page?,"Sie haben ungespeicherte Änderungen bezüglich der von Ihnen eingegebenen Beobachtungszeit vorgenommen. Möchten Sie Ihre Änderungen speichern, bevor Sie die Seite verlassen?" +observation.polling_stations_information.observation_time.confirmation_modals.unsaved_changes.actions.discard,Discard,Verwerfen +observation.polling_stations_information.observation_time.confirmation_modals.unsaved_changes.actions.save,Save changes,Änderungen speichern +observation.polling_stations_information.observation_time.confirmation_modals.unable_to_save.title,Unable to Save Observation Time,Beobachtungszeit kann nicht gespeichert werden +observation.polling_stations_information.observation_time.confirmation_modals.unable_to_save.p1,The times you entered cannot be saved due to a conflict between the break periods and the arrival/departure times.,Die von Ihnen eingegebenen Zeiten können aufgrund eines Konflikts zwischen den Pausen und den Ankunftszeiten/Zeiten des Aufbruchs nicht gespeichert werden. +observation.polling_stations_information.observation_time.confirmation_modals.unable_to_save.p2,Please ensure that break periods do not exceed the time interval defined by the arrival and departure observation times. Please review and adjust the times accordingly.,"Bitte stellen Sie sicher, dass die Pausen nicht länger sind als die Zeit zwischen den Ankunftszeiten und den Zeiten des Aufbruchs. Bitte überprüfen Sie die Zeiten und passen Sie sie entsprechend an." +observation.polling_stations_information.observation_time.confirmation_modals.unable_to_save.ok,OK,OK +observation.polling_stations_information.polling_station_form.paragraph,Answer a few quick questions about the polling station.,Beantworten Sie ein paar kurze Fragen zum Wahllokal. +observation.polling_stations_information.polling_station_form.form_details_button_label,Polling station questions,Fragen zum Wahllokal +observation.polling_stations_information.polling_station_form.number_of_questions,{{value}} questions,{{value}} Fragen +observation.polling_stations_information.polling_station_form.answer_questions,Answer questions,Fragen beantworten +observation.forms.heading,Observation forms,Beobachtungsformulare +observation.forms.list.empty,Observation forms will appear here once your organization will publish them in the system.,"Die Beobachtungsformulare werden hier angezeigt, sobald Ihre Organisation sie im System veröffentlicht hat." +observation.forms.list.error.paragraph1,Something went wrong!,Etwas ist schiefgelaufen! +observation.forms.list.error.paragraph2,We could not fetch the data. Press the retry button to try again!,"Die Daten konnten nicht abgerufen werden. Klicken Sie auf die Schaltfläche „Wiederholen“, um es erneut zu versuchen!" +observation.forms.list.error.retry,Retry,Wiederholen +observation.forms.select_language_modal.header,Select form language,Formularsprache auswählen +observation.forms.select_language_modal.helper,The selected form is available in multiple languages. Please select which one you would like to continue with.,"Das ausgewählte Formular ist in mehreren Sprachen verfügbar. Bitte wählen Sie die Sprache aus, in der Sie fortfahren möchten." +observation.forms.select_language_modal.error,Please select one of the options,Bitte wählen Sie eine der Optionen aus. +observation.options_menu.manage_my_polling_stations,Manage my polling stations,Meine Wahllokale verwalten +polling_station_information_form.title,Polling station information,Informationen zum Wahllokal +polling_station_information_form.submit,Submit answers,Antworten abschicken +polling_station_information_form.form.max,Input cannot exceed {{value}} characters,Die Eingabe darf {{value}} Zeichen nicht überschreiten. +polling_station_information_form.form.placeholder,Please enter a text..,Bitte einen Text eingeben. +polling_station_information_form.menu.clear,Clear form (delete all answers),Formular löschen (alle Antworten löschen) +polling_station_information_form.warning_modal.title,Clear Polling station information form,Löschen des Formulars mit Wahllokalangaben +polling_station_information_form.warning_modal.description,"This action will delete all answers entered so far for this form. To avoid unintended information loss, please ensure you check the form before performing this action.","Durch diese Aktion werden alle bisher in dieses Formular eingegebenen Antworten gelöscht. Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte das Formular, bevor Sie diese Aktion ausführen." +polling_station_information_form.warning_modal.actions.cancel,Cancel,abbrechen +polling_station_information_form.warning_modal.actions.clear,Clear form,Formular löschen +polling_station_information_form.unsaved_changes_dialog.title,Save changes to form,Änderungen im Formular speichern +polling_station_information_form.unsaved_changes_dialog.description,You have unsaved changes on this form. Do you want to save your changes before leaving?,Sie haben in diesem Formular ungespeicherte Änderungen vorgenommen. Möchten Sie Ihre Änderungen vor dem Verlassen speichern? +polling_station_information_form.unsaved_changes_dialog.actions.discard,Discard,Verwerfen +polling_station_information_form.unsaved_changes_dialog.actions.save,Save changes,Änderungen speichern +form_overview.overview.heading,Form Overview,Formularübersicht +form_overview.overview.status,Form status,Formularstatus +form_overview.overview.answered_questions,Answered questions,Beantwortete Fragen +form_overview.overview.resume,Resume form,Formular weiter bearbeiten +form_overview.overview.start_form,Start form,Formular beginnen +form_overview.overview.progress,progress,Fortschritt +form_overview.overview.submissions_list,Form submissions,Formularübermittlung +form_overview.overview.add_submission,Add submission,Eingabe hinzufügen +form_overview.overview.number_of_submissions,# of submissions: {{value}},Anzahl der Eingaben: {{value}} +form_overview.questions.title,Questions,Fragen +form_overview.questions.not_answered,Not Answered,Nicht beantwortet +form_overview.questions.answered,Answered,Beantwortet +form_overview.questions.no_notes,No attached notes,Keine angehängten Notizen +form_overview.questions.notes,Includes attached notes,Enthält beigefügte Notizen +form_overview.attachments.notes,{{count}} Note(s),{{count}} Anmerkung(en) +form_overview.attachments.media,{{count}} Media file(s),{{count}} Mediendatei(en) +form_overview.error,Error while loading the form data!,Fehler beim Laden der Formulardaten! +form_overview.menu.clear,Clear form (delete all answers),Formular löschen (alle Antworten löschen) +form_overview.menu.change_language,Change language,Sprache ändern +form_overview.menu.delete,Delete submission,Eingabe löschen +form_overview.clear_answers_modal.title,Clear form {{value}},Formular löschen {{value}} +form_overview.clear_answers_modal.description.p1,This action will delete all answers entered so far for this form (including notes and media files). Status of all questions will be reverted to 'Not Answered'.,Durch diese Aktion werden alle bisher für dieses Formular eingegebenen Antworten (einschließlich Notizen und Mediendateien) gelöscht. Der Status aller Fragen wird auf „Nicht beantwortet“ zurückgesetzt. +form_overview.clear_answers_modal.description.p2,"To avoid unintended information loss, please ensure you check the form before performing this action","Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte das Formular, bevor Sie diese Aktion ausführen." +form_overview.clear_answers_modal.actions.clear,Clear form,Formular löschen +form_overview.clear_answers_modal.actions.cancel,Cancel,Abbrechen +form_overview.delete_submission_modal.title,Delete submission,Eintrag löschen +form_overview.delete_submission_modal.description.p1,This action will delete this form submission (including notes and media files).,Durch diese Aktion wird diese Formularübermittlung (einschließlich Notizen und Mediendateien) gelöscht. +form_overview.delete_submission_modal.description.p2,"To avoid unintended information loss, please ensure you check the form before performing this action","Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte das Formular, bevor Sie diese Aktion ausführen." +form_overview.delete_submission_modal.actions.clear,Delete submission,Eintrag löschen +form_overview.delete_submission_modal.actions.cancel,Cancel,Abbrechen +polling_station_form_wizard.progress_bar.label,Form progress,Formularfortschritt +polling_station_form_wizard.progress_bar.clear_answer,Clear answer,Antwort löschen +polling_station_form_wizard.form.min,The field must be at least {{value}} characters long,Das Feld muss mindestens {{value}} Zeichen lang sein. +polling_station_form_wizard.form.max,The field must have a maximum of {{value}} characters,Das Feld darf maximal {{value}} Zeichen enthalten. +polling_station_form_wizard.form.required,This field is required,Dieses Feld ist ein Pflichtfeld. +polling_station_form_wizard.form.date_placeholder,Please enter a date,Bitte geben Sie ein Datum ein. +polling_station_form_wizard.form.text_placeholder,Please enter a text,Bitte geben Sie einen Text ein. +polling_station_form_wizard.save_and_continue,Save and continue,Speichern und fortfahren +polling_station_form_wizard.attachments.heading,Uploaded media,Hochgeladene Medien +polling_station_form_wizard.attachments.loading,Adding attachment... ,Anhang hinzufügen... +polling_station_form_wizard.attachments.error,Error while sending the attachment!,Fehler beim Senden des Anhangs! +polling_station_form_wizard.attachments.add,Add notes and media,Notizen und Medien hinzufügen +polling_station_form_wizard.attachments.menu.add_note,Add note,Notiz hinzufügen +polling_station_form_wizard.attachments.menu.load,Load from gallery,Aus Galerie laden +polling_station_form_wizard.attachments.menu.take_picture,Take a photo,Bild aufnehmen +polling_station_form_wizard.attachments.menu.record_video,Record a video,Video aufnehmen +polling_station_form_wizard.attachments.menu.upload_audio,Upload audio file,Audiodatei hochladen +polling_station_form_wizard.attachments.upload.compressing,Compressing attachment: ,Anhang komprimieren +polling_station_form_wizard.attachments.upload.preparing,Preparing attachment...,Anhang wird vorbereitet... +polling_station_form_wizard.attachments.upload.starting,Starting the upload...,Hochladen wird gestartet... +polling_station_form_wizard.attachments.upload.progress,Upload progress:,Hochladen-Fortschritt: +polling_station_form_wizard.attachments.upload.completed,Upload completed.,Hochladen abgeschlossen. +polling_station_form_wizard.attachments.upload.aborted,Upload aborted.,Hochladen abgebrochen. +polling_station_form_wizard.attachments.upload.offline,You need an internet connection in order to perform this action.,"Sie benötigen eine Internetverbindung, um diese Aktion auszuführen." +polling_station_form_wizard.attachments.upload.abort_offline,Go online to continue or abort the upload,"Gehen Sie online, um das Hochladen fortzusetzen oder abzubrechen." +polling_station_form_wizard.attachments.upload.abort_offline_button,Cancel the upload,Hochladen abbrechen +polling_station_form_wizard.attachments.upload.uploaded,Successfully uploaded {{value}} files.,{{value}} Dateien wurden erfolgreich hochgeladen. +polling_station_form_wizard.attachments.upload.abort_offline_confirm,Are you sure you want to abort the upload?,Möchten Sie das Hochladen wirklich abbrechen? +polling_station_form_wizard.attachments.upload.abort_offline_cancel,Cancel,Abbrechen +polling_station_form_wizard.notes.heading,Notes,Anmerkungen +polling_station_form_wizard.notes.add.heading,Add a note,Eine Anmerkung hinzufügen +polling_station_form_wizard.notes.add.form.input.placeholder,Add any relevant notes to this question.,Fügen Sie dieser Frage alle relevanten Anmerkungen hinzu. +polling_station_form_wizard.notes.add.form.input.max,"Input cannot exceed 10,000 characters",Die Eingabe darf 10.000 Zeichen nicht überschreiten. +polling_station_form_wizard.notes.add.form.input.required,This field is required,Dieses Feld ist ein Pflichtfeld. +polling_station_form_wizard.notes.edit.heading,Edit note,Anmerkung bearbeiten +polling_station_form_wizard.notes.edit.delete,Delete note,Anmerkung löschen +polling_station_form_wizard.notes.delete.title,Delete note,Anmerkung löschen +polling_station_form_wizard.notes.delete.description,"This action cannot be undone. Once deleted, a note cannot be retrieved.",Diese Aktion kann nicht rückgängig gemacht werden. Einmal gelöschte Anmerkungen können nicht wiederhergestellt werden. +polling_station_form_wizard.notes.delete.actions.cancel,Cancel,Abbrechen +polling_station_form_wizard.notes.delete.actions.delete,Delete,Löschen +polling_station_form_wizard.warning_modal.question.title,Clear answer to question {{value}},Löschen der Antwort zu Frage {{value}} +polling_station_form_wizard.warning_modal.question.description,"Clearing the answer to this question will permanently delete all its information (including notes and media files), as well as all its connected questions. Question statuses will be reverted to Not Answered.",Durch das Löschen der Antwort auf diese Frage werden alle zugehörigen Informationen (einschließlich Notizen und Mediendateien) sowie alle damit verbundenen Fragen dauerhaft gelöscht. Der Status der Fragen wird auf „Nicht beantwortet“ zurückgesetzt. +polling_station_form_wizard.warning_modal.question.actions.cancel,Cancel,Abbrechen +polling_station_form_wizard.warning_modal.question.actions.clear,Clear answer,Antwort löschen +polling_station_form_wizard.warning_modal.attachment.title,Delete media file,Mediendatei löschen +polling_station_form_wizard.warning_modal.attachment.description,"This action cannot be undone. Once deleted, a media file cannot be retrieved.",Dieser Vorgang kann nicht rückgängig gemacht werden. Einmal gelöschte Mediendateien können nicht wiederhergestellt werden. +polling_station_form_wizard.warning_modal.attachment.actions.cancel,Cancel,Abbrechen +polling_station_form_wizard.warning_modal.attachment.actions.clear,Delete,Löschen +polling_station_form_wizard.warning_modal.unsaved_answer.title,Save changes to question,Änderungen an der Frage speichern +polling_station_form_wizard.warning_modal.unsaved_answer.description,You have unsaved changes on this question. Do you want to save your changes before leaving?,Sie haben an dieser Frage ungespeicherte Änderungen vorgenommen. Möchten Sie Ihre Änderungen vor dem Verlassen speichern? +polling_station_form_wizard.warning_modal.unsaved_answer.actions.cancel,Discard,Verwerfen +polling_station_form_wizard.warning_modal.unsaved_answer.actions.save,Save changes,Änderungen speichern +polling_station_form_wizard.error,Error while loading question data!,Fehler beim Laden der Fragendaten! +manage_my_polling_stations.empty.title,No visited polling stations yet,Noch keine Wahllokale besucht +manage_my_polling_stations.general_text,Manage my polling stations,Meine Wahllokale verwalten +manage_my_polling_stations.ps_card.header,Polling station: {{value}},Wahllokal: {{value}} +manage_my_polling_stations.ps_card.l1,[Location L1],[Ort L1] +manage_my_polling_stations.ps_card.l2,[Location L2],[Ort L2] +manage_my_polling_stations.ps_card.l3,[Location L3],[Ort L3] +manage_my_polling_stations.ps_card.l4,[Location L4],[Ort L4] +manage_my_polling_stations.ps_card.l5,[Location L5],[Ort L5] +manage_my_polling_stations.ps_card.street,Street,Straße +manage_my_polling_stations.ps_card.ps_number,Polling station number,Nummer des Wahllokals +manage_my_polling_stations.warning_dialog.title,Remove Polling station: {{value}},Wahllokal entfernen: {{value}} +manage_my_polling_stations.warning_dialog.description,This action will remove the polling station from your list of visited polling stations. You can add it again through the Add New Polling Station process.,Durch diese Aktion wird das Wahllokal aus Ihrer Liste der besuchten Wahllokale entfernt. Sie können es über den Vorgang „Neues Wahllokal hinzufügen” erneut hinzufügen. +manage_my_polling_stations.warning_dialog.actions.cancel,Cancel,Abbrechen +manage_my_polling_stations.warning_dialog.actions.remove,Remove,Entfernen +manage_my_polling_stations.warning_dialog.actions.loading,Loading...,Laden... +manage_my_polling_stations.removal_unallowed_dialog.title,Removing polling station {{value}} not allowed,Entfernen des Wahllokals {{value}} nicht zulässig +manage_my_polling_stations.removal_unallowed_dialog.description,"The polling station cannot be removed from your list because it contains data (Polling station information and/or Form answers) which cannot be deleted by the system on your behalf. If you want to remove this polling station, please clear polling station information and form answers manually, then retry this action.","Das Wahllokal kann nicht aus Ihrer Liste entfernt werden, da es Daten enthält (Informationen zum Wahllokal und/oder Formularantworten), die vom System nicht in Ihrem Namen gelöscht werden können. Wenn Sie dieses Wahllokal entfernen möchten, löschen Sie bitte die Informationen zum Wahllokal und die Formularantworten manuell und wiederholen Sie dann diesen Vorgang." +manage_my_polling_stations.delete_success,Polling station deleted successfully!,Wahllokal erfolgreich gelöscht! +manage_my_polling_stations.delete_error,We encountered a problem while deleting the polling station visit. Please try again.,Beim Löschen des besuchten Wahllokals ist ein Problem aufgetreten. Bitte versuchen Sie es erneut. +manage_my_polling_stations.offline_error_toast_msg,You need an internet connection in order to perform this action.,"Sie benötigen eine Internetverbindung, um diese Aktion auszuführen." +quick_report.list.title,Quick Report,Kurzbericht +quick_report.list.heading,My reported issues,Meine gemeldeten Vorkommnise +quick_report.list.error,Error while loading the reports!,Fehler beim Laden der Berichte! +quick_report.list.empty,"Start sending quick reports to the organization if you notice irregularities inside, outside the polling station or whenever needed.","Senden Sie umgehend Kurzberichte an die Organisation, wenn Sie Unregelmäßigkeiten innerhalb oder außerhalb des Wahllokals bemerken oder wann immer dies erforderlich ist." +quick_report.list.add,Report new issue,Neue Vorkommnisse melden +quick_report.list.no_files,No attached files,Keine angehängten Dateien +quick_report.list.attachment_one,{{count}} attachment file,{{count}} angehängte Datei +quick_report.list.attachment_other,{{count}} attachment files,{{count}} angehängte Dateien +quick_report.attachments.heading,Uploaded media,Hochgeladene Medien +quick_report.attachments.loading,Adding attachment... ,Anhang hinzufügen... +quick_report.attachments.upload.preparing,Preparing attachment...,Anhang wird vorbereitet... +quick_report.attachments.upload.starting,Starting the upload...,Hochladen wird gestartet... +quick_report.attachments.upload.progress,Upload progress:,Fortschritt beim Hochladen: +quick_report.attachments.upload.completed,Upload completed.,Hochladen abgeschlossen. +quick_report.attachments.upload.aborted,Upload aborted.,Hochladen abgebrochen. +quick_report.attachments.error,Error while sending the attachment!,Fehler beim Senden des Anhangs! +quick_report.options_menu.manage_my_polling_stations,Manage my polling stations,Meine Wahllokale verwalten +quick_report.info_modal.p1,"From this section, you can quickly report any electoral irregularities you observe at polling stations or nearby areas.","In diesem Abschnitt können Sie schnell alle Unregelmäßigkeiten bei Wahlen melden, die Sie in Wahllokalen oder deren Umgebung beobachten." +quick_report.info_modal.p2,"This feature allows you to alert the organization instantly, outside the regular observation forms, ensuring urgent issues are addressed promptly.","Mit dieser Funktion können Sie die Organisation außerhalb der regulären Beobachtungsformulare sofort benachrichtigen und so sicherstellen, dass dringende Vorkommnisse umgehend behandelt werden." +report_new_issue.title,Report new issue,Neue Vorkommnisse melden +report_new_issue.upload.compressing,Compressing attachment: ,Anhang komprimieren +report_new_issue.upload.preparing,Preparing attachment...,Anhang wird vorbereitet... +report_new_issue.upload.starting,Starting the upload...,Hochladen wird gestartet... +report_new_issue.upload.progress,Uploading attachments: ,Hochladen-Fortschritt: +report_new_issue.upload.completed,Upload completed.,Hochladen abgeschlossen. +report_new_issue.upload.aborted,Upload aborted.,Hochladen abgebrochen. +report_new_issue.upload.offline,You need an internet connection in order to perform this action.,"Sie benötigen eine Internetverbindung, um diese Aktion auszuführen." +report_new_issue.media.heading,Uploaded media,Hochgeladene Medien +report_new_issue.media.add,Add media,Medien hinzufügen +report_new_issue.media.error,Error while sending the attachment!,Fehler beim Senden des Anhangs! +report_new_issue.media.menu.load,Load from gallery,Aus Galerie laden +report_new_issue.media.menu.take_picture,Take a photo,Bild aufnehmen +report_new_issue.media.menu.record_video,Record video,Video aufnehmen +report_new_issue.media.menu.upload_audio,Upload audio file,Audiodatei hochladen +report_new_issue.form.polling_station_id.label,Polling station *,Wahllokal * +report_new_issue.form.polling_station_id.placeholder,Select polling station,Wahllokal auswählen +report_new_issue.form.polling_station_id.extra,"Please write here some identification details for this polling station (such as address, name, number, etc.)","Bitte geben Sie hier einige Identifikationsdaten für dieses Wahllokal an (z. B. Adresse, Name, Nummer usw.)." +report_new_issue.form.polling_station_id.required,This field is required.,Dieses Feld ist ein Pflichtfeld. +report_new_issue.form.polling_station_id.options.other,Other polling station,Anderes Wahllokal +report_new_issue.form.polling_station_id.options.not_related,Not related to a polling station,Nicht mit einem Wahllokal verbunden +report_new_issue.form.incident_category.label,Incident category *,Vorfallkategorie * +report_new_issue.form.incident_category.placeholder,Category,Kategorie +report_new_issue.form.incident_category.required,This field is required.,Dieses Feld ist ein Pflichtfeld. +report_new_issue.form.incident_category.options.PhysicalViolenceIntimidationPressure,Physical violence/intimidation/pressure,Körperliche Gewalt/Einschüchterung/Druck +report_new_issue.form.incident_category.options.CampaigningAtPollingStation,Campaigning at the polling station,Wahlkampf im Wahllokal +report_new_issue.form.incident_category.options.RestrictionOfObserversRights,Restriction of observer's (representative's/media) rights,Einschränkung der Rechte von Beobachtern (Vertretern/Medien) +report_new_issue.form.incident_category.options.UnauthorizedPersonsAtPollingStation,Unauthorized person(s) at the polling station,Unbefugte Person(en) im Wahllokal +report_new_issue.form.incident_category.options.ViolationDuringVoterVerificationProcess,Violation during voter verification process,Verstoß während des Wählerüberprüfungsprozesses +report_new_issue.form.incident_category.options.VotingWithImproperDocumentation,Voting with improper documentation,Wählen mit unzulässigen Dokumenten +report_new_issue.form.incident_category.options.IllegalRestrictionOfVotersRightToVote,Illegal restriction of voter's right to vote,Illegale Einschränkung des Wahlrechts der Wählenden +report_new_issue.form.incident_category.options.DamagingOrSeizingElectionMaterials,Damaging of/seizing election materials,Beschädigung/Beschlagnahmung von Wahlmaterialien +report_new_issue.form.incident_category.options.ImproperFilingOrHandlingOfElectionDocumentation,Improper filing/handling of election documentation,Unsachgemäße Einreichung/Behandlung von Wahlunterlagen +report_new_issue.form.incident_category.options.BallotStuffing,Ballot stuffing,Stopfen von Stimmzetteln +report_new_issue.form.incident_category.options.ViolationsRelatedToControlPaper,Violations related to the control paper,Verstöße im Zusammenhang mit dem Kontrollzettel +report_new_issue.form.incident_category.options.NotCheckingVoterIdentificationSafeguardMeasures,Not checking the voter identification safeguard measures,Nichtüberprüfung der Sicherheitsmaßnahmen zur Wähleridentifizierung +report_new_issue.form.incident_category.options.VotingWithoutVoterIdentificationSafeguardMeasures,Voting without voter identification safeguard measures,Wählen ohne Maßnahmen zum Schutz der Wähleridentität +report_new_issue.form.incident_category.options.BreachOfSecrecyOfVote,Breach of secrecy of vote,Verletzung des Wahlgeheimnisses +report_new_issue.form.incident_category.options.ViolationsRelatedToMobileBallotBox,Violations related to the mobile ballot box,Verstöße im Zusammenhang mit der mobilen Wahlurne +report_new_issue.form.incident_category.options.NumberOfBallotsExceedsNumberOfVoters,Number of ballots exceed the number of voters,Die Anzahl der Stimmzettel übersteigt die Anzahl der Wählenden +report_new_issue.form.incident_category.options.ImproperInvalidationOrValidationOfBallots,Improper invalidation/validation of ballots,Unzulässige Ungültigkeitserklärung/Gültigkeitserklärung von Stimmzetteln +report_new_issue.form.incident_category.options.FalsificationOrImproperCorrectionOfFinalProtocol,Falsification/improper correction of the final protocol,Fälschung/unzulässige Korrektur des Abschlussprotokolls +report_new_issue.form.incident_category.options.RefusalToIssueCopyOfFinalProtocolOrIssuingImproperCopy,Refusal to issue a copy of the final protocol/issuing an improper copy,Verweigerung der Ausstellung einer Kopie des endgültigen Protokolls/Ausstellung einer unzulässigen Kopie +report_new_issue.form.incident_category.options.ImproperFillingInOfFinalProtocol,Improper filling in of the final protocol,Unsachgemäßes Ausfüllen des Abschlussprotokolls +report_new_issue.form.incident_category.options.ViolationOfSealingProceduresOfElectionMaterials,Violation of the sealing procedures of the election materials,Verstoß gegen die Versiegelungsverfahren für Wahlunterlagen +report_new_issue.form.incident_category.options.ViolationsRelatedToVoterLists,Violations related to the voter lists,Verstöße im Zusammenhang mit den Wählendenlisten +report_new_issue.form.incident_category.options.Other,Other,Sonstiges +report_new_issue.form.polling_station_details.label,Polling station details *,Angaben zum Wahllokal * +report_new_issue.form.polling_station_details.placeholder,"Please write here some identification details for this polling station (such as address, name, number, etc.)","Bitte geben Sie hier einige Identifikationsdaten für dieses Wahllokal an (z. B. Adresse, Name, Nummer usw.)." +report_new_issue.form.polling_station_details.required,This field is required.,Dieses Feld ist ein Pflichtfeld. +report_new_issue.form.polling_station_details.max,Input cannot exceed {{value}} characters,Die Eingabe darf {{value}} Zeichen nicht überschreiten. +report_new_issue.form.issue_title.label,Title of issue *,Titel des Vorfalls * +report_new_issue.form.issue_title.placeholder,Write a title for the issue.,Schreiben Sie einen Titel für den Vorfall. +report_new_issue.form.issue_title.required,Title of the issue is required,Ein Titel des Vorfalls ist erforderlich. +report_new_issue.form.issue_title.max,Input cannot exceed {{value}} characters,Die Eingabe darf {{value}} Zeichen nicht überschreiten. +report_new_issue.form.issue_description.label,Description *,Beschreibung * +report_new_issue.form.issue_description.placeholder,Describe the situation in detail here.,Beschreiben Sie die Situation hier ausführlich. +report_new_issue.form.issue_description.required,Description of the issue is required,Eine Beschreibung des Vorfalls ist erforderlich. +report_new_issue.form.issue_description.max,Input cannot exceed {{value}} characters,Die Eingabe darf {{value}} Zeichen nicht überschreiten. +report_new_issue.form.submit,Submit issue,Vorfall melden +report_new_issue.form.clear,Clear,Löschen +report_new_issue.form.loading,Processing...,Wird verarbeitet... +report_new_issue.form.error,Error while adding the report,Fehler beim Hinzufügen des Berichts +report_details.title,, +report_details.uploaded_media,Uploaded media,Hochgeladene Medien +report_details.no_files,No attached files,Keine angehängten Dateien +report_details.error,Error while loading the report,Fehler beim Laden des Berichts +guides.title,Resources,Ressourcen +guides.empty.heading,No guides to read yet,Noch keine Leitfäden zum Lesen +guides.empty.paragraph,Guides and resources from your organization at your hands.,Leitfäden und Ressourcen Ihrer Organisation griffbereit. +guides.list.heading,Guides,Leitfäden +guides.list.guide.backup_title,Document,Dokument +guides.list.guide.created_on,Created on,Erstellt am +guides.options_sheet.manage_my_polling_stations,Manage my polling stations,Meine Wahllokale verwalten +guides.info_modal,"In this section, expect to have key information and resources designed to help you observe electoral processes and report any electoral issues or irregularities you encounter as an independent observer.","In diesem Abschnitt finden Sie wichtige Informationen und Ressourcen, die Ihnen dabei helfen sollen, Wahlprozesse zu beobachten und als unabhängige*r Beobachter*in aufgetretene Wahlprobleme oder Unregelmäßigkeiten zu melden." +resources.title,Resources,Ressourcen +resources.info,"In this section, expect to have key information and resources designed to help you observe electoral processes and report any electoral issues or irregularities you encounter as a citizen.","In diesem Abschnitt finden Sie wichtige Informationen und Ressourcen, die Ihnen dabei helfen sollen, Wahlprozesse zu beobachten und als Bürger*in aufgetretene Wahlprobleme oder Unregelmäßigkeiten zu melden." +resources.empty.heading,No guides to read yet,Noch keine Leitfäden zum Lesen +resources.empty.paragraph,Guides and resources about observing electoral processes and reporting issues as a citizen at your hands.,Leitfäden und Ressourcen zur Beobachtung von Wahlprozessen und zur Meldung von Problemen als Bürger in Ihren Händen. +resources.types.Document,Filetype PDF,Dateityp PDF +resources.types.Website,External URL,Externe URL +resources.types.Text,In app guide,In-App-Anleitung +inbox.title,Inbox,Posteingang +inbox.empty.heading,No message received yet,Noch keine Nachricht erhalten +inbox.empty.paragraph,Push messages and alerts from your organization will appear here.,Push-Nachrichten und Warnmeldungen von Ihrer Organisation werden hier angezeigt. +inbox.banner,Messages from {{ngoName}},Nachrichten von {{ngoName}} +inbox.today,Today,Heute +inbox.your_organization,your organization,Ihre Organisation +inbox.menu.manage_polling_stations,Manage my polling stations,Meine Wahllokale verwalten +inbox.info_modal.p1,In this Inbox expect to receive live updates and messages from the NGO that accredited you as an observer.,"In diesem Posteingang erhalten Sie Live-Updates und Nachrichten von der NGO, die Sie als Beobachter akkreditiert hat." +inbox.info_modal.p2,"Check back periodically to see if you have received any new information, relevant to your observation activity.","Schauen Sie regelmäßig nach, ob Sie neue Informationen erhalten haben, die für Ihre Beobachtungsaktivität relevant sind." +updates.title,Updates,Aktualisierungen +updates.empty.heading,No updates received yet,Noch keine Updates erhalten +updates.empty.paragraph,Updates about electoral period will appear here.,Aktuelle Informationen zur Wahlperiode werden hier veröffentlicht. +updates.info_modal.p1,In this section expect to receive live updates from the Vote Monitor team regarding election period relevant to you as a citizen interested in civic engagement.,"In diesem Abschnitt erhalten Sie Live-Updates vom Vote Monitor-Team zu Wahlperioden, die für Sie als Bürger mit Interesse an bürgerschaftlichem Engagement relevant sind." +updates.info_modal.p2,Check back periodically to see if you have received any new information.,"Schauen Sie regelmäßig nach, ob Sie neue Informationen erhalten haben." +more.title,More,Mehr +more.change-language,Change app language,App-Sprache ändern +more.change-password,Change password,Passwort ändern +more.terms,Terms and Conditions,Allgemeine Geschäftsbedingungen +more.privacy_policy,Privacy Policy,Datenschutzerklärung +more.about,About Vote Monitor,Über Vote Monitor +more.app_version,Vote Monitor version {{value}},Vote Monitor version {{value}} +more.support,Call the NGO Hotline,Rufen Sie die NGO-Hotline an +more.feedback,Offer app feedback,Feedback zur App geben +more.logout,Logout,Abmelden +more.logged_in,Logged in as {{user}},Angemeldet als {{user}} +more.warning_modal.logout_offline.title,Attention: You have unsynced data,Achtung: Sie haben nicht synchronisierte Daten. +more.warning_modal.logout_offline.description,"You are currently offline. If you log out now, any forms, attachments, or notes you have completed or uploaded during the offline mode will be lost. + +To avoid losing your data, please reconnect to the internet before logging out.","Sie sind derzeit offline. Wenn Sie sich jetzt abmelden, gehen alle Formulare, Anhänge oder Notizen, die Sie im Offline-Modus ausgefüllt oder hochgeladen haben, verloren. Um Datenverlust zu vermeiden, stellen Sie bitte vor dem Abmelden erneut eine Verbindung zum Internet her." +more.warning_modal.logout_offline.cancel,Cancel,Abbrechen +more.warning_modal.logout_offline.action,Logout,Abmelden +more.warning_modal.logout_online.title,Are you sure you want to logout?,Möchten Sie sich wirklich abmelden? +more.warning_modal.logout_online.cancel,Cancel,Abbrechen +more.warning_modal.logout_online.action,Logout,Abmelden +more.feedback_toast.success,Feedback sent!,Feedback gesendet! +more.feedback_toast.offline,You need an internet connection in order to perform this action.,"Sie benötigen eine Internetverbindung, um diese Aktion auszuführen." +more.feedback_toast.error,Error while adding feedback!,Fehler beim Hinzufügen von Feedback! +more.feedback_toast.required,This field is required,Dieses Feld ist ein Pflichtfeld. +more.feedback_sheet.heading,Send us your feedback,Senden Sie uns Ihr Feedback +more.feedback_sheet.p1,"Please tell us about any issues you might have encountered with the functioning of the app, or any suggestions you would like to share to improve Vote Monitor for the future. We appreciate every feedback!","Bitte teilen Sie uns alle Probleme mit, die Sie möglicherweise mit der Funktionsweise der App hatten, oder alle Vorschläge, die Sie zur Verbesserung von Vote Monitor für die Zukunft machen möchten. Wir freuen uns über jedes Feedback!" +more.feedback_sheet.placeholder,Write your feedback here...,Schreiben Sie hier Ihr Feedback... +more.feedback_sheet.cancel,Cancel,Abbrechen +more.feedback_sheet.action,Send,Senden +more.feedback_sheet.input.max,Input cannot exceed {{value}} characters,Die Eingabe darf {{value}} Zeichen nicht überschreiten. +more.options_sheet.manage_my_polling_stations,Manage my polling stations,Meine Wahllokale verwalten +change_password.title,Change password,Passwort ändern +change_password.form.current_password.label,Current password *,Aktuelles Passwort * +change_password.form.current_password.placeholder,Insert current password,Aktuelles Passwort eingeben +change_password.form.current_password.required,Password is mandatory,Ein Passwort ist erforderlich. +change_password.form.current_password.credentials_error,The current password is incorrect,Das aktuelle Passwort ist falsch. +change_password.form.new_password.label,New password *,Neues Passwort * +change_password.form.new_password.placeholder,Insert new password,Neues Passwort eingeben +change_password.form.new_password.helper,Must be at least 8 characters,Muss mindestens 8 Zeichen lang sein +change_password.form.new_password.required,The new password is mandatory,Das neue Passwort ist erforderlich. +change_password.form.confirm_password.label,Confirm new password *,Neues Passwort bestätigen * +change_password.form.confirm_password.placeholder,Confirm password,Passwort bestätigen +change_password.form.confirm_password.helper,Both passwords must match.,Beide Passwörter müssen übereinstimmen. +change_password.form.confirm_password.required,The new password is mandatory,Das neue Passwort ist erforderlich. +change_password.form.confirm_password.no_match,Passwords do not match,Passwörter stimmen nicht überein +change_password.form.save,Save new password,Neues Passwort speichern +change_password.confirmation.heading,Password changed!,Passwort geändert! +change_password.confirmation.paragraph,Your password has been successfully changed.,Ihr Passwort wurde erfolgreich geändert. +change_password.confirmation.confirm,Back to app,Zurück zur App +change_password.error.offline,App is offline and cannot do the request,Die App ist offline und kann die Anfrage nicht ausführen. +generic_error_screen.paragraph1,"Oops, something went wrong!","Hoppla, etwas ist schiefgelaufen!" +generic_error_screen.paragraph2,We could not recover after this error. Please check your internet connection and restart the application!,Nach diesem Fehler konnten wir den Vorgang nicht fortsetzen. Bitte überprüfen Sie Ihre Internetverbindung und starten Sie die Anwendung neu! +generic_error_screen.retry,Retry,Wiederholen +generic_error_screen.logout,Logout,Abmelden +network_banner.online,App online. All answers sent to server.,App online. Alle Antworten werden an den Server gesendet. +network_banner.offline,Offline mode. Saving answers locally.,Offline-Modus. Antworten werden lokal gespeichert. +network_banner.offline_citizen,Offline mode. You need internet to submit the form.,"Offline-Modus. Sie benötigen eine Internetverbindung, um das Formular zu senden." +network_banner.more_details,More Details,Weitere Details +network_banner.offline_warning,"It looks like you're currently offline. Don't worry, your answers are safely stored locally and will be synced with our servers once your connection is restored. Feel free to continue filling out the observation forms and submitting quick reports.","Es sieht so aus, als wären Sie derzeit offline. Keine Sorge, Ihre Antworten werden lokal gespeichert und mit unseren Servern synchronisiert, sobald Ihre Verbindung wiederhergestellt ist. Sie können gerne weiter die Beobachtungsformulare ausfüllen und Kurzberichte einreichen." +network_banner.offline_warning_citizen,"It looks like you're currently offline. In order to submit the form, you need to be online.","Es sieht so aus, als wären Sie derzeit offline. Um das Formular zu senden, müssen Sie online sein." +sync.sync_data,Synchronizing offline data...,Offline-Daten werden synchronisiert... +sync.warning,Please DO NOT CLOSE the app or the internet connection or the data will be lost.,"Bitte schließen Sie die App NICHT und unterbrechen Sie die Internetverbindung NICHT, da sonst die Daten verloren gehen." +sync.files,"We are uploading your files, it may take a while...","Wir laden Ihre Dateien hoch, dies kann einen Moment dauern..." +delete_submission.title,Review submission before deleting,Überprüfung des Eintrags vor dem Löschen +delete_submission.description,"This action cannot be undone. Once deleted, no data from this submission can be recovered.",Diese Aktion kann nicht rückgängig gemacht werden. Nach dem Löschen können keine Daten aus dieser Übermittlung wiederhergestellt werden. +delete_submission.header,Delete Submission #{{submissionNumber}},Beitrag Nr. {{submissionNumber}} löschen +delete_submission.attachments,Attachments: {{value}},Anhänge: {{value}} +delete_submission.notes,Notes: {{value}},Anmerkungen: {{value}} +delete_submission.delete,Delete submission,Eintrag löschen +delete_submission.warning_dialog.title,Are you sure you want to delete this submission?,Möchten Sie diesen Eintrag wirklich löschen? +delete_submission.warning_dialog.description,This action cannot be undone.,Diese Aktion kann nicht rückgängig gemacht werden. +delete_submission.warning_dialog.cancel,Cancel,Abbrechen +delete_submission.warning_dialog.delete,Delete,Löschen +form_submission_card.header,Submission #{{value}},Eintrag Nr. {{value}} +form_submission_card.last_updated_at,Last updated at:,Zuletzt aktualisiert am: +form_submission_card.form_status,Form status:,Formularstatus: +form_submission_card.answered_questions,Answered questions:,Beantwortete Fragen: +form_submission_card.attachments,Attachments:,Anhänge: +form_submission_card.notes,Notes:,Anmerkungen: \ No newline at end of file diff --git a/utils/excel-to-locales/locales/de /translations_DE.json b/utils/excel-to-locales/locales/de /translations_DE.json new file mode 100644 index 000000000..28794107b --- /dev/null +++ b/utils/excel-to-locales/locales/de /translations_DE.json @@ -0,0 +1,894 @@ +{ + "common": { + "skip": "Weiter", + "search": "Suchen", + "loading": "Wird geladen…", + "status": { + "completed": "Erledigt", + "in_progress": "In Bearbeitung", + "not_started": "Nicht begonnen", + "marked_as_completed": "Als erledigt markiert" + }, + "forms": { + "mark_as_done": "Formular als erledigt markieren", + "mark_as_in_progress": "Formular als in Bearbeitung markieren" + }, + "cancel": "Abbrechen", + "save": "Speichern", + "no_data": "Keine Daten gefunden.", + "select": "Auswählen", + "done": "Erledigt", + "ok": "OK", + "back": "Zurück" + }, + "languages": { + "ro": "Rumänisch", + "en": "Englisch", + "pl": "Polnisch", + "bg": "Bulgarisch", + "sr": "Serbisch", + "ka": "Georgisch", + "hy": "Armenisch", + "ru": "Russisch", + "az": "Aserbaidschanisch", + "es": "Spanisch" + }, + "onboarding": { + "language": { + "heading": "Sprache auswählen", + "description": "Dies ist die Sprache, in der deine App angezeigt wird, und sie kann jederzeit im Bereich „Mehr“ der Anwendung geändert werden.", + "save": "Auswahl anwenden" + }, + "polling_stations": { + "heading": "Wahlprozesse überwachen", + "description": "und Unregelmäßigkeiten im Wahlkampf, Probleme in Wahllokalen melden sowie etwaige Verstöße gegen die Abläufe am Wahltag kennzeichnen" + }, + "forms": { + "heading": "Beobachtungsformulare ausfüllen", + "description": "und Berichte für jede Beobachtungsphase einreichen, um einen transparenten und fairen Wahlprozess zu gewährleisten" + }, + "media": { + "heading": "Notizen oder Mediendateien hinzufügen", + "description": "um deine Beobachtungen weiter zu unterstützen und Belege für etwaige Unregelmäßigkeiten bereitzustellen", + "save": "Zur App" + } + }, + "select_app_mode": { + "heading": "App-Modus auswählen", + "description": "Du kannst den Wahlprozess als akkreditierte*r Beobachter*in überwachen oder als Bürger*in, der/die faire und demokratische Wahlen unterstützen möchte.", + "accredited_observer": { + "title": "Vote Monitor für akkreditierte Beobachter*innen", + "description": "Ich bin eine*r akkreditierte*r unabhängige*r Beobachter*in und wurde von einer NGO eingeladen, den Wahlprozess zu beobachten. **" + }, + "citizen": { + "title": "Vote Monitor für Bürger*innen", + "description": "Ich bin Bürger*in und möchte Unregelmäßigkeiten melden, die ich während des Wahlkampfs oder am Wahltag beobachte." + }, + "helper": "**Als akkreditierte*r Beobachter*in kannst du jederzeit über das App-Menü in den Bürger*innenmodus wechseln.", + "continue": "Fortfahren" + }, + "select_election_event": { + "heading": "Verfügbare Wahlereignisse", + "description": "Wähle das Ereignis aus, für das du einen Bericht einreichen möchtest:", + "continue": "Fortfahren", + "empty_description": "Derzeit gibt es keine aktiven Wahlereignisse, für die du als Bürger*in Vorfälle melden kannst. Sobald ein Ereignis verfügbar ist, wird es in diesem Bereich angezeigt.", + "error_description": "Beim Abrufen der verfügbaren Wahlereignisse ist ein Fehler aufgetreten. Bitte versuche es erneut.", + "retry": "Erneut versuchen" + }, + "drawer": { + "report_as_citizen": "Als Bürger*in melden", + "report_as_accredited_observer": "Als akkreditierte*r Beobachter*in melden" + }, + "citizen_report_issue": { + "header_title": "Ein Vorkommnis melden", + "description": "Als Bürger*in kannst du ein wahlbezogenes Problem melden, indem du eines der unten verfügbaren Meldeformulare ausfüllst.", + "disclaimer": "Das Einreichen eines Berichts über Vote Monitor Citizen ist nicht dasselbe wie das Einreichen einer offiziellen Beschwerde bei den für die Organisation von Wahlen zuständigen Behörden. Weitere Informationen zur Verwendung der Berichte findest du über die Info-Schaltfläche in der oberen rechten Ecke. Wenn du eine offizielle Beschwerde einreichen möchtest, lies bitte den Artikel „Wie man eine offizielle Beschwerde einreicht“ im Bereich „Ressourcen“.", + "empty_forms": "Meldeformulare werden hier angezeigt, sobald das Vote-Monitor-Team sie im System veröffentlicht hat.", + "error_message": "Beim Abrufen der Meldeformulare ist ein Fehler aufgetreten. Bitte versuche es erneut.", + "retry": "Erneut versuchen", + "info_modal": { + "p1": "Das Einreichen eines Berichts über Vote Monitor Citizen stellt keine offizielle Beschwerde bei den für die Organisation von Wahlen zuständigen Behörden dar und garantiert nicht, dass dein Bericht geprüft oder bearbeitet wird.", + "p2": "Nach der Datenanalyse können einige über die App eingereichte Berichte in Wahlbeobachtungsberichten aufgenommen werden, die von mit Code for Romania/Commit Global kooperierenden Organisationen erstellt werden. Aggregierte und anonymisierte Daten können außerdem zu statistischen Zwecken verwendet werden.", + "p3": "In bestimmten Fällen können deine Berichte an die für die Organisation von Wahlen zuständigen Behörden weitergegeben werden, um zukünftige Wahlprozesse zu verbessern; dies ist jedoch nicht garantiert.", + "p4": "Du hast die volle Kontrolle über deine personenbezogenen Daten. In den Meldeformularen kannst du wählen, ob du anonym berichten oder der Kontaktaufnahme durch eine Organisation zustimmen möchtest, falls dein Bericht geprüft wird.", + "ok": "OK" + } + }, + "citizen_form": { + "review": { + "heading": "Bericht überprüfen", + "send": "Bericht senden", + "sending_report": "Dein Bericht wird gesendet. Bitte warten…" + }, + "progress_bar_label": "Formularfortschritt", + "success": { + "title": "Dein Bericht wurde erfolgreich gesendet!", + "description": "Vielen Dank für dein zivilgesellschaftliches Engagement. Du hast die Möglichkeit, dir eine Kopie deiner Antworten per E-Mail senden zu lassen oder zur Hauptseite zurückzukehren.", + "back_to_main": "Zurück zur Hauptseite", + "send_copy": "Mir eine Kopie senden" + }, + "error": "Beim Senden deines Berichts ist ein Problem aufgetreten.", + "email_copy": { + "title": "E-Mail-Adresse eingeben, um eine Kopie des Formulars zu erhalten", + "description": "Um eine Kopie deines Formulars zu erhalten, gib bitte unten deine E-Mail-Adresse ein. Diese E-Mail-Adresse wird ausschließlich zum Versand der Kopie verwendet und nicht gespeichert oder für andere Zwecke genutzt.", + "placeholder": "E-Mail-Adresse eingeben", + "required": "Die E-Mail-Adresse ist erforderlich", + "invalid": "Das E-Mail-Format ist ungültig", + "cancel": "Abbrechen", + "send": "Senden" + }, + "copy_sent": { + "title": "Deine Kopie wurde gesendet", + "description": "Deine Kopie sollte sofort ankommen, in seltenen Fällen kann die Verarbeitung jedoch einige Minuten dauern. Du kannst in der Zwischenzeit zur Hauptseite zurückkehren." + }, + "unsaved_changes_dialog": { + "title": "Du hast ungespeicherte Änderungen", + "description": "Wenn du diese Seite verlässt, gehen alle bisherigen Eingaben im Formular verloren. Möchtest du wirklich zurückgehen?", + "actions": { + "discard": "Zurückgehen", + "save": "Hier bleiben" + } + }, + "attachments": { + "heading": "Hochgeladene Medien", + "loading": "Anhang wird hinzugefügt…", + "error": "Fehler beim Senden des Anhangs!", + "add": "Mediendateien hinzufügen", + "menu": { + "load": "Aus Galerie laden", + "take_picture": "Foto aufnehmen", + "record_video": "Video aufnehmen", + "upload_audio": "Audiodatei hochladen" + }, + "upload": { + "compressing": "Anhang wird komprimiert:", + "preparing": "Anhang wird vorbereitet…", + "starting": "Upload wird gestartet…", + "progress": "Anhänge werden hochgeladen:", + "completed": "Upload abgeschlossen.", + "aborted": "Upload abgebrochen.", + "offline": "Für diese Aktion ist eine Internetverbindung erforderlich." + }, + "delete": { + "title": "Mediendatei löschen", + "description": "Diese Aktion kann nicht rückgängig gemacht werden. Nach dem Löschen kann eine Mediendatei nicht wiederhergestellt werden.", + "actions": { + "cancel": "Abbrechen", + "clear": "Löschen" + } + } + } + }, + "login": { + "disclaimer": { + "paragraph1": "Vote Monitor Observer kann nur von unabhängigen Beobachter*innen genutzt werden, die von einer Organisation akkreditiert sind, welche Wahlprozesse überwacht. Eine Einladungs-E-Mail deiner Organisation mit Anweisungen zur Kontoerstellung ist erforderlich.", + "paragraph2": { + "slice1": "Wenn du keine*r akkreditierte*r Beobachter*in bist, kannst du dennoch", + "link": "Unregelmäßigkeiten als Bürger*in melden", + "slice2": "für ein laufendes Wahlereignis, ohne ein Konto zu benötigen." + } + }, + "heading": "Anmelden", + "paragraph": "Bitte verwende die E-Mail-Adresse, mit der du dich als unabhängige*r Beobachter*in registriert hast:", + "form": { + "email": { + "label": "E-Mail *", + "placeholder": "E-Mail", + "required": "E-Mail ist erforderlich", + "pattern": "Das E-Mail-Format ist ungültig" + }, + "password": { + "label": "Passwort *", + "placeholder": "Passwort", + "required": "Passwort ist erforderlich" + }, + "submit": { + "save": "Anmelden", + "loading": "Anmelden…" + }, + "errors": { + "invalid_credentials": "Bei deinen Zugangsdaten ist ein Fehler aufgetreten. Bitte versuche es erneut.", + "offline": "Zum Anmelden ist eine Internetverbindung erforderlich." + } + }, + "actions": { + "forgot_password": "Passwort vergessen?" + }, + "email_toast": "E-Mail-Adresse wurde in die Zwischenablage kopiert" + }, + "forgot_password": { + "header": { + "title": "Passwort vergessen" + }, + "heading": "Passwort vergessen?", + "paragraph": "Bitte gib die mit deinem Konto verknüpfte E-Mail-Adresse ein. Wir senden dir einen Link zum Zurücksetzen deines Passworts.", + "form": { + "email": { + "label": "E-Mail *", + "placeholder": "E-Mail", + "required": "E-Mail ist erforderlich", + "pattern": "Das E-Mail-Format ist ungültig" + }, + "submit": { + "loading": "Wird gesendet…", + "save": "Senden" + }, + "errors": { + "invalid_email": "Die aktuelle E-Mail-Adresse ist im System nicht registriert. Bitte versuche es erneut." + } + }, + "confirmation": { + "heading": "E-Mail gesendet", + "paragraph": "Überprüfe dein E-Mail-Postfach und öffne den Link, den wir dir gesendet haben, um fortzufahren. Prüfe auch deinen Spam-Ordner, falls du keine E-Mail erhalten hast.", + "confirm": "Zurück zur Anmeldung" + } + }, + "about_app": { + "title": "Über Vote Monitor", + "title_observer": "Über Vote Monitor Observer", + "general": "Vote Monitor ist ein spezielles digitales Tool für unabhängige Beobachter und internationale Organisationen, die sich mit Wahlbeobachtung befassen. Vote Monitor wird von Code for Romania/Commit Global entwickelt und verwaltet.", + "purpose": "Die App unterstützt unabhängige Beobachter dabei, Wahllokale zu beobachten und den Wahlprozess für eine bestimmte Wahlrunde in Echtzeit zu dokumentieren. Alle über die mobile App gesammelten Daten werden in Echtzeit an akkreditierte Organisationen gesendet, um potenzielle Warnsignale zu identifizieren, die auf Betrug oder andere Unregelmäßigkeiten hindeuten könnten. Letztendlich ist es unser Ziel, einen klaren, einfachen und realistischen Überblick über den Ablauf des Wahlprozesses zu bieten.", + "app_provides": { + "paragraph": "Die App bietet Beobachtern:", + "item1": "Eine Möglichkeit, mehrere besuchte Wahllokale zu verwalten", + "item2": "Eine effiziente Methode zur Beobachtung des Ablaufs des Wahlprozesses anhand von Formularen, die von akkreditierten Organisationen erstellt wurden.", + "item3": "Eine Möglichkeit, andere problematische Sachverhalte außerhalb der Standardformulare schnell zu melden" + }, + "usage": "Die Vote Monitor App kann bei jeder Art von Wahl in jedem Land weltweit eingesetzt werden. Seit 2016 wurde sie bereits in mehreren Wahlgängen in Rumänien, Polen und Bulgarien verwendet.", + "version": "Vote Monitor Version {{value}}" + }, + "about_app_citizen": { + "title": "Über Vote Monitor", + "title_observer": "Über Vote Monitor Citizen", + "p1": "Vote Monitor Citizen ermöglicht es normalen Bürgern, sich aktiv an der Beobachtung von Wahlen zu beteiligen, indem sie Unregelmäßigkeiten melden, die ihnen während der Wahlperiode auffallen, darunter Wahlkampfaktivitäten, Abläufe in Wahllokalen und Verfahren am Wahltag.", + "p2": "Vote Monitor Citizen ist eine Erweiterung der Vote Monitor-App, die ursprünglich von Code for Romania/Commit Global für unabhängige Beobachter entwickelt wurde, die gemeinsam mit NGOs bei der Wahlbeobachtung tätig sind.", + "p3": "Die Nutzer können Echtzeitberichte einreichen, die von Nichtregierungsorganisationen, die am Wahlprozess beteiligt sind, analysiert werden. Diese Berichte können zu detaillierten Beobachtungsdokumenten beitragen und in einigen Fällen an relevante Institutionen weitergeleitet werden, um künftige Wahlen zu verbessern.", + "p4": "Bürgerberichte spielen zwar eine wichtige Rolle bei der Förderung der Transparenz; bitte beachten Sie jedoch, dass die Einreichung eines Berichts über diese App keine offizielle Beschwerde bei den für die Organisation von Wahlen zuständigen Institutionen darstellt.", + "version": "Vote Monitor Version {{value}}" + }, + "loading_screen": { + "heading": "Wird geladen...", + "paragraph": "Wir bereiten alle Daten vor, bitte warten Sie!" + }, + "tabs": { + "observation": "Beobachtung", + "quick_report": "Bericht", + "guides": "Anleitungen", + "inbox": "Posteingang", + "more": "Mehr", + "report": "Bericht", + "updates": "Aktualisierungen" + }, + "Leitfäden und Ressourcen Ihrer Organisation griffbereit": "Ressourcen", + "add_polling_station": { + "title": "Wahllokal hinzufügen", + "progress": { + "location": "Wahllokal von {{value}} hinzufügen" + }, + "actions": { + "next_step": "Nächster Schritt", + "back": "Zurück", + "finalize": "Abschließen" + }, + "error": "Fehler beim Laden der Wahllokale!" + }, + "observation": { + "title": "Beobachtung von Wahllokalen", + "no_election_round": { + "heading": "Noch keine Wahlhandlung zu beobachten", + "paragraph": "Sie können die App nutzen, sobald Sie von Ihrer Organisation einer Wahl zugewiesen wurden." + }, + "no_form": "Das Formular „Informationen zum Wahllokal“ ist nicht konfiguriert.", + "refresh_page": "Wenn die Daten nicht angezeigt werden, aktualisieren Sie die Seite, um die neuesten Informationen abzurufen.", + "no_visited_polling_stations": { + "heading": "Noch keine Wahllokale besucht", + "paragraph": "Beginnen Sie mit der Konfiguration Ihres ersten Wahllokals, bevor Sie die Beobachtungsformulare ausfüllen.", + "add": "Fügen Sie Ihr erstes Wahllokal hinzu" + }, + "my_polling_stations": { + "heading": "Meine Wahllokale", + "paragraph": "Sie können zwischen Wahllokalen wechseln, wenn Sie Formularantworten oder Wahllokaldaten erneut aufrufen möchten.", + "add": "Neues Wahllokal hinzufügen" + }, + "polling_stations_information": { + "heading": "Informationen zum Wahllokal", + "time_select": { + "not_defined": "Nicht definiert", + "arrival_time": "Ankunftszeit", + "departure_time": "Zeitpunkt des Aufbruchs", + "save": "Erledigt", + "error": { + "arrival_first": "Bitte wählen Sie zuerst eine Ankunftszeit.", + "later_departure": "Bitte wählen Sie einen Zeitpunkt des Aufbruchs, der später als die Ankunftszeit liegt.", + "earlier_arrival": "Bitte wählen Sie eine Ankunftszeit, die vor dem Zeitpunkt des Aufbruchs liegt.", + "server": "Wir konnten die Informationen nicht an den Server senden." + } + }, + "observation_time": { + "observation_time": "Beobachtungszeit", + "not_defined": "Nicht definiert", + "no_of_breaks": "{{Wert}} Unterbrechungen", + "one_break": "{{Wert}} Unterbrechung", + "arrival_and_departure": "Ankunftszeit und Zeitpunkt des Aufbruchs", + "arrival_time": "Ankunftszeit", + "departure_time": "Zeitpunkt des Aufbruchs", + "departure_after_arrival": "Der Zeitpunkt des Aufbruchs muss nach der Ankunftszeit liegen.", + "select_arrival_time": "Ankunftszeit auswählen", + "select_departure_time": "Zeitpunkt des Aufbruchs auswählen", + "add_break": "Neue Pause in Beobachtung hinzufügen", + "break": "Pause {{Wert}}", + "start_time": "Startzeit", + "select_start_time": "Startzeit auswählen", + "end_time": "Endzeitpunkt", + "select_end_time": " Endzeitpunkt auswählen", + "undefined_date": "Tag/Monat/Jahr", + "undefined_time": "Stunde:Minute", + "save": "Beobachtungszeit speichern", + "clear": "Beobachtungszeit löschen", + "confirmation_modals": { + "clear": { + "title": "Beobachtungszeit löschen", + "description": "Durch diese Aktion werden Ihre Ankunftszeit und die Zeit des Aufbruchs sowie alle bisher für dieses Wahllokal eingegebenen Pausen gelöscht. Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte die Zeiten, bevor Sie diese Aktion durchführen.", + "actions": { + "cancel": "Abbrechen", + "clear": "Beobachtungszeit löschen" + } + }, + "delete": { + "title": "Pause löschen", + "description": "Durch diese Aktion wird Ihre Pause gelöscht. Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte die Zeiten, bevor Sie diese Aktion ausführen.", + "actions": { + "cancel": "Abbrechen", + "delete": "Pause löschen" + } + }, + "unsaved_changes": { + "title": "Änderungen an der Beobachtungszeit speichern", + "description": "Sie haben ungespeicherte Änderungen bezüglich der von Ihnen eingegebenen Beobachtungszeit vorgenommen. Möchten Sie Ihre Änderungen speichern, bevor Sie die Seite verlassen?", + "actions": { + "discard": "Verwerfen", + "save": "Änderungen speichern" + } + }, + "unable_to_save": { + "title": "Beobachtungszeit kann nicht gespeichert werden", + "p1": "Die von Ihnen eingegebenen Zeiten können aufgrund eines Konflikts zwischen den Pausen und den Ankunftszeiten/Zeiten des Aufbruchs nicht gespeichert werden.", + "p2": "Bitte stellen Sie sicher, dass die Pausen nicht länger sind als die Zeit zwischen den Ankunftszeiten und den Zeiten des Aufbruchs. Bitte überprüfen Sie die Zeiten und passen Sie sie entsprechend an.", + "ok": "OK" + } + } + }, + "polling_station_form": { + "paragraph": "Beantworten Sie ein paar kurze Fragen zum Wahllokal.", + "form_details_button_label": "Fragen zum Wahllokal", + "number_of_questions": "{{value}} Fragen", + "answer_questions": "Fragen beantworten" + } + }, + "forms": { + "heading": "Beobachtungsformulare ", + "list": { + "empty": "Die Beobachtungsformulare werden hier angezeigt, sobald Ihre Organisation sie im System veröffentlicht hat.", + "error": { + "paragraph1": "Etwas ist schiefgelaufen!", + "paragraph2": "Die Daten konnten nicht abgerufen werden. Klicken Sie auf die Schaltfläche „Wiederholen“, um es erneut zu versuchen!", + "retry": "Wiederholen" + } + }, + "select_language_modal": { + "header": "Formularsprache auswählen", + "helper": "Das ausgewählte Formular ist in mehreren Sprachen verfügbar. Bitte wählen Sie die Sprache aus, in der Sie fortfahren möchten.", + "error": "Bitte wählen Sie eine der Optionen aus." + } + }, + "options_menu": { + "manage_my_polling_stations": "Meine Wahllokale verwalten" + } + }, + "polling_station_information_form": { + "title": "Informationen zum Wahllokal", + "submit": "Antworten abschicken", + "form": { + "max": "Die Eingabe darf {{value}} Zeichen nicht überschreiten.", + "placeholder": "Bitte einen Text eingeben." + }, + "menu": { + "clear": "Formular löschen (alle Antworten löschen)" + }, + "warning_modal": { + "title": "Löschen des Formulars mit Wahllokalangaben", + "description": "Durch diese Aktion werden alle bisher in dieses Formular eingegebenen Antworten gelöscht. Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte das Formular, bevor Sie diese Aktion ausführen.", + "actions": { + "cancel": "abbrechen", + "clear": "Formular löschen" + } + }, + "unsaved_changes_dialog": { + "title": "Änderungen im Formular speichern", + "description": "Sie haben in diesem Formular ungespeicherte Änderungen vorgenommen. Möchten Sie Ihre Änderungen vor dem Verlassen speichern?", + "actions": { + "discard": "Verwerfen", + "save": "Änderungen speichern" + } + } + }, + "form_overview": { + "overview": { + "heading": "Formularübersicht", + "status": "Formularstatus", + "answered_questions": "Beantwortete Fragen", + "resume": "Formular weiter bearbeiten", + "start_form": "Formular beginnen", + "progress": "Fortschritt", + "submissions_list": "Formularübermittlung", + "add_submission": "Eingabe hinzufügen", + "number_of_submissions": "Anzahl der Eingaben: {{value}}" + }, + "questions": { + "title": "Fragen", + "not_answered": "Nicht beantwortet", + "answered": "Beantwortet ", + "no_notes": "Keine angehängten Notizen", + "notes": "Enthält beigefügte Notizen" + }, + "attachments": { + "notes": "{{count}} Anmerkung(en)", + "media": "{{count}} Mediendatei(en)" + }, + "error": "Fehler beim Laden der Formulardaten!", + "menu": { + "clear": "Formular löschen (alle Antworten löschen)", + "change_language": "Sprache ändern", + "delete": "Eingabe löschen" + }, + "clear_answers_modal": { + "title": "Formular löschen {{value}}", + "description": { + "p1": "Durch diese Aktion werden alle bisher für dieses Formular eingegebenen Antworten (einschließlich Notizen und Mediendateien) gelöscht. Der Status aller Fragen wird auf „Nicht beantwortet“ zurückgesetzt.", + "p2": "Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte das Formular, bevor Sie diese Aktion ausführen." + }, + "actions": { + "clear": "Formular löschen", + "cancel": "Abbrechen" + } + }, + "delete_submission_modal": { + "title": "Eintrag löschen", + "description": { + "p1": "Durch diese Aktion wird diese Formularübermittlung (einschließlich Notizen und Mediendateien) gelöscht.", + "p2": "Um unbeabsichtigten Informationsverlust zu vermeiden, überprüfen Sie bitte das Formular, bevor Sie diese Aktion ausführen." + }, + "actions": { + "clear": "Eintrag löschen", + "cancel": "Abbrechen" + } + } + }, + "polling_station_form_wizard": { + "progress_bar": { + "label": "Formularfortschritt", + "clear_answer": "Antwort löschen" + }, + "form": { + "min": "Das Feld muss mindestens {{value}} Zeichen lang sein.", + "max": "Das Feld darf maximal {{value}} Zeichen enthalten.", + "required": "Dieses Feld ist ein Pflichtfeld.", + "date_placeholder": "Bitte geben Sie ein Datum ein.", + "text_placeholder": "Bitte geben Sie einen Text ein." + }, + "save_and_continue": "Speichern und fortfahren", + "attachments": { + "heading": "Hochgeladene Medien", + "loading": "Anhang hinzufügen...", + "error": "Fehler beim Senden des Anhangs!", + "add": "Notizen und Medien hinzufügen", + "menu": { + "add_note": "Notiz hinzufügen", + "load": "Aus Galerie laden", + "take_picture": "Bild aufnehmen", + "record_video": "Video aufnehmen", + "upload_audio": "Audiodatei hochladen" + }, + "upload": { + "compressing": "Anhang komprimieren", + "preparing": "Anhang wird vorbereitet...", + "starting": "Hochladen wird gestartet...", + "progress": "Hochladen-Fortschritt:", + "completed": "Hochladen abgeschlossen.", + "aborted": "Hochladen abgebrochen.", + "offline": "Sie benötigen eine Internetverbindung, um diese Aktion auszuführen.", + "abort_offline": "Gehen Sie online, um das Hochladen fortzusetzen oder abzubrechen.", + "abort_offline_button": "Hochladen abbrechen", + "uploaded": "{{value}} Dateien wurden erfolgreich hochgeladen.", + "abort_offline_confirm": "Möchten Sie das Hochladen wirklich abbrechen?", + "abort_offline_cancel": "Abbrechen" + } + }, + "notes": { + "heading": "Anmerkungen", + "add": { + "heading": "Eine Anmerkung hinzufügen", + "form": { + "input": { + "placeholder": "Fügen Sie dieser Frage alle relevanten Anmerkungen hinzu.", + "max": "Die Eingabe darf 10.000 Zeichen nicht überschreiten.", + "required": "Dieses Feld ist ein Pflichtfeld." + } + } + }, + "edit": { + "heading": "Anmerkung bearbeiten", + "delete": "Anmerkung löschen" + }, + "delete": { + "title": "Anmerkung löschen", + "description": "Diese Aktion kann nicht rückgängig gemacht werden. Einmal gelöschte Anmerkungen können nicht wiederhergestellt werden.", + "actions": { + "cancel": "Abbrechen", + "delete": "Löschen " + } + } + }, + "warning_modal": { + "question": { + "title": "Löschen der Antwort zu Frage {{value}}", + "description": "Durch das Löschen der Antwort auf diese Frage werden alle zugehörigen Informationen (einschließlich Notizen und Mediendateien) sowie alle damit verbundenen Fragen dauerhaft gelöscht. Der Status der Fragen wird auf „Nicht beantwortet“ zurückgesetzt.", + "actions": { + "cancel": "Abbrechen", + "clear": "Antwort löschen" + } + }, + "attachment": { + "title": "Mediendatei löschen", + "description": "Dieser Vorgang kann nicht rückgängig gemacht werden. Einmal gelöschte Mediendateien können nicht wiederhergestellt werden.", + "actions": { + "cancel": "Abbrechen", + "clear": "Löschen" + } + }, + "unsaved_answer": { + "title": "Änderungen an der Frage speichern", + "description": "Sie haben an dieser Frage ungespeicherte Änderungen vorgenommen. Möchten Sie Ihre Änderungen vor dem Verlassen speichern?", + "actions": { + "cancel": "Verwerfen", + "save": "Änderungen speichern" + } + } + }, + "error": "Fehler beim Laden der Fragendaten!" + }, + "manage_my_polling_stations": { + "empty": { + "title": "Noch keine Wahllokale besucht" + }, + "general_text": "Meine Wahllokale verwalten", + "ps_card": { + "header": "Wahllokal: {{value}}", + "l1": "[Ort L1]", + "l2": "[Ort L2]", + "l3": "[Ort L3]", + "l4": "[Ort L4]", + "l5": "[Ort L5]", + "street": "Straße", + "ps_number": "Nummer des Wahllokals" + }, + "warning_dialog": { + "title": "Wahllokal entfernen: {{value}}", + "description": "Durch diese Aktion wird das Wahllokal aus Ihrer Liste der besuchten Wahllokale entfernt. Sie können es über den Vorgang „Neues Wahllokal hinzufügen” erneut hinzufügen.", + "actions": { + "cancel": "Abbrechen", + "remove": "Entfernen", + "loading": "Laden..." + } + }, + "removal_unallowed_dialog": { + "title": "Entfernen des Wahllokals {{value}} nicht zulässig", + "description": "Das Wahllokal kann nicht aus Ihrer Liste entfernt werden, da es Daten enthält (Informationen zum Wahllokal und/oder Formularantworten), die vom System nicht in Ihrem Namen gelöscht werden können. Wenn Sie dieses Wahllokal entfernen möchten, löschen Sie bitte die Informationen zum Wahllokal und die Formularantworten manuell und wiederholen Sie dann diesen Vorgang." + }, + "delete_success": "Wahllokal erfolgreich gelöscht!", + "delete_error": "Beim Löschen des besuchten Wahllokals ist ein Problem aufgetreten. Bitte versuchen Sie es erneut.", + "offline_error_toast_msg": "Sie benötigen eine Internetverbindung, um diese Aktion auszuführen." + }, + "quick_report": { + "list": { + "title": "Kurzbericht", + "heading": "Meine gemeldeten Vorkommnise", + "error": "Fehler beim Laden der Berichte!", + "empty": "Senden Sie umgehend Kurzberichte an die Organisation, wenn Sie Unregelmäßigkeiten innerhalb oder außerhalb des Wahllokals bemerken oder wann immer dies erforderlich ist.", + "add": "Neue Vorkommnisse melden", + "no_files": "Keine angehängten Dateien", + "attachment_one": "{{count}} angehängte Datei ", + "attachment_other": "{{count}} angehängte Dateien" + }, + "attachments": { + "heading": "Hochgeladene Medien", + "loading": "Anhang hinzufügen...", + "upload": { + "preparing": "Anhang wird vorbereitet...", + "starting": "Hochladen wird gestartet...", + "progress": "Fortschritt beim Hochladen:", + "completed": "Hochladen abgeschlossen.", + "aborted": "Hochladen abgebrochen." + }, + "error": "Fehler beim Senden des Anhangs!" + }, + "options_menu": { + "manage_my_polling_stations": "Meine Wahllokale verwalten" + }, + "info_modal": { + "p1": "In diesem Abschnitt können Sie schnell alle Unregelmäßigkeiten bei Wahlen melden, die Sie in Wahllokalen oder deren Umgebung beobachten.", + "p2": "Mit dieser Funktion können Sie die Organisation außerhalb der regulären Beobachtungsformulare sofort benachrichtigen und so sicherstellen, dass dringende Vorkommnisse umgehend behandelt werden." + } + }, + "report_new_issue": { + "title": "Neue Vorkommnisse melden", + "upload": { + "compressing": "Anhang komprimieren", + "preparing": "Anhang wird vorbereitet...", + "starting": "Hochladen wird gestartet...", + "progress": "Hochladen-Fortschritt:", + "completed": "Hochladen abgeschlossen.", + "aborted": "Hochladen abgebrochen.", + "offline": "Sie benötigen eine Internetverbindung, um diese Aktion auszuführen." + }, + "media": { + "heading": "Hochgeladene Medien", + "add": "Medien hinzufügen", + "error": "Fehler beim Senden des Anhangs!", + "menu": { + "load": "Aus Galerie laden", + "take_picture": "Bild aufnehmen", + "record_video": "Video aufnehmen", + "upload_audio": "Audiodatei hochladen" + } + }, + "form": { + "polling_station_id": { + "label": "Wahllokal *", + "placeholder": "Wahllokal auswählen", + "extra": "Bitte geben Sie hier einige Identifikationsdaten für dieses Wahllokal an (z. B. Adresse, Name, Nummer usw.).", + "required": "Dieses Feld ist ein Pflichtfeld.", + "options": { + "other": "Anderes Wahllokal", + "not_related": "Nicht mit einem Wahllokal verbunden" + } + }, + "incident_category": { + "label": "Vorfallkategorie *", + "placeholder": "Kategorie", + "required": "Dieses Feld ist ein Pflichtfeld.", + "options": { + "PhysicalViolenceIntimidationPressure": "Körperliche Gewalt/Einschüchterung/Druck", + "CampaigningAtPollingStation": "Wahlkampf im Wahllokal", + "RestrictionOfObserversRights": "Einschränkung der Rechte von Beobachtern (Vertretern/Medien)", + "UnauthorizedPersonsAtPollingStation": "Unbefugte Person(en) im Wahllokal", + "ViolationDuringVoterVerificationProcess": "Verstoß während des Wählerüberprüfungsprozesses", + "VotingWithImproperDocumentation": "Wählen mit unzulässigen Dokumenten", + "IllegalRestrictionOfVotersRightToVote": "Illegale Einschränkung des Wahlrechts der Wählenden", + "DamagingOrSeizingElectionMaterials": "Beschädigung/Beschlagnahmung von Wahlmaterialien", + "ImproperFilingOrHandlingOfElectionDocumentation": "Unsachgemäße Einreichung/Behandlung von Wahlunterlagen", + "BallotStuffing": "Stopfen von Stimmzetteln", + "ViolationsRelatedToControlPaper": "Verstöße im Zusammenhang mit dem Kontrollzettel", + "NotCheckingVoterIdentificationSafeguardMeasures": "Nichtüberprüfung der Sicherheitsmaßnahmen zur Wähleridentifizierung", + "VotingWithoutVoterIdentificationSafeguardMeasures": "Wählen ohne Maßnahmen zum Schutz der Wähleridentität", + "BreachOfSecrecyOfVote": "Verletzung des Wahlgeheimnisses", + "ViolationsRelatedToMobileBallotBox": "Verstöße im Zusammenhang mit der mobilen Wahlurne", + "NumberOfBallotsExceedsNumberOfVoters": "Die Anzahl der Stimmzettel übersteigt die Anzahl der Wählenden", + "ImproperInvalidationOrValidationOfBallots": "Unzulässige Ungültigkeitserklärung/Gültigkeitserklärung von Stimmzetteln", + "FalsificationOrImproperCorrectionOfFinalProtocol": "Fälschung/unzulässige Korrektur des Abschlussprotokolls", + "RefusalToIssueCopyOfFinalProtocolOrIssuingImproperCopy": "Verweigerung der Ausstellung einer Kopie des endgültigen Protokolls/Ausstellung einer unzulässigen Kopie", + "ImproperFillingInOfFinalProtocol": "Unsachgemäßes Ausfüllen des Abschlussprotokolls", + "ViolationOfSealingProceduresOfElectionMaterials": "Verstoß gegen die Versiegelungsverfahren für Wahlunterlagen", + "ViolationsRelatedToVoterLists": "Verstöße im Zusammenhang mit den Wählendenlisten", + "Other": "Sonstiges" + } + }, + "polling_station_details": { + "label": "Angaben zum Wahllokal *", + "placeholder": "Bitte geben Sie hier einige Identifikationsdaten für dieses Wahllokal an (z. B. Adresse, Name, Nummer usw.).", + "required": "Dieses Feld ist ein Pflichtfeld.", + "max": "Die Eingabe darf {{value}} Zeichen nicht überschreiten." + }, + "issue_title": { + "label": "Titel des Vorfalls *", + "placeholder": "Schreiben Sie einen Titel für den Vorfall.", + "required": "Ein Titel des Vorfalls ist erforderlich.", + "max": "Die Eingabe darf {{value}} Zeichen nicht überschreiten." + }, + "issue_description": { + "label": "Beschreibung *", + "placeholder": "Beschreiben Sie die Situation hier ausführlich.", + "required": "Eine Beschreibung des Vorfalls ist erforderlich.", + "max": "Die Eingabe darf {{value}} Zeichen nicht überschreiten." + }, + "submit": "Vorfall melden", + "clear": "Löschen", + "loading": "Wird verarbeitet...", + "error": "Fehler beim Hinzufügen des Berichts" + } + }, + "report_details": { + "title": "", + "uploaded_media": "Hochgeladene Medien", + "no_files": "Keine angehängten Dateien", + "error": "Fehler beim Laden des Berichts" + }, + "guides": { + "title": "Ressourcen", + "empty": { + "heading": "Noch keine Leitfäden zum Lesen", + "paragraph": "Leitfäden und Ressourcen Ihrer Organisation griffbereit." + }, + "list": { + "heading": "Leitfäden ", + "guide": { + "backup_title": "Dokument", + "created_on": "Erstellt am" + } + }, + "options_sheet": { + "manage_my_polling_stations": "Meine Wahllokale verwalten" + }, + "info_modal": "In diesem Abschnitt finden Sie wichtige Informationen und Ressourcen, die Ihnen dabei helfen sollen, Wahlprozesse zu beobachten und als unabhängige*r Beobachter*in aufgetretene Wahlprobleme oder Unregelmäßigkeiten zu melden." + }, + "resources": { + "title": "Ressourcen", + "info": "In diesem Abschnitt finden Sie wichtige Informationen und Ressourcen, die Ihnen dabei helfen sollen, Wahlprozesse zu beobachten und als Bürger*in aufgetretene Wahlprobleme oder Unregelmäßigkeiten zu melden.", + "empty": { + "heading": "Noch keine Leitfäden zum Lesen", + "paragraph": "Leitfäden und Ressourcen zur Beobachtung von Wahlprozessen und zur Meldung von Problemen als Bürger in Ihren Händen." + }, + "types": { + "Document": "Dateityp PDF", + "Website": "Externe URL", + "Text": "In-App-Anleitung" + } + }, + "inbox": { + "title": "Posteingang", + "empty": { + "heading": "Noch keine Nachricht erhalten", + "paragraph": "Push-Nachrichten und Warnmeldungen von Ihrer Organisation werden hier angezeigt." + }, + "banner": "Nachrichten von {{ngoName}}", + "today": "Heute", + "your_organization": "Ihre Organisation", + "menu": { + "manage_polling_stations": "Meine Wahllokale verwalten" + }, + "info_modal": { + "p1": "In diesem Posteingang erhalten Sie Live-Updates und Nachrichten von der NGO, die Sie als Beobachter akkreditiert hat.", + "p2": "Schauen Sie regelmäßig nach, ob Sie neue Informationen erhalten haben, die für Ihre Beobachtungsaktivität relevant sind." + } + }, + "updates": { + "title": "Aktualisierungen", + "empty": { + "heading": "Noch keine Updates erhalten", + "paragraph": "Aktuelle Informationen zur Wahlperiode werden hier veröffentlicht." + }, + "info_modal": { + "p1": "In diesem Abschnitt erhalten Sie Live-Updates vom Vote Monitor-Team zu Wahlperioden, die für Sie als Bürger mit Interesse an bürgerschaftlichem Engagement relevant sind.", + "p2": "Schauen Sie regelmäßig nach, ob Sie neue Informationen erhalten haben." + } + }, + "more": { + "title": "Mehr", + "change-language": "App-Sprache ändern", + "change-password": "Passwort ändern", + "terms": "Allgemeine Geschäftsbedingungen", + "privacy_policy": "Datenschutzerklärung", + "about": "Über Vote Monitor", + "app_version": "Vote Monitor version {{value}}", + "support": "Rufen Sie die NGO-Hotline an", + "feedback": "Feedback zur App geben", + "logout": "Abmelden", + "logged_in": "Angemeldet als {{user}}", + "warning_modal": { + "logout_offline": { + "title": "Achtung: Sie haben nicht synchronisierte Daten.", + "description": "Sie sind derzeit offline. Wenn Sie sich jetzt abmelden, gehen alle Formulare, Anhänge oder Notizen, die Sie im Offline-Modus ausgefüllt oder hochgeladen haben, verloren. Um Datenverlust zu vermeiden, stellen Sie bitte vor dem Abmelden erneut eine Verbindung zum Internet her.", + "cancel": "Abbrechen", + "action": "Abmelden" + }, + "logout_online": { + "title": "Möchten Sie sich wirklich abmelden?", + "cancel": "Abbrechen", + "action": "Abmelden" + } + }, + "feedback_toast": { + "success": "Feedback gesendet!", + "offline": "Sie benötigen eine Internetverbindung, um diese Aktion auszuführen.", + "error": "Fehler beim Hinzufügen von Feedback!", + "required": "Dieses Feld ist ein Pflichtfeld." + }, + "feedback_sheet": { + "heading": "Senden Sie uns Ihr Feedback", + "p1": "Bitte teilen Sie uns alle Probleme mit, die Sie möglicherweise mit der Funktionsweise der App hatten, oder alle Vorschläge, die Sie zur Verbesserung von Vote Monitor für die Zukunft machen möchten. Wir freuen uns über jedes Feedback!", + "placeholder": "Schreiben Sie hier Ihr Feedback...", + "cancel": "Abbrechen", + "action": "Senden ", + "input": { + "max": "Die Eingabe darf {{value}} Zeichen nicht überschreiten." + } + }, + "options_sheet": { + "manage_my_polling_stations": "Meine Wahllokale verwalten" + } + }, + "change_password": { + "title": "Passwort ändern", + "form": { + "current_password": { + "label": "Aktuelles Passwort *", + "placeholder": "Aktuelles Passwort eingeben", + "required": "Ein Passwort ist erforderlich.", + "credentials_error": "Das aktuelle Passwort ist falsch." + }, + "new_password": { + "label": "Neues Passwort *", + "placeholder": "Neues Passwort eingeben", + "helper": "Muss mindestens 8 Zeichen lang sein", + "required": "Das neue Passwort ist erforderlich." + }, + "confirm_password": { + "label": "Neues Passwort bestätigen *", + "placeholder": "Passwort bestätigen", + "helper": "Beide Passwörter müssen übereinstimmen.", + "required": "Das neue Passwort ist erforderlich.", + "no_match": "Passwörter stimmen nicht überein" + }, + "save": "Neues Passwort speichern" + }, + "confirmation": { + "heading": "Passwort geändert!", + "paragraph": "Ihr Passwort wurde erfolgreich geändert.", + "confirm": "Zurück zur App" + }, + "error": { + "offline": "Die App ist offline und kann die Anfrage nicht ausführen." + } + }, + "generic_error_screen": { + "paragraph1": "Hoppla, etwas ist schiefgelaufen!", + "paragraph2": "Nach diesem Fehler konnten wir den Vorgang nicht fortsetzen. Bitte überprüfen Sie Ihre Internetverbindung und starten Sie die Anwendung neu!", + "retry": "Wiederholen", + "logout": "Abmelden" + }, + "network_banner": { + "online": "App online. Alle Antworten werden an den Server gesendet.", + "offline": "Offline-Modus. Antworten werden lokal gespeichert.", + "offline_citizen": "Offline-Modus. Sie benötigen eine Internetverbindung, um das Formular zu senden.", + "more_details": "Weitere Details", + "offline_warning": "Es sieht so aus, als wären Sie derzeit offline. Keine Sorge, Ihre Antworten werden lokal gespeichert und mit unseren Servern synchronisiert, sobald Ihre Verbindung wiederhergestellt ist. Sie können gerne weiter die Beobachtungsformulare ausfüllen und Kurzberichte einreichen.", + "offline_warning_citizen": "Es sieht so aus, als wären Sie derzeit offline. Um das Formular zu senden, müssen Sie online sein." + }, + "sync": { + "sync_data": "Offline-Daten werden synchronisiert...", + "warning": "Bitte schließen Sie die App NICHT und unterbrechen Sie die Internetverbindung NICHT, da sonst die Daten verloren gehen.", + "files": "Wir laden Ihre Dateien hoch, dies kann einen Moment dauern..." + }, + "delete_submission": { + "title": "Überprüfung des Eintrags vor dem Löschen", + "description": "Diese Aktion kann nicht rückgängig gemacht werden. Nach dem Löschen können keine Daten aus dieser Übermittlung wiederhergestellt werden.", + "header": "Beitrag Nr. {{submissionNumber}} löschen", + "attachments": "Anhänge: {{value}}", + "notes": "Anmerkungen: {{value}}", + "delete": "Eintrag löschen", + "warning_dialog": { + "title": "Möchten Sie diesen Eintrag wirklich löschen?", + "description": "Diese Aktion kann nicht rückgängig gemacht werden.", + "cancel": "Abbrechen", + "delete": "Löschen" + } + }, + "form_submission_card": { + "header": "Eintrag Nr. {{value}}", + "last_updated_at": "Zuletzt aktualisiert am:", + "form_status": "Formularstatus:", + "answered_questions": "Beantwortete Fragen:", + "attachments": "Anhänge:", + "notes": "Anmerkungen:" + } +} \ No newline at end of file diff --git a/utils/excel-to-locales/locales/en/translations.json b/utils/excel-to-locales/locales/en/translations.json index a3d89fbcf..e23f54dde 100644 --- a/utils/excel-to-locales/locales/en/translations.json +++ b/utils/excel-to-locales/locales/en/translations.json @@ -18,7 +18,8 @@ "no_data": "No data found.", "select": "Select", "done": "Done", - "ok": "OK" + "ok": "OK", + "back": "Back" }, "languages": { "ro": "Romanian", @@ -29,7 +30,8 @@ "ka": "Georgian", "hy": "Armenian", "ru": "Russian", - "az": "Azerbaijani" + "az": "Azerbaijani", + "es": "Spanish" }, "onboarding": { "language": { @@ -74,19 +76,21 @@ "retry": "Retry" }, "drawer": { - "report_as": "Report as {{value}}", - "citizen": "citizen", - "accredited_observer": "accredited observer" + "report_as_citizen": "Report as citizen", + "report_as_accredited_observer": "Report as accredited observer" }, "citizen_report_issue": { "header_title": "Report an issue", - "description": "As a citizen, you can report an election-related issue, by filling-in a reporting form, from the list below.", + "description": "As a citizen, you can report an election-related issue by completing one of the reporting forms available below.", + "disclaimer": "Submitting a report through Vote Monitor Citizen is not the same as filing an official complaint with the authorities responsible for organizing elections. For more information on how reports are used, check the info button in the upper right corner. If you want to submit an official complaint, please refer to the article How to Submit an Official Complaint in the Resources section.", "empty_forms": "Reporting forms will appear here once Vote Monitor team will publish them in the system.", "error_message": "Something went wrong while retrieving the reporting forms. Please retry.", "retry": "Retry", "info_modal": { - "p1": "Reports submitted through Vote Monitor Citizen will be analysed by the NGOs monitoring the election event, and may be included in electoral observation reports. In certain cases, your reports may be forwarded to the institutions responsible for organising elections in order to improve future election processes.", - "p2": "Please note that submitting a report through this application does not constitute an official complaint filed with the institutions responsible for organising elections.", + "p1": "Submitting a report through Vote Monitor Citizen does not constitute an official complaint to the authorities responsible for organizing elections and does not guarantee that your report will be reviewed or addressed.", + "p2": "After data analysis, some reports submitted through the app may be included in election observation reports prepared by organizations partnered with Code for Romania/Commit Global. Aggregated and anonymized data may also be used for statistical purposes.", + "p3": "In certain cases, your reports may be shared with authorities responsible for organizing elections to help improve future electoral processes, though this is not guaranteed.", + "p4": "You have full control over your personal data. Reporting forms allow you to choose whether to report anonymously or consent to being contacted by an organization should your report be reviewed.", "ok": "OK" } }, @@ -124,13 +128,45 @@ "discard": "Go back", "save": "Stay here" } + }, + "attachments": { + "heading": "Uploaded media", + "loading": "Adding attachment... ", + "error": "Error while sending the attachment!", + "add": "Add media files", + "menu": { + "load": "Load from gallery", + "take_picture": "Take a photo", + "record_video": "Record a video", + "upload_audio": "Upload audio file" + }, + "upload": { + "compressing": "Compressing attachment: ", + "preparing": "Preparing attachment...", + "starting": "Starting the upload...", + "progress": "Uploading attachments: ", + "completed": "Upload completed.", + "aborted": "Upload aborted.", + "offline": "You need an internet connection in order to perform this action." + }, + "delete": { + "title": "Delete media file", + "description": "This action cannot be undone. Once deleted, a media file cannot be retrieved.", + "actions": { + "cancel": "Cancel", + "clear": "Delete" + } + } } }, "login": { "disclaimer": { "paragraph1": "Vote Monitor Observer can only be used by independent observers, accredited by an organisation which monitors election processes. An invitation email from your organisation is needed, with instructions to set up an account.", - "paragraph2": "If you are not an accredited observer, you may still report irregularities as a citizen for an ongoing election event, without needing an account.", - "email": "info@commitglobal.org" + "paragraph2": { + "slice1": "If you are not an accredited observer, you may still", + "link": "report irregularities as a citizen", + "slice2": "for an ongoing election event, without needing an account." + } }, "heading": "Log in", "paragraph": "Please use the email address with which you registered as an independent observer:", @@ -219,8 +255,11 @@ "quick_report": "Report", "guides": "Guides", "inbox": "Inbox", - "more": "More" + "more": "More", + "report": "Report", + "updates": "Updates" }, + "Leitfäden und Ressourcen Ihrer Organisation griffbereit": "Resources", "add_polling_station": { "title": "Add polling station", "progress": { @@ -239,6 +278,8 @@ "heading": "No election event to observe yet", "paragraph": "You will be able to use the app once you will be assigned to an election event by your organization" }, + "no_form": "The Polling Station Information form is not configured", + "refresh_page": "If data is not visible, try refreshing the page to retrieve the most recent information", "no_visited_polling_stations": { "heading": "No visited polling stations yet", "paragraph": "Start configuring your first polling station before completing observation forms.", @@ -378,7 +419,10 @@ "answered_questions": "Answered questions", "resume": "Resume form", "start_form": "Start form", - "progress": "progress" + "progress": "progress", + "submissions_list": "Form submissions", + "add_submission": "Add submission", + "number_of_submissions": "# of submissions: {{value}}" }, "questions": { "title": "Questions", @@ -394,7 +438,8 @@ "error": "Error while loading the form data!", "menu": { "clear": "Clear form (delete all answers)", - "change_language": "Change language" + "change_language": "Change language", + "delete": "Delete submission" }, "clear_answers_modal": { "title": "Clear form {{value}}", @@ -406,6 +451,17 @@ "clear": "Clear form", "cancel": "Cancel" } + }, + "delete_submission_modal": { + "title": "Delete submission", + "description": { + "p1": "This action will delete this form submission (including notes and media files).", + "p2": "To avoid unintended information loss, please ensure you check the form before performing this action" + }, + "actions": { + "clear": "Delete submission", + "cancel": "Cancel" + } } }, "polling_station_form_wizard": { @@ -420,6 +476,7 @@ "date_placeholder": "Please enter a date", "text_placeholder": "Please enter a text" }, + "save_and_continue": "Save and continue", "attachments": { "heading": "Uploaded media", "loading": "Adding attachment... ", @@ -439,7 +496,12 @@ "progress": "Upload progress:", "completed": "Upload completed.", "aborted": "Upload aborted.", - "offline": "You need an internet connection in order to perform this action." + "offline": "You need an internet connection in order to perform this action.", + "abort_offline": "Go online to continue or abort the upload", + "abort_offline_button": "Cancel the upload", + "uploaded": "Successfully uploaded {{value}} files.", + "abort_offline_confirm": "Are you sure you want to abort the upload?", + "abort_offline_cancel": "Cancel" } }, "notes": { @@ -501,7 +563,7 @@ }, "general_text": "Manage my polling stations", "ps_card": { - "header": "Polling station #{{value}}", + "header": "Polling station: {{value}}", "l1": "[Location L1]", "l2": "[Location L2]", "l3": "[Location L3]", @@ -511,7 +573,7 @@ "ps_number": "Polling station number" }, "warning_dialog": { - "title": "Remove Polling station #{{value}}", + "title": "Remove Polling station: {{value}}", "description": "This action will remove the polling station from your list of visited polling stations. You can add it again through the Add New Polling Station process.", "actions": { "cancel": "Cancel", @@ -520,7 +582,7 @@ } }, "removal_unallowed_dialog": { - "title": "Removing polling station #{{value}} not allowed", + "title": "Removing polling station {{value}} not allowed", "description": "The polling station cannot be removed from your list because it contains data (Polling station information and/or Form answers) which cannot be deleted by the system on your behalf. If you want to remove this polling station, please clear polling station information and form answers manually, then retry this action." }, "delete_success": "Polling station deleted successfully!", @@ -593,7 +655,7 @@ }, "incident_category": { "label": "Incident category *", - "placeholder": "Incident category type", + "placeholder": "Category", "required": "This field is required.", "options": { "PhysicalViolenceIntimidationPressure": "Physical violence/intimidation/pressure", @@ -646,7 +708,7 @@ } }, "report_details": { - "title": "Report title", + "title": "", "uploaded_media": "Uploaded media", "no_files": "No attached files", "error": "Error while loading the report" @@ -806,5 +868,27 @@ "sync_data": "Synchronizing offline data...", "warning": "Please DO NOT CLOSE the app or the internet connection or the data will be lost.", "files": "We are uploading your files, it may take a while..." + }, + "delete_submission": { + "title": "Review submission before deleting", + "description": "This action cannot be undone. Once deleted, no data from this submission can be recovered.", + "header": "Delete Submission #{{submissionNumber}}", + "attachments": "Attachments: {{value}}", + "notes": "Notes: {{value}}", + "delete": "Delete submission", + "warning_dialog": { + "title": "Are you sure you want to delete this submission?", + "description": "This action cannot be undone.", + "cancel": "Cancel", + "delete": "Delete" + } + }, + "form_submission_card": { + "header": "Submission #{{value}}", + "last_updated_at": "Last updated at:", + "form_status": "Form status:", + "answered_questions": "Answered questions:", + "attachments": "Attachments:", + "notes": "Notes:" } } \ No newline at end of file diff --git a/web/src/common/types.ts b/web/src/common/types.ts index 4071b2496..d702dc5ec 100644 --- a/web/src/common/types.ts +++ b/web/src/common/types.ts @@ -301,6 +301,8 @@ export interface PollingStation { address: string; displayOrder: number; tags?: Record; + latitude?: number; + longitude?: number; } export interface Location { @@ -326,6 +328,8 @@ export const importPollingStationSchema = z number: z.string().min(1, 'Number is required'), displayOrder: z.coerce.number().catch(0), tags: z.record(z.string()).optional().catch({}), + latitude: z.coerce.number().min(-90).max(90).optional(), + longitude: z.coerce.number().min(-180).max(180).optional(), }) .superRefine((val, ctx) => { if (isNilOrWhitespace(val.level2) && isNotNilOrWhitespace(val.level3)) { diff --git a/web/src/components/EditPollingStationModal/EditPollingStationModal.tsx b/web/src/components/EditPollingStationModal/EditPollingStationModal.tsx index dea33f480..f0834c5eb 100644 --- a/web/src/components/EditPollingStationModal/EditPollingStationModal.tsx +++ b/web/src/components/EditPollingStationModal/EditPollingStationModal.tsx @@ -31,6 +31,8 @@ export default function EditPollingStationModal({ address: pollingStation.address, displayOrder: pollingStation.displayOrder, tags: pollingStation.tags, + latitude: pollingStation.latitude, + longitude: pollingStation.longitude, }, }); @@ -50,89 +52,91 @@ export default function EditPollingStationModal({
- ( - - Level 1 - - - - - - )} - /> +
+ ( + + Level 1 + + + + + + )} + /> - ( - - Level 2 - - - - - - )} - /> + ( + + Level 2 + + + + + + )} + /> - ( - - Level 3 - - - - - - )} - /> + ( + + Level 3 + + + + + + )} + /> - ( - - Level 4 - - - - - - )} - /> + ( + + Level 4 + + + + + + )} + /> - ( - - Level 5 - - - - - - )} - /> + ( + + Level 5 + + + + + + )} + /> + ( + + Number + + + + + + )} + /> +
- ( - - Number - - - - - - )} - /> )} /> + +
+ ( + + Latitude + + field.onChange(e.target.value ? parseFloat(e.target.value) : undefined)} + /> + + + + )} + /> + + ( + + Longitude + + field.onChange(e.target.value ? parseFloat(e.target.value) : undefined)} + /> + + + + )} + /> +
+ diff --git a/web/src/components/PollingStationsDashboard/CreatePollingStationDialog.tsx b/web/src/components/PollingStationsDashboard/CreatePollingStationDialog.tsx index e0d7c47df..9182cb087 100644 --- a/web/src/components/PollingStationsDashboard/CreatePollingStationDialog.tsx +++ b/web/src/components/PollingStationsDashboard/CreatePollingStationDialog.tsx @@ -2,7 +2,7 @@ import { authApi } from '@/common/auth-api'; import { importPollingStationSchema } from '@/common/types'; import { Button } from '@/components/ui/button'; import { Dialog, DialogClose, DialogContent, DialogFooter, DialogTitle } from '@/components/ui/dialog'; -import { Form, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'; +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; import { toast } from '@/components/ui/use-toast'; import { useCurrentElectionRoundStore } from '@/context/election-round.store'; @@ -71,75 +71,90 @@ function CreatePollingStationDialog({ open, onOpenChange }: CreatePollingStation
- ( - - {t('headers.level1')} - - - - )} - /> +
+ ( + + Level 1 + + + + + + )} + /> - ( - - {t('headers.level2')} - - - - )} - /> + ( + + Level 2 + + + + + + )} + /> - ( - - {t('headers.level3')} - - - - )} - /> - ( - - {t('headers.level4')} - - - - )} - /> - ( - - {t('headers.level5')} - - - - )} - /> + ( + + Level 3 + + + + + + )} + /> - ( - - {t('headers.number')} - - - - )} - /> + ( + + Level 4 + + + + + + )} + /> + + ( + + Level 5 + + + + + + )} + /> + ( + + Number + + + + + + )} + /> +
+
+ ( + + Latitude + field.onChange(e.target.value ? parseFloat(e.target.value) : undefined)} + /> + + + )} + /> + + ( + + Longitude + field.onChange(e.target.value ? parseFloat(e.target.value) : undefined)} + /> + + + )} + /> +
+ + ); + } + + return -; + } + }, + { + header: ({ column }) => ( + + ), + accessorKey: 'tags', + enableSorting: false, + enableGlobalFilter: true, + cell: ({ + row: { + original: { tags }, + }, + }) => `${key} : ${value}`)} />, + }, +]; diff --git a/web/src/features/polling-stations/PollingStationsImport/ImportedPollingStationsDataTable.tsx b/web/src/features/polling-stations/PollingStationsImport/ImportedPollingStationsDataTable.tsx index 6263e0e60..fe8889cd1 100644 --- a/web/src/features/polling-stations/PollingStationsImport/ImportedPollingStationsDataTable.tsx +++ b/web/src/features/polling-stations/PollingStationsImport/ImportedPollingStationsDataTable.tsx @@ -274,6 +274,66 @@ export function ImportedPollingStationsDataTable({ ), }, + { + accessorKey: 'latitude', + header: ({ column }) => , + cell: ({ row }) => + row.original.errors?.some((er) => er.path.some((path) => path === 'latitude')) ? ( +
+ {row.original.latitude ?? '-'} + + + + + + + + + +
+ {row.original.errors + ?.filter((error) => error.path.some((path) => path === 'latitude')) + .map((error, idx) =>
{error.message}
)} +
+
+
+
+
+ ) : ( +
{row.original.latitude ?? '-'}
+ ), + }, + + { + accessorKey: 'longitude', + header: ({ column }) => , + cell: ({ row }) => + row.original.errors?.some((er) => er.path.some((path) => path === 'longitude')) ? ( +
+ {row.original.longitude ?? '-'} + + + + + + + + + +
+ {row.original.errors + ?.filter((error) => error.path.some((path) => path === 'longitude')) + .map((error, idx) =>
{error.message}
)} +
+
+
+
+
+ ) : ( +
{row.original.longitude ?? '-'}
+ ), + }, + { accessorKey: 'errors', header: ({ column }) => , diff --git a/web/src/features/polling-stations/PollingStationsImport/PollingStationsImport.tsx b/web/src/features/polling-stations/PollingStationsImport/PollingStationsImport.tsx index 86dac9763..2d00d01b4 100644 --- a/web/src/features/polling-stations/PollingStationsImport/PollingStationsImport.tsx +++ b/web/src/features/polling-stations/PollingStationsImport/PollingStationsImport.tsx @@ -3,6 +3,7 @@ import Layout from '@/components/layout/Layout'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { FileUploader } from '@/components/ui/file-uploader'; import { Separator } from '@/components/ui/separator'; +import { Badge } from '@/components/ui/badge'; import Papa from 'papaparse'; import { useCallback, useMemo, useState } from 'react'; import { z, ZodIssue } from 'zod'; @@ -14,10 +15,10 @@ import { useCurrentElectionRoundStore } from '@/context/election-round.store'; import { pollingStationsKeys } from '@/hooks/polling-stations-levels'; import { downloadImportExample, TemplateType } from '@/lib/utils'; import { queryClient } from '@/main'; -import { ArrowDownTrayIcon } from '@heroicons/react/24/outline'; +import { ArrowDownTrayIcon, DocumentTextIcon, CheckCircleIcon, ExclamationCircleIcon } from '@heroicons/react/24/outline'; import { useMutation } from '@tanstack/react-query'; import { useNavigate } from '@tanstack/react-router'; -import { LoaderIcon } from 'lucide-react'; +import { LoaderIcon, Upload } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { ImportedPollingStationsDataTable } from './ImportedPollingStationsDataTable'; @@ -51,6 +52,14 @@ export function PollingStationsImport(): FunctionComponent { return pollingStations.some((pollingStation) => pollingStation.errors && pollingStation.errors?.length > 0); }, [pollingStations]); + const validCount = useMemo(() => { + return pollingStations.filter((ps) => !ps.errors || ps.errors.length === 0).length; + }, [pollingStations]); + + const errorCount = useMemo(() => { + return pollingStations.filter((ps) => ps.errors && ps.errors.length > 0).length; + }, [pollingStations]); + const { mutate, isPending } = useMutation({ mutationFn: ({ electionRoundId, @@ -87,92 +96,138 @@ export function PollingStationsImport(): FunctionComponent { return ( - - - - In order to successfully import a list of polling stations, please use the template provided below. Download - the template, fill it in with the observer information and then upload it. No other format is accepted for - import. - - - - -
downloadImportExample(TemplateType.PollingStations)} - className='px-3 py-1 rounded-lg cursor-pointer bg-purple-50 w-[300px] '> -
- - polling_station_import_template.csv -
-
- { - const file = files[0]; - if (!file) { - setPollingStations([]); - } else { - Papa.parse(file, { - header: true, - skipEmptyLines: true, - // worker: true, - transformHeader: (header) => header.charAt(0).toLowerCase() + header.slice(1), - async complete(results) { - if (results.errors.length) { - // Optionally show an error message to the user. - toast({ - title: 'Parsing errors', - description: 'Please check the file and try again', - variant: 'destructive', - }); - } - - const validatedPollingStations = results.data.map((pollingStation) => { - const validationResult = importPollingStationSchema.safeParse(pollingStation); - return { - ...(validationResult.success ? validationResult.data : pollingStation), - id: crypto.randomUUID(), - errors: validationResult.success ? [] : validationResult.error.errors, - }; - }); - - setPollingStations(validatedPollingStations); - }, - }); - } - }} - /> -
-
- {pollingStations.length ? ( - +
+ {/* Template Download Section */} + - Polling stations to be imported + + + Step 1: Download Template + -
- Review the data and correct the errors before import {' '} - -
{' '} + Download the CSV template and fill it with your polling station data. The template includes columns for + location levels, address, station number, display order, and GPS coordinates (latitude/longitude).
-
- -
+ + + + + + {/* Upload Section */} + + + + + Step 2: Upload Your File + + + Upload your completed CSV file. The system will validate the data and highlight any errors that need to be + corrected before import. + + + + { + const file = files[0]; + if (!file) { + setPollingStations([]); + } else { + Papa.parse(file, { + header: true, + skipEmptyLines: true, + transformHeader: (header) => header.charAt(0).toLowerCase() + header.slice(1), + async complete(results) { + if (results.errors.length) { + toast({ + title: 'Parsing errors', + description: 'Please check the file and try again', + variant: 'destructive', + }); + } + + const validatedPollingStations = results.data.map((pollingStation) => { + const validationResult = importPollingStationSchema.safeParse(pollingStation); + return { + ...(validationResult.success ? validationResult.data : pollingStation), + id: crypto.randomUUID(), + errors: validationResult.success ? [] : validationResult.error.errors, + }; + }); + + setPollingStations(validatedPollingStations); + }, + }); + } + }} + /> + + + + {/* Review and Import Section */} + {pollingStations.length > 0 && ( + + +
+
+ Step 3: Review and Import + + Review the data below and correct any errors before importing. + +
+ +
+ + {/* Stats Summary */} +
+ + Total: {pollingStations.length} + + + + Valid: {validCount} + + {errorCount > 0 && ( + + + Errors: {errorCount} + + )} +
+ + +
+ -
-
-
- ) : null} + + + )} +
); } diff --git a/web/src/locales/en.json b/web/src/locales/en.json index 40316706a..927f11812 100644 --- a/web/src/locales/en.json +++ b/web/src/locales/en.json @@ -249,6 +249,9 @@ "number": "Number", "address": "Address", "tags": "Polling station tags", + "coordinates": "Coordinates", + "latitude": "Latitude", + "longitude": "Longitude", "level1": "Level 1", "level2": "Level 2", "level3": "Level 3",