public async Task <ICommandResult <Car> > Handle(UpdateCarCommand command, CancellationToken cancellationToken)
        {
            int carId = command.Id;

            Car car = await _carRepository.GetAsync(carId, cancellationToken);

            if (car == null)
            {
                return(new CommandResult <Car>(CommandStatus.NotFound, null));
            }

            CarSm carSm = _carToCarSmMapper.Map(car);

            command.Patch.ApplyTo(carSm);

            CarSmValidator   validator        = new CarSmValidator();
            ValidationResult validationResult = validator.Validate(carSm);

            if (!validationResult.IsValid)
            {
                return(new CommandResult <Car>(CommandStatus.ModelInvalid, null, validationResult.Errors.Select(e => e.ErrorMessage).ToArray()));
            }

            _carSmToCarMapper.Map(carSm, car);

            await _carRepository.UpdateAsync(car, cancellationToken);

            return(new CommandResult <Car>(CommandStatus.Ok, car));
        }
示例#2
0
        public async Task <IActionResult> ExecuteAsync(
            int carId,
            JsonPatchDocument <CarSm> patch,
            CancellationToken cancellationToken)
        {
            Car car = await _carRepository.GetAsync(carId, cancellationToken);

            if (car == null)
            {
                return(new NotFoundResult());
            }

            CarSm saveCar = _carToCarSmMapper.Map(car);
            ModelStateDictionary modelState = _actionContextAccessor.ActionContext.ModelState;

            patch.ApplyTo(saveCar, modelState);

            _objectModelValidator.Validate(_actionContextAccessor.ActionContext, null, null, saveCar);

            if (!modelState.IsValid)
            {
                return(new BadRequestObjectResult(modelState));
            }

            _carSmToCarMapper.Map(saveCar, car);
            await _carRepository.UpdateAsync(car, cancellationToken);

            CarVm carViewModel = _carToCarVmMapper.Map(car);

            return(new OkObjectResult(carViewModel));
        }
示例#3
0
 public Task <IActionResult> PostAsync(
     [FromServices] IPostCarCommand command,
     [FromBody] CarSm car,
     CancellationToken cancellationToken)
 {
     return(command.ExecuteAsync(car, cancellationToken));
 }
示例#4
0
 public Task <IActionResult> PostAsync(
     [FromServices] IPostCarAh handler,
     [FromBody] CarSm car,
     CancellationToken cancellationToken)
 {
     return(handler.ExecuteAsync(car, cancellationToken));
 }
        public async Task <ICommandResult <Car> > Handle(CreateCarCommand command, CancellationToken cancellationToken)
        {
            CarSm carSm = command.CarSm;

            Car car = _carSmToCarMapper.Map(carSm);

            car = await _carRepository.AddAsync(car, cancellationToken);

            return(new CommandResult <Car>(CommandStatus.Ok, car));
        }
示例#6
0
        public async Task <IActionResult> ExecuteAsync(CarSm carSm, CancellationToken cancellationToken)
        {
            Car car = _carSmToCarMapper.Map(carSm);

            car = await _carRepository.AddAsync(car, cancellationToken);

            CarVm carViewModel = _carToCarVmMapper.Map(car);

            return(new CreatedAtRouteResult(RouteNames.GetCar, new { carId = carViewModel.CarId }, carViewModel));
        }
示例#7
0
    public void Apply(OpenApiSchema model, SchemaFilterContext context)
    {
        CarSm carSm = new CarSm()
        {
            Cylinders = 4,
            Brand     = "Toyota",
            Model     = "Hilux"
        };

        JsonSerializerOptions options = new JsonSerializerOptions {
            WriteIndented = true
        };

        model.Default = new OpenApiString(JsonSerializer.Serialize(carSm, options));
        model.Example = new OpenApiString(JsonSerializer.Serialize(carSm, options));
    }
示例#8
0
        public async Task <IActionResult> ExecuteAsync(int carId, CarSm saveCar, CancellationToken cancellationToken)
        {
            Car car = await _carRepository.GetAsync(carId, cancellationToken);

            if (car == null)
            {
                return(new NotFoundResult());
            }

            _carSmToCarMapper.Map(saveCar, car);
            car = await _carRepository.UpdateAsync(car, cancellationToken);

            CarVm carViewModel = _carToCarVmMapper.Map(car);

            return(new OkObjectResult(carViewModel));
        }
        public async Task <ICommandResult <Car> > Handle(ReplaceCarCommand command, CancellationToken cancellationToken)
        {
            int   carId = command.Id;
            CarSm carSm = command.SaveModel;

            Car car = await _carRepository.GetAsync(carId, cancellationToken);

            if (car == null)
            {
                return(new CommandResult <Car>(CommandStatus.NotFound, null));
            }

            _carSmToCarMapper.Map(carSm, car);

            car = await _carRepository.UpdateAsync(car, cancellationToken);

            return(new CommandResult <Car>(CommandStatus.Ok, car));
        }
    public async Task <IActionResult> ExecuteAsync(int carId, CarSm carSm, CancellationToken cancellationToken)
    {
        ICommandResult <Car> result = await _mediator
                                      .Send(new ReplaceCarCommand(carId, carSm), cancellationToken);

        switch (result.Status)
        {
        case CommandStatus.Unknown:
        default:
            throw new ArgumentOutOfRangeException(nameof(result.Status), result.Status, null);

        case CommandStatus.NotFound:
            return(new NotFoundResult());

        case CommandStatus.Ok:
            CarVm carVm = _carVmMapper.Map(result.Data);
            return(new OkObjectResult(carVm));
        }
    }
    public async Task <IActionResult> ExecuteAsync(CarSm carSm, CancellationToken cancellationToken)
    {
        ICommandResult <Car> result = await _mediator
                                      .Send(new CreateCarCommand(carSm), cancellationToken);

        switch (result.Status)
        {
        case CommandStatus.Unknown:
        default:
            throw new ArgumentOutOfRangeException(nameof(result.Status), result.Status, null);

        case CommandStatus.Ok:
            CarVm carVm = _carVmMapper.Map(result.Data);

            _actionCtx.ActionContext.HttpContext
            .Response.Headers.Add(HeaderNames.LastModified, carVm.Modified.ToString("R", CultureInfo.InvariantCulture));

            return(new CreatedAtRouteResult(RouteNames.GetCar, new { carId = carVm.CarId }, carVm));
        }
    }
 public ReplaceCarCommand(int id, CarSm saveModel)
 {
     Id        = id;
     SaveModel = saveModel;
 }
 public CreateCarCommand(CarSm sm)
 {
     CarSm = sm;
 }