예제 #1
0
        public async Task DeleteProject(Guid projectId)
        {
            using (var audioViewEntities = new AudioViewEntities())
            {
                var project = await audioViewEntities.Projects.Where(x => x.Id == projectId).FirstOrDefaultAsync().ConfigureAwait(false);

                if (project == null)
                {
                    return;
                }
                audioViewEntities.Projects.Remove(project);
                audioViewEntities.SaveChanges();
            }
        }
예제 #2
0
        public async Task DeleteReading(Guid readingId)
        {
            using (var audioViewEntities = new AudioViewEntities())
            {
                var reading = await audioViewEntities.Readings.Where(x => x.Id == readingId).FirstOrDefaultAsync().ConfigureAwait(false);

                if (reading == null)
                {
                    return;
                }
                audioViewEntities.Readings.Remove(reading);
                audioViewEntities.SaveChanges();
            }
        }
예제 #3
0
        public static Task UploadLocalFiles()
        {
            return(Task.Run(() =>
            {
                lock (LogFileLock)
                {
                    DirectoryInfo directory = new DirectoryInfo(DataFolder);
                    logger.Trace("Looking or unuploade files in \"{0}\".", directory.FullName);
                    if (!directory.Exists)
                    {
                        logger.Trace("No files where found in \"{0}\".", directory.FullName);
                        return;
                    }

                    List <string> filesToDelete = new List <string>();
                    foreach (var fileInfo in directory.GetFiles())
                    {
                        try
                        {
                            logger.Info("Found file to upload \"{0}\"", fileInfo.FullName);
                            var lines = File.ReadAllLines(fileInfo.FullName);
                            var settings = JsonConvert.DeserializeObject <MeasurementSettingsDataStorageWarpper>(lines[0]);
                            var readings =
                                lines.Skip(1)
                                .Select(JsonConvert.DeserializeObject <ReadingDataDataStorageWarpper>)
                                .ToList();
                            logger.Debug("File had {0} readings.", readings.Count);

                            using (var audioViewEntities = new AudioViewEntities())
                            {
                                if (!audioViewEntities.Projects.Any(x => x.Id == settings.Id))
                                {
                                    logger.Debug("Project \"{0}\" was not in the database adding.", settings.MeasurementSettings.ProjectName);
                                    audioViewEntities.Projects.Add(new Project()
                                    {
                                        Id = settings.Id,
                                        Created = settings.Created,
                                        MinorDBLimit = settings.MeasurementSettings.MinorDBLimit,
                                        MajorDBLimit = settings.MeasurementSettings.MajorDBLimit,
                                        MajorInterval = settings.MeasurementSettings.MajorInterval.Ticks,
                                        MinorInterval = settings.MeasurementSettings.MinorInterval.Ticks,
                                        Name = settings.MeasurementSettings.ProjectName,
                                        Number = settings.MeasurementSettings.ProjectNumber
                                    });
                                    audioViewEntities.SaveChanges();
                                }

                                var knownReadings =
                                    audioViewEntities.Readings.Where(x => x.Project == settings.Id)
                                    .Select(x => x.Id)
                                    .ToList();
                                logger.Trace("Got {0} known readings for {1}", knownReadings.Count, settings.Id);
                                var readingsToUpload = readings.Where(x => !knownReadings.Contains(x.Id)).ToList();
                                foreach (var r in readingsToUpload)
                                {
                                    audioViewEntities.Readings.Add(new Reading()
                                    {
                                        Id = r.Id,
                                        Project = settings.Id,
                                        Major = r.IsMajor ? (byte)1 : (byte)0,
                                        Time = r.Time,
                                        LAeq = r.Data.LAeq,
                                    });
                                }
                                logger.Trace("Added {0} new readings for {1}", readingsToUpload.Count, settings.Id);
                                audioViewEntities.SaveChanges();
                            }
                            // If we got to here is the file uploaded
                            filesToDelete.Add(fileInfo.FullName);
                        }
                        catch (DbEntityValidationException e)
                        {
                            logger.Error(e, "Was unable to uploade \"{0}\"", fileInfo.FullName);
                            foreach (var eve in e.EntityValidationErrors)
                            {
                                logger.Error("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                             eve.Entry.Entity.GetType().Name, eve.Entry.State);
                                foreach (var ve in eve.ValidationErrors)
                                {
                                    logger.Error("- Property: \"{0}\", Error: \"{1}\"",
                                                 ve.PropertyName, ve.ErrorMessage);
                                }
                            }
                            throw;
                        }
                        catch (Exception exp)
                        {
                            logger.Error(exp, "Was unable to uploade \"{0}\"", fileInfo.FullName);
                        }
                    }

                    foreach (var f in filesToDelete)
                    {
                        try
                        {
                            new FileInfo(f).Delete();
                        }
                        catch (Exception exp)
                        {
                            logger.Error(exp, "Was unable to delete \"{0}\" all data have been uploaded.", f);
                        }
                    }
                }
            }));
        }