Exemple #1
0
        private void populateModel(DateSelectModel model)
        {
            model.Dates = getDirectories();

            if (model.ItemsPerPage <= 0)
            {
                model.ItemsPerPage = 20;
            }
            if (model.PageNumber <= 0)
            {
                model.PageNumber = 1;
            }

            if (model.SelectedDate != null)
            {
                var files = getFiles(model, model.SelectedDate);

                if (model.PageNumber * model.ItemsPerPage > files.Count())
                {
                    model.PageNumber = 1;
                }

                model.TotalFiles = files.Count();
                model.TotalPages = (model.TotalFiles / model.ItemsPerPage) + (model.TotalFiles % model.ItemsPerPage > 0 ? 1 : 0);

                model.Files =
                    files
                    .Skip((model.PageNumber - 1) * model.ItemsPerPage)
                    .Take(Math.Min(model.ItemsPerPage, model.TotalFiles))
                    .ToList();
            }
        }
Exemple #2
0
        private IEnumerable <FileEntry> getFiles(DateSelectModel model, string selectedDate)
        {
            List <FileEntry> results = new List <FileEntry>(1);

            DateTime date    = DateTime.Parse(selectedDate);
            string   partial = date.ToString("yyyy-MM-dd") + "_*";

            foreach (string directory in Directory.EnumerateDirectories(_config.Value.DashCamPath, partial))
            {
                try
                {
                    foreach (string file in Directory.EnumerateFiles(directory, "*-preview.mp4"))
                    {
                        results.Add(parseFileEntry(file));
                    }
                }
                catch (Exception ex)
                {
                    if (model != null)
                    {
                        model.ErrorMessage += $"Error Accessing Folder: {directory} ({ex.Message})\n";
                    }
                }
            }

            return(results.OrderBy(i => i.OrderValue));
        }
Exemple #3
0
        private void deleteFiles(DateSelectModel model)
        {
            List <string> idsToDelete = model.FilesToDelete.Split(':').ToList();

            idsToDelete.RemoveAll(i => string.IsNullOrEmpty(i));

            var filesToDelete =
                model.Files
                .Join(idsToDelete, i => i.FileId, j => j, (i, j) => new { i.CombinedFile,
                                                                          i.PreviewFile,
                                                                          i.TimelapseFile,
                                                                          i.FrontFile,
                                                                          i.RightRepeaterFile,
                                                                          i.LeftRepeaterFile,
                                                                          i.DoneFile });

            filesToDelete
            .ToList()
            .ForEach(i =>
            {
                exceptionLessFileDelete(i.PreviewFile);
                exceptionLessFileDelete(i.CombinedFile);
                exceptionLessFileDelete(i.TimelapseFile);
                exceptionLessFileDelete(i.FrontFile);
                exceptionLessFileDelete(i.RightRepeaterFile);
                exceptionLessFileDelete(i.LeftRepeaterFile);
                exceptionLessFileDelete(i.DoneFile);
            });

            filesToDelete
            .Select(i => i.PreviewFile.Substring(0, i.PreviewFile.LastIndexOf(Path.DirectorySeparatorChar)))
            .Distinct()
            .ToList()
            .ForEach(i =>
            {
                if (!Directory.EnumerateFiles(i).Any())
                {
                    Directory.Delete(i);
                }
            });

            model.Files.RemoveAll(i => idsToDelete.Contains(i.FileId));
            model.FilesToDelete = string.Empty;
        }
Exemple #4
0
        public IActionResult Index(DateSelectModel model)
        {
            if (Request.Method == "POST" && Request.Form.ContainsKey("pageNext"))
            {
                model.PageNumber = int.Parse(Request.Form["pageNext"]);
            }
            if (Request.Method == "POST" && Request.Form.ContainsKey("pagePrevious"))
            {
                model.PageNumber = int.Parse(Request.Form["pagePrevious"]);
            }

            populateModel(model);

            if (Request.Method == "POST" && Request.Form.ContainsKey("cmdDelete") && !string.IsNullOrEmpty(model.FilesToDelete))
            {
                deleteFiles(model);

                populateModel(model);
            }

            return(View(model));
        }