fix: Fix bug multiple instance tracking in CompleteRegisterPassengerCommandHandler in update operation

This commit is contained in:
Pc 2023-06-15 21:16:54 +03:30
parent 17269df649
commit c3697e4d04
2 changed files with 17 additions and 20 deletions

View File

@ -96,19 +96,18 @@ internal class CompleteRegisterPassengerCommandHandler : ICommandHandler<Complet
{
Guard.Against.Null(request, nameof(request));
var passenger = await _passengerDbContext.Passengers.AsNoTracking().SingleOrDefaultAsync(
var passenger = await _passengerDbContext.Passengers.SingleOrDefaultAsync(
x => x.PassportNumber.Value == request.PassportNumber, cancellationToken);
if (passenger is null)
{
throw new PassengerNotExist();
}
var passengerEntity = passenger.CompleteRegistrationPassenger(passenger.Id, passenger.Name,
passenger.CompleteRegistrationPassenger(passenger.Id, passenger.Name,
passenger.PassportNumber, request.PassengerType, Age.Of(request.Age));
var updatePassenger = _passengerDbContext.Passengers.Update(passengerEntity).Entity;
var updatePassenger = _passengerDbContext.Passengers.Update(passenger).Entity;
var passengerDto = _mapper.Map<PassengerDto>(updatePassenger);

View File

@ -13,24 +13,21 @@ public record Passenger : Aggregate<PassengerId>
public Enums.PassengerType PassengerType { get; private set; }
public Age? Age { get; private set; }
public Passenger CompleteRegistrationPassenger(PassengerId id, Name name, PassportNumber passportNumber, Enums.PassengerType passengerType, Age age, bool isDeleted = false)
public void CompleteRegistrationPassenger(PassengerId id, Name name, PassportNumber passportNumber,
Enums.PassengerType passengerType, Age age, bool isDeleted = false)
{
var passenger = new Passenger
{
Id = id,
Name = name,
PassportNumber = passportNumber,
PassengerType = passengerType,
Age = age,
IsDeleted = isDeleted
};
this.Id = id;
this.Name = name;
this.PassportNumber = passportNumber;
this.PassengerType = passengerType;
this.Age = age;
this.IsDeleted = isDeleted;
var @event = new PassengerRegistrationCompletedDomainEvent(passenger.Id, passenger.Name, passenger.PassportNumber,
passenger.PassengerType, passenger.Age, passenger.IsDeleted);
var @event = new PassengerRegistrationCompletedDomainEvent(this.Id, this.Name,
this.PassportNumber,
this.PassengerType, this.Age, this.IsDeleted);
passenger.AddDomainEvent(@event);
return passenger;
this.AddDomainEvent(@event);
}
@ -38,7 +35,8 @@ public record Passenger : Aggregate<PassengerId>
{
var passenger = new Passenger { Id = id, Name = name, PassportNumber = passportNumber, IsDeleted = isDeleted };
var @event = new PassengerCreatedDomainEvent(passenger.Id, passenger.Name, passenger.PassportNumber, passenger.IsDeleted);
var @event = new PassengerCreatedDomainEvent(passenger.Id, passenger.Name, passenger.PassportNumber,
passenger.IsDeleted);
passenger.AddDomainEvent(@event);