public ICommandResult Handle(RecycleVideoForMoreThenDaysCommand command) { command.Validate(); if (command.IsInvalid) { return(new DefaultCommandResult(CommandResultStatus.InvalidCommand, command.Notifications)); } try { var statusRecycle = _recycleRepository.Get(); if (statusRecycle == null) { statusRecycle = new Entities.Recycle(RecyclerStatus.NotRunning, new DateTime()); _recycleRepository.Save(statusRecycle); } var deleteBeforeDate = DateTime.Now.Subtract(TimeSpan.FromDays(command.Days)); var videos = _videoRepository.GetAllBeforeDate(deleteBeforeDate); if (videos.Count() > 0) { statusRecycle.SetRunning(deleteBeforeDate); _recycleRepository.Update(statusRecycle); try { Thread.Sleep(5000); foreach (var video in videos) { _videoRepository.DeleteInFileSystem(video); _videoRepository.Delete(video); } statusRecycle.StopRunning(); _recycleRepository.Update(statusRecycle); } catch (Exception e) { Console.WriteLine($"Fail to execute RecycleVideoForMoreThenDaysHandler. Fail stack ===> {e.ToString()}"); statusRecycle.StopRunning(); _recycleRepository.Update(statusRecycle); } } return(new DefaultCommandResult()); } catch (Exception e) { Console.WriteLine($"Fail to execute RecycleVideoForMoreThenDaysHandler. Fail stack ===> {e.ToString()}"); return(new DefaultCommandResult(CommandResultStatus.Exception)); } }
public IActionResult Status([FromServices] IRecycleRepository repository) { var status = repository.Get(); return(Ok(RecycleDataPresentation.RecycleToPresentationFormatter(status))); }