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 <LaunchRecordModel> Handle(Request request, CancellationToken cancellationToken) { var rocket = await GetLaunchRecord(request.Id, cancellationToken); _mapper.Map(request, rocket); _dbContext.Update(rocket); await _dbContext.SaveChangesAsync(cancellationToken).ConfigureAwait(false); return(_mapper.Map <LaunchRecordModel>(rocket)); }
public async Task <RocketModel> Handle(Request request, CancellationToken cancellationToken) { var rocket = await GetRocket(request.Id, cancellationToken); if (rocket == null) { throw new NotFoundException(); } _mapper.Map(request, rocket); _dbContext.Update(rocket); await _dbContext.SaveChangesAsync(cancellationToken).ConfigureAwait(false); return(_mapper.Map <RocketModel>(rocket)); }
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 }); }