Ejemplo n.º 1
0
        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
            });
        }