public async Task <Response> Handle(Request request, CancellationToken cancellationToken) { var existingRocket = await _dbContext.Rockets.AsQueryable() .FirstOrDefaultAsync(z => z.SerialNumber == request.SerialNumber, cancellationToken); if (existingRocket != null) { throw new RequestFailedException("A Rocket already exists with that serial number!") { Title = "Rocket Creation Failed", Properties = new Dictionary <string, object?> { ["data"] = new { id = existingRocket.Id, type = existingRocket.Type, sn = existingRocket.SerialNumber } } }; } var rocket = _mapper.Map <ReadyRocket>(request); await _dbContext.AddAsync(rocket, cancellationToken).ConfigureAwait(false); await _dbContext.SaveChangesAsync(cancellationToken).ConfigureAwait(false); return(new Response { Id = rocket.Id }); }
public async Task <Response> Handle(Request request, CancellationToken cancellationToken) { var record = _mapper.Map <LaunchRecord>(request); var rocket = await _dbContext.Rockets.FindAsync(new object[] { request.RocketId }, cancellationToken); if (rocket == null) { throw new RequestFailedException("Rocket not found!"); } record.Rocket = rocket; await _dbContext.AddAsync(record, cancellationToken).ConfigureAwait(false); await _dbContext.SaveChangesAsync(cancellationToken).ConfigureAwait(false); return(new Response { Id = record.Id }); }