public async Task ArchiveLogFiles_LogsArchived_ReturnTrue(string file1, string file2, string file3)
        {
            // Arrange
            string currentDirectory = Environment.CurrentDirectory;
            string projectDirectory = Directory.GetParent(currentDirectory).FullName;
            string textDirectory    = $"{projectDirectory}\\logs";

            string logPath1 = Path.Combine(textDirectory, file1);
            string logPath2 = Path.Combine(textDirectory, file2);
            string logPath3 = Path.Combine(textDirectory, file3);

            string builtMessage = "Test Log";

            if (!File.Exists(logPath1))
            {
                using (StreamWriter writer = File.CreateText(logPath1))
                {
                    writer.WriteLine(builtMessage);
                }
            }
            else
            {
                using (StreamWriter writer = File.AppendText(logPath1))
                {
                    writer.WriteLine(builtMessage);
                }
            }

            if (!File.Exists(logPath2))
            {
                using (StreamWriter writer = File.CreateText(logPath2))
                {
                    writer.WriteLine(builtMessage);
                }
            }
            else
            {
                using (StreamWriter writer = File.AppendText(logPath2))
                {
                    writer.WriteLine(builtMessage);
                }
            }

            if (!File.Exists(logPath3))
            {
                using (StreamWriter writer = File.CreateText(logPath3))
                {
                    writer.WriteLine(builtMessage);
                }
            }
            else
            {
                using (StreamWriter writer = File.AppendText(logPath3))
                {
                    writer.WriteLine(builtMessage);
                }
            }

            List <string> files = new List <string>();

            files.Add(logPath1);
            files.Add(logPath2);
            files.Add(logPath3);

            // Act
            var archiveResult = await archiveService.ArchiveLogFiles(files);

            // Assert
            Assert.IsTrue(archiveResult);
        }
        public async Task <Result <bool> > ArchiveLogFiles(DateTimeOffset startTime, DateTimeOffset endTime)
        {
            try
            {
                if (startTime == null || endTime == null)
                {
                    return(Result <bool> .Failure(ErrorMessage.Null));
                }

                string currentDirectory = Environment.CurrentDirectory;
                string projectDirectory = Directory.GetParent(currentDirectory).FullName;
                string logDirectory     = $"{projectDirectory}\\logs";

                if (!Directory.Exists(logDirectory))
                {
                    DirectoryInfo di = Directory.CreateDirectory(logDirectory);
                }

                string[]      allFiles   = Directory.GetFiles(logDirectory, "*.*", SearchOption.AllDirectories);
                List <string> validFiles = new List <string>();

                foreach (var file in allFiles)
                {
                    DateTimeOffset creationTime = File.GetCreationTimeUtc(file);
                    if (creationTime.Date >= startTime.ToUniversalTime().Date&& creationTime.Date <= endTime.ToUniversalTime().Date)
                    {
                        validFiles.Add(file);
                    }
                }

                var isSuccessful = await _archiveService.ArchiveLogFiles(validFiles);

                if (isSuccessful)
                {
                    return(Result <bool> .Success(isSuccessful));
                }
                else
                {
                    return(Result <bool> .Failure(ErrorMessage.NoSuchFilesExist));
                }
            }
            catch (NotSupportedException)
            {
                return(Result <bool> .Failure(ErrorMessage.DataNotSupported));
            }
            catch (PathTooLongException)
            {
                return(Result <bool> .Failure(ErrorMessage.FolderPathTooLong));
            }
            catch (IOException)
            {
                return(Result <bool> .Failure(ErrorMessage.FileError));
            }
            catch (UnauthorizedAccessException)
            {
                return(Result <bool> .Failure(ErrorMessage.Forbidden));
            }
            catch (InvalidDataException)
            {
                return(Result <bool> .Failure(ErrorMessage.DataNotSupported));
            }
        }