Files
FA_WEB/OrdersManagementDataModel/Services/TaskSchedulerService.cs

77 lines
2.8 KiB
C#

using AutoMapper;
using Microsoft.EntityFrameworkCore;
using OrdersManagementDataModel.Dtos;
using OrdersManagementDataModel.Queries;
using TaskScheduler = OrdersManagementDataModel.Entities.TaskScheduler;
namespace OrdersManagementDataModel.Services;
public class TaskSchedulerService(OrdersManagementDbContext context, IMapper mapper) : ITaskSchedulerService
{
public async Task<IEnumerable<TaskSchedulerDto>> GetTaskSchedulers()
{
List<TaskSchedulerDto> taskSchedulers =
(await Task.FromResult(OrdersManagementQueries.GetSchedulers(context))).ToList();
return taskSchedulers;
}
public async Task<TaskSchedulerDto?> GetTaskSchedulerById(Guid id)
{
TaskSchedulerDto? taskScheduler = await context.TaskSchedulers.Where(x => x.RowPointer == id)
.Select(x => mapper.Map<TaskSchedulerDto>(x)).FirstOrDefaultAsync();
return taskScheduler;
}
public async Task<TaskSchedulerDto?> GetTaskSchedulerByTaskName(string taskName)
{
TaskSchedulerDto? taskScheduler = await context.TaskSchedulers.Where(x => x.Name == taskName)
.Select(x => mapper.Map<TaskSchedulerDto>(x)).FirstOrDefaultAsync();
return taskScheduler;
}
public async Task<int> AddTaskScheduler(TaskSchedulerDto taskSchedulerDto)
{
TaskScheduler taskScheduler = new TaskScheduler
{
Name = taskSchedulerDto.Name,
Path = taskSchedulerDto.Path,
RowPointer = Guid.NewGuid(),
CronOptions = taskSchedulerDto.CronOptions,
CreateDate = DateTime.Now,
ActiveFrom = DateTime.Now
};
context.TaskSchedulers.Add(taskScheduler);
return await context.SaveChangesAsync();
}
public async Task<int> UpdateTaskScheduler(TaskSchedulerDto taskSchedulerDto)
{
TaskScheduler taskScheduler = mapper.Map<TaskScheduler>(taskSchedulerDto);
context.TaskSchedulers.Update(taskScheduler);
return await context.SaveChangesAsync();
}
public async Task<int> DeleteTaskScheduler(Guid id)
{
TaskScheduler? taskScheduler =
await context.TaskSchedulers.Where(x => x.RowPointer == id).FirstOrDefaultAsync() ?? null;
if (taskScheduler == null) return 0;
context.TaskSchedulers.Remove(taskScheduler);
return await context.SaveChangesAsync();
}
public async Task<IList<TaskSchedulerDetailDto>> GetTaskSchedulerDetails(Guid taskSchedulerId)
{
List<TaskSchedulerDetailDto> taskSchedulerDetails = await context.TaskSchedulers
.Where(x => x.RowPointer == taskSchedulerId)
.SelectMany(x => x.TaskSchedulerDetails)
.Select(x => mapper.Map<TaskSchedulerDetailDto>(x))
.ToListAsync();
return taskSchedulerDetails;
}
}