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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions api/src/Feature.ElectionRounds/Create/Endpoint.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using Feature.ElectionRounds.Specifications;
using Vote.Monitor.Core.Constants;
using Vote.Monitor.Core.Constants;
using Vote.Monitor.Core.Models;
using Vote.Monitor.Domain.Entities.FormBase.Questions;
using Vote.Monitor.Domain.Entities.PollingStationInfoFormAggregate;
Expand Down Expand Up @@ -63,7 +62,8 @@ public override async Task<Results<Ok<ElectionRoundModel>, Conflict<ProblemDetai
CoalitionId = null,
CoalitionName = null,
IsCoalitionLeader = false,
IsMonitoringNgoForCitizenReporting = false
IsMonitoringNgoForCitizenReporting = false,
AllowMultipleFormSubmission =null
});
}
}
1 change: 1 addition & 0 deletions api/src/Feature.ElectionRounds/ElectionRoundModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public record ElectionRoundModel

public required bool? IsMonitoringNgoForCitizenReporting { get; init; }
public required bool? IsCoalitionLeader { get; init; }
public required bool? AllowMultipleFormSubmission { get; init; }

public required Guid? CoalitionId { get; init; }
public required string? CoalitionName { get; init; }
Expand Down
4 changes: 3 additions & 1 deletion api/src/Feature.ElectionRounds/Get/Endpoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ private async Task<Results<Ok<ElectionRoundModel>, NotFound>> GetElectionRoundAs
CoalitionName = null,
IsCoalitionLeader = null,
IsMonitoringNgoForCitizenReporting = null,
AllowMultipleFormSubmission = null,
})
.AsSplitQuery()
.FirstOrDefaultAsync(ct);
Expand Down Expand Up @@ -107,7 +108,8 @@ private async Task<Results<Ok<ElectionRoundModel>, NotFound>> GetElectionRoundAs
.Where(c =>
c.Memberships.Any(m => m.MonitoringNgoId == x.Id) && c.ElectionRoundId == x.ElectionRoundId)
.Select(c => c.Id)
.FirstOrDefault()
.FirstOrDefault(),
AllowMultipleFormSubmission = x.AllowMultipleFormSubmission
})
.FirstOrDefaultAsync(ct);

Expand Down
3 changes: 2 additions & 1 deletion api/src/Feature.ElectionRounds/Monitoring/Endpoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ public override async Task<Ok<Result>> ExecuteAsync(Request req, CancellationTok
.Where(c =>
c.Memberships.Any(m => m.MonitoringNgoId == x.Id) && c.ElectionRoundId == x.ElectionRoundId)
.Select(c => c.Id)
.FirstOrDefault()
.FirstOrDefault(),
AllowMultipleFormSubmission = x.AllowMultipleFormSubmission
}).ToListAsync(ct);

return TypedResults.Ok(new Result { ElectionRounds = electionRounds });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ public GetObserverElectionSpecification(Guid observerId)
CoalitionId = null,
CoalitionName = null,
IsCoalitionLeader = false,
IsMonitoringNgoForCitizenReporting = false
IsMonitoringNgoForCitizenReporting = false,
AllowMultipleFormSubmission = x.MonitoringNgos.First(ngo => ngo.MonitoringObservers.Any(o => o.ObserverId == observerId)).AllowMultipleFormSubmission
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ public GetObserverElectionV2Specification(Guid observerId)
CoalitionId = null,
CoalitionName = null,
IsCoalitionLeader = false,
IsMonitoringNgoForCitizenReporting = false
IsMonitoringNgoForCitizenReporting = false,
AllowMultipleFormSubmission = x.MonitoringNgos.First(ngo => ngo.MonitoringObservers.Any(o => o.ObserverId == observerId)).AllowMultipleFormSubmission
});
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public virtual void Unarchive()
Status = ElectionRoundStatus.NotStarted;
}

public virtual MonitoringNgo AddMonitoringNgo(Ngo ngo)
public virtual MonitoringNgo AddMonitoringNgo(Ngo ngo, bool allowMultipleFormSubmission = false)
{
var monitoringNgo = _monitoringNgos.FirstOrDefault(x => x.NgoId == ngo.Id);

Expand All @@ -101,7 +101,7 @@ public virtual MonitoringNgo AddMonitoringNgo(Ngo ngo)
return monitoringNgo;
}

monitoringNgo = new MonitoringNgo(this, ngo);
monitoringNgo = new MonitoringNgo(this, ngo, allowMultipleFormSubmission);
_monitoringNgos.Add(monitoringNgo);

return monitoringNgo;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ public class MonitoringNgo : AuditableBaseEntity, IAggregateRoot
public Guid NgoId { get; private set; }
public Ngo Ngo { get; private set; }
public Guid FormsVersion { get; private set; }

public bool AllowMultipleFormSubmission { get; private set; }
public virtual List<MonitoringObserver> MonitoringObservers { get; internal set; } = [];

public MonitoringNgoStatus Status { get; private set; }
public virtual List<CoalitionMembership> Memberships { get; internal set; } = [];

internal MonitoringNgo(ElectionRound electionRound, Ngo ngo)
internal MonitoringNgo(ElectionRound electionRound, Ngo ngo, bool allowMultipleFormSubmission = false)
{
Id = Guid.NewGuid();
ElectionRound = electionRound;
Expand All @@ -27,6 +29,7 @@ internal MonitoringNgo(ElectionRound electionRound, Ngo ngo)
NgoId = ngo.Id;
Status = MonitoringNgoStatus.Active;
FormsVersion = Guid.NewGuid();
AllowMultipleFormSubmission = allowMultipleFormSubmission;
}

public virtual MonitoringObserver? AddMonitoringObserver(Observer observer)
Expand Down Expand Up @@ -68,15 +71,25 @@ public void Suspend()
{
Status = MonitoringNgoStatus.Suspended;
}

public void UpdateFormVersion()
{
FormsVersion = Guid.NewGuid();
}


public void EnableMultipleFormSubmission()
{
AllowMultipleFormSubmission = true;
}

public void DisableMultipleFormSubmission()
{
AllowMultipleFormSubmission = true;
}

#pragma warning disable CS8618 // Required by Entity Framework
private MonitoringNgo()
{

}
#pragma warning restore CS8618
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ public void Configure(EntityTypeBuilder<MonitoringNgo> builder)

builder.HasIndex(x => x.ElectionRoundId);
builder.HasIndex(x => x.NgoId);
builder.Property(x => x.AllowMultipleFormSubmission)
.IsRequired()
.HasDefaultValue(false);

builder
.HasMany(e => e.MonitoringObservers)
Expand Down
Loading
Loading