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
}
}