public async Task SendVehicleStatusAsync(VehicleStatusDto dto) { var vehicle = await _vehicleRepository.GetWithOwnerAsync(dto.VehicleId); if (vehicle != null) { var statusDetail = Mapper.Map <VehicleStatusDetail>(dto); statusDetail.Vehicle = null; int increment = -1; while (true) { try { statusDetail.Id = (await _vehicleStatusRepository.FindIdAsync()) + ++increment; await _vehicleStatusRepository.InsertAsync(statusDetail); await _vehicleStatusRepository.CommitAsync(); break; } catch { _vehicleStatusRepository.ClearChangeTracker(); } // very very carzy!!! sqllite is very crazy!! } statusDetail.Vehicle = vehicle; var status = Mapper.Map <StatusClientDto>(statusDetail); await _pingHub.Clients.All.SendAsync("statusRecieved", status); } }
public async Task SendVehicleOverviewStatusAsync(VehicleStatusDto dto) { var vehicle = await _vehicleRepository.GetWithOwnerAsync(dto.VehicleId); if (vehicle != null) { var statusDetail = Mapper.Map <VehicleStatusDetail>(dto); await _vehicleOverviewRepository.UpdateOverviewAsync(vehicle, statusDetail); await _vehicleOverviewRepository.CommitAsync(); var vehicleOverview = await _vehicleOverviewRepository.FindAsync(vehicle.Id);// if we reach here then it is not null var clientOverView = Mapper.Map <OverviewClientDto>(vehicleOverview); await _overviewHub.Clients.All.SendAsync("OverviewReceived", clientOverView); } }