public override Vehicle MapToVehicle(VehicleDTO vehicleDTO) { var mapper = new VehicleMapper(); var vehicleId = "210e1e7b45b69bde39f423be"; vehicleDTO.Id = vehicleId; return(mapper.MapToVehicle(vehicleDTO)); }
public async Task <Maybe <string> > Handle(CreateVehicleCommand request, CancellationToken cancellationToken) { //TODO think about IDs var vehicleDTO = request.vehicleDTO; vehicleDTO.GeneratePopertyIds(); var vehicle = vehicleMapper.MapToVehicle(vehicleDTO); var existingVehiclesCursor = await sparePartsDbContext.Vehicles.FindAsync(v => v.ManufacturerName == vehicle.ManufacturerName && v.Model == vehicle.Model && v.Generation == vehicle.Generation); var existingVehicle = await existingVehiclesCursor.ToListAsync(); if (existingVehicle.Count > 0) { return(existingVehicle.FirstOrDefault().Id.ToString()); } var askForSparePartsEvent = new AskForSparePartsPricesIntegrationEvent(vehicleDTO); clientSessionHandle.StartTransaction(); try { await sparePartsDbContext.Vehicles.InsertOneAsync(vehicle); await sparePartsIntegrationEventService.PublishThroughEventBusAsync(askForSparePartsEvent); await clientSessionHandle.CommitTransactionAsync(); } catch (Exception ex) { logger.Information($"Can`t write to db vehicle: {vehicle.ToJson()} Exception: {ex.Message}"); await clientSessionHandle.AbortTransactionAsync(); return(Maybe <string> .None); } return(vehicle.Id.ToString()); }