using DocumentServiceAPI.Application.Repository;
using DocumentServiceAPI.Application.UserAndLogin.Services.Interfaces;
using DocumentServiceAPI.Application.UserAndLogin.ViewMode;
using DocumentServiceAPI.Application.WorkRemind.Services.Interfaces;
using DocumentServiceAPI.Application.WorkRemind.ViewMode;
using DocumentServiceAPI.Model;
using DocumentServiceAPI.Model.cyDocumentModel;
using DocumentServiceAPI.Model.UserInfoModel;
using DocumentServiceAPI.Utility;
using Furion.Logging.Extensions;
using Furion.Schedule;
using MapsterMapper;
using SqlSugar.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
namespace DocumentServiceAPI.Application.WorkRemind.Services
{
public class WorkRemindService : IWorkRemindService, IScoped
{
private ISqlSugarClient _db { get; set; }
private WorkRemindRepository _workRemindRepository { get; set; }
private IMapper _mapper { get; set; }
public WorkRemindService(ISqlSugarClient db, WorkRemindRepository workRemindRepository, IMapper mapper)
{
_db = db;
_workRemindRepository = workRemindRepository;
_mapper = mapper;
}
///
/// 提醒详情
///
///
///
public Document_WorkRemind GetWorkRemindInfo(int ID)
{
var ret = _db.Queryable().Where(x => x.WorkRemindId == ID).First();
return ret;
}
public bool UpEmployee(Document_WorkRemind dw)
{
dw.LastUpTime = DateTime.Now;
return _workRemindRepository.Update(dw);
}
public bool InEmployee(Document_WorkRemind dw)
{
var a = GetJwtInfo();
dw.LastUpTime = DateTime.Now;
dw.CreatEmployeeId = a.EID;
var tentlist = _db.Queryable()
.Where(x => x.EmployeeId == a.EID
).First();
if (tentlist != null)
{
dw.CreatEmployeeName = tentlist.EmployeeName;
}
return _workRemindRepository.Insert(dw);
}
public bool DelEmployee(int ID)
{
var workRemind = _workRemindRepository.GetById(ID);
return _workRemindRepository.Delete(workRemind);
}
///
/// 获取提醒列表
///
///
///
public PageResult postWorkRemindList(WorkRemindPageSearch page)
{
var a = GetJwtInfo();
SqlSugar.PageModel pg = new SqlSugar.PageModel();
pg.PageSize = page.PageSize;
pg.PageIndex = page.PageIndex;
page.ToEmployeeId = a.EID;
int total = 0;
PageResult result = new PageResult();
//result.Items = _db.Queryable().Where(x => ((page.ToEmployeeId ==null || page.ToEmployeeId>0 ) || x.ToEmployeeId == page.ToEmployeeId)
//&& (!page.WorkRemindTimeStart.HasValue || x.WorkRemindTime >= page.WorkRemindTimeStart.Value)
// && (!page.WorkRemindTimeEnd.HasValue || x.WorkRemindTime <= page.WorkRemindTimeEnd.Value)
//)
// .OrderByDescending(x => x.WorkRemindTime).ToPageList(page.PageIndex, page.PageSize, ref total);
result.Items = _db.Queryable()
.WhereIF(page.ToEmployeeId != null && page.ToEmployeeId > 0 , x => (x.ToEmployeeId == page.ToEmployeeId) )
.WhereIF(page.WorkRemindTimeStart.HasValue, x => x.WorkRemindTime >= page.WorkRemindTimeStart.Value)
.WhereIF(page.WorkRemindTimeEnd.HasValue, x=>x.WorkRemindTime <= page.WorkRemindTimeEnd.Value)
.WhereIF(!string.IsNullOrEmpty(page.ProjectName), x => x.ProjectName.Contains(page.ProjectName))
.WhereIF(!string.IsNullOrEmpty(page.WorkRemindContent), x => x.WorkRemindContent.Contains(page.WorkRemindContent))
.OrderByDescending(x => x.WorkRemindTime).ToPageList(page.PageIndex, page.PageSize, ref total);
result.TotalCount = total;
result.TotalPage = total%page.PageSize==0 ? total / page.PageSize : total / page.PageSize + 1;
return result;
}
///
/// 获取em列表
///
///
public List GetUEmployeeInfoList()
{
var a = GetJwtInfo();
//if (a.EID != null)
// throw Oops.Oh($"没有权限");
var tentlist = _db.Queryable((et, ei) =>
new JoinQueryInfos
(
JoinType.Right, ei.EmployeeId == et.EmployeeID
)
)
.Where((et, ei) =>
(et.TenantID == a.TEID) && (ei.IsWork == null || ei.IsWork == 1))
.Select((et, ei) => new Document_EmployeeInfo
{
EmployeeId = ei.EmployeeId,
EmployeeName = ei.EmployeeName,
Job = ei.Job,
Phone = ei.Phone,
IsWork = ei.IsWork,
LeaveTime = ei.LeaveTime,
CardPositive = ei.CardPositive,
CardPositiveVersionNo = ei.CardPositiveVersionNo,
CardPositiveSize = ei.CardPositiveSize,
LastUpdateTime = ei.LastUpdateTime,
LastUpdateName = ei.LastUpdateName,
UserName = ei.UserName,
UserPassWord = ei.UserPassWord,
LoginTime = ei.LoginTime,
IsLogin = ei.IsLogin,
AdviseFlag = ei.AdviseFlag,
UserId = ei.UserId,
}
).ToList();
return tentlist;
}
///
/// 获取Jwt相关信息
///
public JwtInfo GetJwtInfo()
{
JwtInfo jwtInfo = new JwtInfo();
jwtInfo.LogInSource = (LogInFrom)(App.User?.FindFirstValue("loginfrom")?.ObjToInt() ?? 0);
jwtInfo.EID = App.User?.FindFirstValue("eid")?.ObjToInt();
jwtInfo.UID = App.User?.FindFirstValue("uid")?.ObjToInt();
jwtInfo.TEID = App.User?.FindFirstValue("teid")?.ObjToInt();
var guid = App.User?.FindFirstValue("jid");
jwtInfo.JID = string.IsNullOrEmpty(guid) ? null : new Guid(guid);
return jwtInfo;
}
///
/// 查询数据字典
///
///
public List GetDictionaryList()
{
var ret = _db.Queryable().ToList();
return ret;
}
///
/// 查询省市
///
///
///
public List GetCitySiteList(int CityLevel)
{
var ret = _db.Queryable().WhereIF(CityLevel>0,x=>x.CityLevel == CityLevel).ToList();
return ret;
}
///
/// 获取em列表
///
///
///
///
public List GetEmployeeListByStatus(int isWork, int Role)
{
var a = GetJwtInfo();
//if (a.EID != null)
// throw Oops.Oh($"没有权限");
var tentlist = _db.Queryable((ei, et, er) =>
new JoinQueryInfos
(
JoinType.Left, ei.EmployeeId == et.EmployeeID,
JoinType.Left, ei.EmployeeId == er.EmployeeId
)
)
.Where((ei, et, er) =>
et.TenantID == a.TEID)
.WhereIF(isWork >0,(ei, et, er) =>
ei.IsWork == isWork)
.WhereIF(Role > 0, (ei, et, er) =>
er.RoleType == Role)
.Select(expression: (ei, et, er) => new DocumentEmployeeInfoDTO
{
EmployeeId = ei.EmployeeId,
EmployeeName = ei.EmployeeName,
Job = ei.Job,
Phone = ei.Phone,
IsWork = ei.IsWork,
LeaveTime = ei.LeaveTime,
CardPositive = ei.CardPositive,
CardPositiveVersionNo = ei.CardPositiveVersionNo,
CardPositiveSize = ei.CardPositiveSize,
LastUpdateTime = ei.LastUpdateTime,
LastUpdateName = ei.LastUpdateName,
UserName = ei.UserName,
UserPassWord = ei.UserPassWord,
LoginTime = ei.LoginTime,
IsLogin = ei.IsLogin,
AdviseFlag = ei.AdviseFlag,
UserId = ei.UserId,
}
).ToList();
return tentlist;
}
}
}