using System.Linq.Expressions; using Abp.Auditing; using Abp.Authorization; using Abp.Specifications; using Abp.UI; using VberZero.AppService.Base; using VberZero.AppService.Base.Dto; using VberZero.AppService.Calendars.Dto; using VberZero.Auditing; using VberZero.BaseSystem; using VberZero.DomainService.Calendar; using VberZero.Tools.StringModel; namespace VberZero.AppService.Calendars; [AbpAuthorize, AuditLog("日程管理", "日程")] public class CalendarAppServiceBase : VzAppServiceBase, ICalendarAppServiceBase { public CalendarAppServiceBase() { CalendarManger = NullCalendarManger.Instance; } public ICalendarManger CalendarManger { get; set; } [DisableAuditing] public async Task> GetAll(VzPagedRequestDto input) { Expression> exp = a => a.OwnerId == AbpSession.UserId && a.Start != null; foreach (var search in input.SearchList) { if (search.KeyField.ToLower() == "start" && DateTime.TryParse(search.KeyWords, out var start)) { exp = exp.And(a => DateTime.Compare(a.Start.Value, start) >= 0); } if (search.KeyField.ToLower() == "end" && DateTime.TryParse(search.KeyWords, out var end)) { exp = exp.And(a => DateTime.Compare(a.Start.Value, end) < 0); } } var entities = await CalendarManger.GetAllList(exp); return entities.Select(MapToDto).ToList(); } public async Task> GetNotStartList() { var entities = await CalendarManger.GetAllList(a => a.OwnerId == AbpSession.UserId && a.Start == null); return entities.Select(MapToDto).ToList(); } public async Task Get(int id) { var entity = await CalendarManger.GetById(id); return MapToDto(entity); } public virtual async Task Create(CreateCalendarDto input) { if (input.Start != null && DateTime.Compare(input.Start.Value, DateTime.Today) <= 0) { CheckErrors("日程时间不能早于当前时间!"); } var info = ObjectMapper.Map(input); info.OwnerId = AbpSession.UserId; info.IsNotify = !input.NotifyType.Empty(); var entity = await CalendarManger.Create(info); return MapToDto(entity); } public virtual async Task Update(UpdateCalendarDto input) { input.Start = input.Start == DateTime.MinValue ? null : input.Start; if (input.Start != null && DateTime.Compare(input.Start.Value, DateTime.Today) < 0) { CheckErrors("日程时间不能早于当前时间!"); } input.End = input.End == DateTime.MinValue ? null : input.End; if (input.End != null && DateTime.Compare(input.End.Value, DateTime.Today) < 0) { CheckErrors("日程时间不能早于当前时间!"); } if (input.Start != null && input.End != null && DateTime.Compare(input.End.Value, input.Start.Value) < 0) { CheckErrors("日程结束时间不能早于开始时间!"); } var entity = await CalendarManger.GetById(input.Id); if (entity == null) { throw new UserFriendlyException("没有查询到日程!"); } var info = ObjectMapper.Map(input, entity); info.IsNotify = !input.NotifyType.Empty(); entity = await CalendarManger.Update(info); return MapToDto(entity); } public virtual Task Delete(int id) { return CalendarManger.Delete(id); } private CalendarDto MapToDto(SysCalendar entity) { var dto = ObjectMapper.Map(entity); return dto; } }