using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using ZhonTai.Admin.Core.Dto;
using ZhonTai.Admin.Services;
using NPP.SmartSchedue.Api.Contracts.Services.Time;
using NPP.SmartSchedue.Api.Contracts.Services.Time.Input;
using NPP.SmartSchedue.Api.Contracts.Services.Time.Output;
using NPP.SmartSchedue.Api.Repositories.Time;
using NPP.SmartSchedue.Api.Contracts.Domain.Time;
using ZhonTai.DynamicApi;
using ZhonTai.DynamicApi.Attributes;
namespace NPP.SmartSchedue.Api.Services.Time;
///
/// 基础日历服务
///
[DynamicApi(Area = "app")]
public class CalendarService : BaseService, ICalendarService, IDynamicApi
{
private readonly CalendarRepository _calendarRepository;
public CalendarService(CalendarRepository calendarRepository)
{
_calendarRepository = calendarRepository;
}
///
/// 查询
///
///
///
public async Task GetAsync(long id)
{
var output = await _calendarRepository.Select
.WhereDynamic(id)
.ToOneAsync();
return output;
}
///
/// 查询分页
///
///
///
[HttpPost]
public async Task> GetPageAsync(PageInput input)
{
var list = await _calendarRepository.Select
.WhereIf(input.Filter?.StartDate.HasValue == true, a => a.Date >= input.Filter.StartDate.Value)
.WhereIf(input.Filter?.EndDate.HasValue == true, a => a.Date <= input.Filter.EndDate.Value)
.WhereIf(!string.IsNullOrEmpty(input.Filter?.DateType), a => a.DateType.Contains(input.Filter.DateType))
.Count(out var total)
.OrderByDescending(a => a.Id)
.Page(input.CurrentPage, input.PageSize)
.ToListAsync();
var data = new PageOutput()
{
List = list,
Total = total
};
return data;
}
///
/// 添加
///
///
///
public async Task AddAsync(CalendarAddInput input)
{
var entity = Mapper.Map(input);
var result = await _calendarRepository.InsertAsync(entity);
return result.Id;
}
///
/// 修改
///
///
///
public async Task UpdateAsync(CalendarUpdateInput input)
{
var entity = await _calendarRepository.GetAsync(input.Id);
Mapper.Map(input, entity);
await _calendarRepository.UpdateAsync(entity);
}
///
/// 删除
///
///
///
public async Task DeleteAsync(long id)
{
await _calendarRepository.DeleteAsync(id);
}
///
/// 软删除
///
///
///
public async Task SoftDeleteAsync(long id)
{
await _calendarRepository.SoftDeleteAsync(id);
}
///
/// 批量软删除
///
///
///
public async Task BatchSoftDeleteAsync(long[] ids)
{
await _calendarRepository.SoftDeleteAsync(ids);
}
}