Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
 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();
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
 private static bool IsKnownDataset(PsaDatasetDto dataset)
 {
     using (VTSDatabase database = new VTSDatabase())
     {
         Guid guid = dataset.Guid;
         return(database.PsaDataset.Any(pd => pd.Guid == guid));
     }
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 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);
 }
Ejemplo n.º 11
0
        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();
        }
Ejemplo n.º 12
0
        /// <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);
        }
Ejemplo n.º 13
0
 public void UploadDataset(PsaDatasetDto dataset)
 {
     throw new NotImplementedException();
 }