using System; using System.Collections.Generic; using System.Linq; using PalGain.Core; namespace PalGain.Core.Tasks { /// /// Task service /// public partial class ScheduleTaskService : IScheduleTaskService { #region Fields private readonly IRespository _taskRepository; #endregion #region Ctor public ScheduleTaskService(IRespository taskRepository) { this._taskRepository = taskRepository; } #endregion #region Methods /// /// Deletes a task /// /// Task public virtual void DeleteTask(ScheduleTask task) { if (task == null) throw new ArgumentNullException("task"); _taskRepository.Delete(task); } /// /// Gets a task /// /// Task identifier /// Task public virtual ScheduleTask GetTaskById(int taskId) { if (taskId == 0) return null; return _taskRepository.GetById(taskId); } /// /// Gets a task by its type /// /// Task type /// Task public virtual ScheduleTask GetTaskByType(string type) { if (String.IsNullOrWhiteSpace(type)) return null; var query = _taskRepository.Table; query = query.Where(st => st.Type == type); query = query.OrderByDescending(t => t.Id); var task = query.FirstOrDefault(); return task; } /// /// Gets all tasks /// /// A value indicating whether to show hidden records /// Tasks public virtual IList GetAllTasks(bool showHidden = false) { var query = _taskRepository.Table; if (!showHidden) { query = query.Where(t => t.Enabled); } query = query.OrderByDescending(t => t.Seconds); var tasks = query.ToList(); return tasks; } /// /// Inserts a task /// /// Task public virtual void InsertTask(ScheduleTask task) { if (task == null) throw new ArgumentNullException("task"); _taskRepository.Insert(task); } /// /// Updates the task /// /// Task public virtual void UpdateTask(ScheduleTask task) { if (task == null) throw new ArgumentNullException("task"); _taskRepository.Update(task); } #endregion } }