using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aspose.Cells.Drawing;
using JNPF.Common.Core.Manager;
using JNPF.Common.Models.VisualDev;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.JsonSerialization;
using JNPF.Systems.Interfaces.System;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.BasicData.Entities.Dto;
using Tnb.BasicData.Entities.Dto.BasCalendar;
using Tnb.BasicData.Interfaces;
namespace Tnb.BasicData
{
///
/// 工作日管理
///
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 1102)]
[Route("api/[area]/[controller]/[action]")]
public class BasCalendarService: IBasCalendarService, IDynamicApiController, ITransient
{
private readonly ISqlSugarRepository _repository;
private readonly IUserManager _userManager;
public BasCalendarService(ISqlSugarRepository repository, IUserManager userManager)
{
_repository = repository;
_userManager = userManager;
}
///
/// 保存工作日历
///
///
///
[HttpPost]
public async Task SaveData(CalendarInput CalendarInput)
{
var db = _repository.AsSugarClient();
await db.Deleteable(p=>p.datetext== CalendarInput.datetext).ExecuteCommandAsync();
BasCalendar BasCalendar = new BasCalendar();
BasCalendar.datetext = CalendarInput.datetext;
BasCalendar.datetype = CalendarInput.datetype;
BasCalendar.workhour = CalendarInput.workhour;
BasCalendar.worktype = CalendarInput.worktype;
BasCalendar.create_id = _userManager.UserId;
BasCalendar.create_time = DateTime.Now;
await db.Insertable(BasCalendar).ExecuteCommandAsync();
}
///
/// 获取工作日历
///
///
[HttpPost]
public async Task GetWorkData(CalendarInput CalendarInput)
{
var db = _repository.AsSugarClient();
var lists = await db.Queryable().Where(p=>p.worktype== CalendarInput.worktype).ToListAsync();
List CalendarOuts = new List();
foreach (var list in lists)
{
CalendarOut CalendarOut = new CalendarOut();
CalendarOut.datetext = list.datetext;
CalendarOut.datetype = list.datetype;
CalendarOut.workhour = JSON.Deserialize>(list.workhour);
CalendarOut.worktype = list.worktype;
CalendarOuts.Add(CalendarOut);
}
return CalendarOuts;
}
///
/// 批量保存工作日历
///
///
///
public async Task SaveBatchData(CalendarBatchInput CalendarBatchInput)
{
var db = _repository.AsSugarClient();
DateTime start = DateTime.Parse(CalendarBatchInput.startday!);
DateTime end = DateTime.Parse(CalendarBatchInput.endday!);
List BasCalendars = new List();
for (DateTime date = start; date <= end; date.AddDays(1))
{
if (CalendarBatchInput.weekday!.Contains((int)date.DayOfWeek))
{
BasCalendar BasCalendar = new BasCalendar();
BasCalendar.datetext = date.ToString("yyyy-MM-dd");
BasCalendar.datetype = CalendarBatchInput.datetype;
BasCalendar.workhour = CalendarBatchInput.workhour;
BasCalendar.worktype = CalendarBatchInput.worktype;
BasCalendar.create_id = _userManager.UserId;
BasCalendar.create_time = DateTime.Now;
BasCalendars.Add(BasCalendar);
}
}
await db.Deleteable(p => BasCalendars.Select(p => p.datetext).ToList().Contains(p.datetext)).ExecuteCommandAsync();
await db.Insertable(BasCalendars).ExecuteCommandAsync();
}
}
}