private void RetrieveDatasetsAsync(object sender, DoWorkEventArgs ea) { List <PsaDataset> result = new List <PsaDataset>(); try { VtsWebServiceClient service = new VtsWebServiceClient(); List <long> datasetIds = service.GetDatasetIdsForVehicle( ea.Argument as string, LoggedUserContext.LoggedUser.Login, LoggedUserContext.LoggedUser.PasswordHash).ToList(); foreach (long datasetId in datasetIds) { PsaDatasetDto dto = service.GetDatasetById(datasetId, LoggedUserContext.LoggedUser.Login, LoggedUserContext.LoggedUser.PasswordHash); PsaDataset dataset = PsaDatasetAssembler.FromDtoToDomainObject(dto); result.Add(dataset); } ea.Result = result; } catch (Exception e) { ea.Result = e; } }
private static void Persist(List <PsaDataset> datasets) { foreach (PsaDataset psaDataset in datasets) { PsaDatasetDto dataset = PsaDatasetAssembler.FromDomainObjectToDto(psaDataset); if (IsKnownDataset(dataset)) { foreach (PsaTraceDto traceDto in dataset.Traces) { // skip known traces if (!IsKnownTrace(traceDto)) { // persist trace for existing dataset using (VTSDatabase database = new VTSDatabase()) { Guid guid = dataset.Guid; long datasetId = database.PsaDataset.First(d => d.Guid == guid).Id; traceDto.PsaDatasetId = datasetId; VTSWebService.DataAccess.PsaTrace traceEntity = PsaTraceAssembler.FromDtoToEntity(traceDto); database.PsaTrace.Add(traceEntity); database.SaveChanges(); } } } } else { List <PsaTraceDto> bufferList = new List <PsaTraceDto>(dataset.Traces); foreach (PsaTraceDto traceDto in bufferList) // to remove known traces { if (IsKnownTrace(traceDto)) { DateTime date = traceDto.Date; string vin = traceDto.Vin; PsaTraceDto dtoToRemove = dataset.Traces.FirstOrDefault(t => t.Date == date && t.Vin == vin); if (dtoToRemove == null) { throw new Exception("Trace not found here!"); } dataset.Traces.Remove(dtoToRemove); } } if (dataset.Traces.Count > 0) // if there are still some new { VTSWebService.DataAccess.PsaDataset datasetEntity = PsaDatasetAssembler.FromDtoToEntity(dataset); using (VTSDatabase database = new VTSDatabase()) { string vin = dataset.Traces.First().Vin; datasetEntity.VehicleEntityId = database.Vehicle.First(v => v.Vin == vin).Id; database.PsaDataset.Add(datasetEntity); database.SaveChanges(); } } } } }
private static bool IsKnownDataset(PsaDatasetDto dataset) { using (VTSDatabase database = new VTSDatabase()) { Guid guid = dataset.Guid; return(database.PsaDataset.Any(pd => pd.Guid == guid)); } }
public static PsaDataset FromDtoToDomainObject(PsaDatasetDto source) { PsaDataset target = new PsaDataset(); target.ExportedDate = source.ExportedDate; target.Guid = source.Guid; target.Id = source.Id; target.VehicleId = source.PsaVehicleId; target.SavedDate = source.SavedDate; foreach (PsaTraceDto trace in source.Traces) { target.Traces.Add(PsaTraceAssembler.FromDtoToDomainObject(trace)); } return(target); }
public static PsaDatasetEntity FromDtoToEntity(PsaDatasetDto source) { PsaDatasetEntity target = new PsaDatasetEntity(); target.Id = source.Id; target.DateExported = source.ExportedDate; target.DateSaved = source.SavedDate; target.Guid = source.Guid; target.VehicleEntityId = source.PsaVehicleId; foreach (PsaTraceDto trace in source.Traces) { target.PsaTrace.Add(PsaTraceAssembler.FromDtoToEntity(trace)); } return(target); }
public static PsaDatasetDto FromDomainObjectToDto(PsaDataset source) { PsaDatasetDto target = new PsaDatasetDto(); target.Traces = new ObservableCollection <PsaTraceDto>(); target.Id = source.Id; target.ExportedDate = source.ExportedDate; target.Guid = source.Guid; target.PsaVehicleId = source.VehicleId; target.SavedDate = source.SavedDate; foreach (PsaTrace trace in source.Traces) { target.Traces.Add(PsaTraceAssembler.FromDomainObjectToDto(trace)); } return(target); }
public static PsaDatasetDto FromEntityToDto(PsaDatasetEntity source) { PsaDatasetDto target = new PsaDatasetDto(); target.Traces = new List <PsaTraceDto>(); target.Id = source.Id; target.ExportedDate = source.DateExported; target.SavedDate = source.DateSaved; target.Guid = source.Guid; target.PsaVehicleId = source.VehicleEntityId; foreach (PsaTraceEntity trace in source.PsaTrace) { target.Traces.Add(PsaTraceAssembler.FromEntityToDto(trace)); } return(target); }
public static PsaDataset FromDtoToDomainObject(PsaDatasetDto source) { var target = new PsaDataset { Id = source.Id, ExportedDate = source.ExportedDate, SavedDate = source.SavedDate, Guid = source.Guid, VehicleId = source.PsaVehicleId }; foreach (PsaTraceDto trace in source.Traces) { target.Traces.Add(PsaTraceAssembler.FromDtoToDomainObject(trace)); } return(target); }
public static PsaDatasetDto FromDomainobjectToDto(PsaDataset source) { PsaDatasetDto target = new PsaDatasetDto(); target.ExportedDate = source.ExportedDate; target.Guid = source.Guid; target.Id = source.Id; target.PsaVehicleId = source.VehicleId; target.SavedDate = source.SavedDate; List <PsaTraceDto> traceDtos = new List <PsaTraceDto>(); foreach (PsaTrace trace in source.Traces) { traceDtos.Add(PsaTraceAssembler.FromDomainObjectToDto(trace)); } target.Traces = traceDtos.ToArray(); return(target); }
private bool SynchronizeDatasets(List <PsaDataset> datasetsToUpload) { foreach (PsaDataset dataset in datasetsToUpload) { PsaDatasetDto dto = PsaDatasetAssembler.FromDomainobjectToDto(dataset); try { VtsWebServiceClient service = new VtsWebServiceClient(); service.UploadDataset(dto); MarkTracesAsSynchronized(dataset.Traces); } catch (Exception e) { StatusUpdated.Invoke(DataSynchronizationStatus.Failed, GetTraceSignaturesForDataset(dataset)); Log.Error(e, e.Message); } } return(true); }
private void OnVehiclesRegistered(object s, AsyncCompletedEventArgs e) { VtsWebServiceClient cl = s as VtsWebServiceClient; cl.RegisterVehiclesCompleted -= OnVehiclesRegistered; if (e.Error != null) { OnError(e.Error, e.Error.Message); } else { List <PsaDataset> datasets = FormDatasets(data); List <PsaDatasetDto> dtos = new List <PsaDatasetDto>(); foreach (PsaDataset obj in datasets) { PsaDatasetDto dto = PsaDatasetAssembler.FromDomainObjectToDto(obj); dtos.Add(dto); } UploadDataToService(dtos); } cl.CloseAsync(); }
/// <summary> /// Persists dataset with all duplicate protections. /// </summary> /// <returns>Persisted dataset guid.</returns> public Guid Persist(PsaDatasetDto dataset) { Guid updatedDatasetGuid = Guid.Empty; if (IsKnownDataset(dataset)) { foreach (PsaTraceDto traceDto in dataset.Traces) { // skip known traces, skip empty traces if (!IsKnownTrace(traceDto) && traceDto.ParametersSets.Count > 0) { // persist trace for existing dataset using (VTSDatabase database = new VTSDatabase()) { Guid guid = dataset.Guid; PsaDatasetEntity entity = database.PsaDataset.FirstOrDefault(d => d.Guid == guid); if (entity != null) { traceDto.PsaDatasetId = entity.Id; } PsaTrace traceEntity = PsaTraceAssembler.FromDtoToEntity(traceDto); database.PsaTrace.Add(traceEntity); database.SaveChanges(); updatedDatasetGuid = dataset.Guid; // to update analytic data based on updated dataset } } } } else { List <PsaTraceDto> bufferList = new List <PsaTraceDto>(dataset.Traces); foreach (PsaTraceDto traceDto in bufferList) // to remove known traces { if (IsKnownTrace(traceDto) && traceDto.ParametersSets.Count > 0) { DateTime date = traceDto.Date; string vin = traceDto.Vin; PsaTraceDto dtoToRemove = dataset.Traces.FirstOrDefault(t => t.Date == date && t.Vin == vin); if (dtoToRemove == null) { throw new Exception("Trace not found here!"); } dataset.Traces.Remove(dtoToRemove); } } if (dataset.Traces.Count > 0) // if there are still some new { string vin = dataset.Traces.First().Vin; if (!VinChecker.IsValid(vin)) { throw new FaultException <VtsWebServiceException>( new VtsWebServiceException(String.Format("Cannot save data for invalid vin {0}", vin))); } PsaDatasetEntity datasetEntity = PsaDatasetAssembler.FromDtoToEntity(dataset); using (VTSDatabase database = new VTSDatabase()) { datasetEntity.VehicleEntityId = database.Vehicle.First(v => v.Vin == vin).Id; database.PsaDataset.Add(datasetEntity); database.SaveChanges(); updatedDatasetGuid = dataset.Guid; // to update analytic data based on updated dataset } } } return(updatedDatasetGuid); }
public void UploadDataset(PsaDatasetDto dataset) { throw new NotImplementedException(); }