using System;
using System.Collections.Generic;
using System.Text;
using IServices;
using DTO;
using zhengcaioa.Models;
using AutoMapper;
using System.Linq;
namespace Services
{
public partial class DailyManagementService : IDailyManagementService
{
private readonly zhengcaioaContext _context;
private readonly IMapper _mapper;
public DailyManagementService(zhengcaioaContext context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
#region 接电话管理
///
/// 取通话记录列表
///
///
///
public ResultDataEntity GetHoldPhoneList(AdmHoldPhoneDTOSearch search)
{
var query = _context.AdmHoldPhones
.Where(e => e.RecStatus == "A")
.ToList();
if (!string.IsNullOrEmpty(search.Createtime))
{
var date = search.Createtime.Split('|');
DateTime startDate = Convert.ToDateTime(date[0]);
DateTime endDate = Convert.ToDateTime(date[1]);
query = query.Where(e => e.Createtime >= startDate && e.Createtime <= endDate.AddDays(1)).ToList();
}
if (!string.IsNullOrEmpty(search.Intention))
{
query = query.Where(e => e.Intention == search.Intention).ToList();
}
if (!string.IsNullOrEmpty(search.LineType))
{
query = query.Where(e => e.LineType == search.LineType).ToList();
}
if (!string.IsNullOrEmpty(search.Context))
{
query = query.Where(e => e.Context.Contains(search.Context)).ToList();
}
if (!string.IsNullOrEmpty(search.Creater))
{
query = query.Where(e => e.Creater == search.Creater).ToList();
}
var dt = (from a in query
join b in _context.PltUsers.Where(e => e.RecStatus == "A")
on a.UserId equals b.Id
//join c in _context.sy
select new AdmHoldPhoneDTO
{
Id = a.Id,
InTime = a.InTime,
OrderId = a.OrderId,
Phone = a.Phone,
LineType = a.LineType,
Context = a.Context,
UserId = b.UserName,
Intention = a.Intention
}).OrderByDescending(x=>x.InTime).ToList();
ResultDataEntity data = new ResultDataEntity();
if (search.totalrows == 0)
search.totalrows = dt.Count();
var signinList = dt.Skip((search.page - 1) * search.rows).Take(search.rows).ToList();
var list = _mapper.Map>(signinList);
data.LoadData(search, list);
return data;
}
///
/// 取单条通话记录
///
///
///
public AdmHoldPhoneDTO GetHoldPhone(string id)
{
AdmHoldPhone entity = _context.AdmHoldPhones.Where(e => e.RecStatus == "A" && e.Id == id).FirstOrDefault();
if (entity == null)
{
entity = new AdmHoldPhone();
}
AdmHoldPhoneDTO holdPhone = _mapper.Map(entity);
return holdPhone;
}
///
/// 保存接电话信息
///
///
///
public ResultEntity SaveHoldPhone(AdmHoldPhoneDTO holdPhone)
{
ResultEntity resultEntity = new ResultEntity();
try
{
AdmHoldPhone hold = _mapper.Map(holdPhone);
if (string.IsNullOrEmpty(hold.Id))
{
hold.Id = Guid.NewGuid().ToString();
holdPhone.Id = hold.Id;
_context.AdmHoldPhones.Add(hold);
}
else
{
var entity = _context.AdmHoldPhones.Find(hold.Id);
entity.OrderId = holdPhone.OrderId;
entity.UserId = holdPhone.UserId;
entity.LineType = holdPhone.LineType;
entity.Intention = holdPhone.Intention;
entity.Handling = holdPhone.Handling;
entity.Phone = holdPhone.Phone;
entity.Context = holdPhone.Context;
}
_context.SaveChanges();
resultEntity.ReturnID = hold.Id;
resultEntity.Result = true;
}
catch (Exception ex)
{
resultEntity.Result = false;
resultEntity.Message = "保存失败,请联系管理员";
ex.Message.ToString();
}
return resultEntity;
}
///
/// 修改记录状态
///
/// 主id
/// 用户
///
public ResultEntity ModifyStatus(string id, string userid)
{
ResultEntity result = new ResultEntity();
result.Result = true;
var model = _context.AdmHoldPhones.Find(id);
if (model != null)
{
model.RecStatus = "D";
model.Modifier = userid;
model.Modifytime = DateTime.Now;
_context.SaveChanges();
}
return result;
}
#endregion
#region 工作提醒
///
/// 工作提醒列表
///
///
///
public ResultDataEntity GetMemoBookList(AdmMemoBookDTOSearch search)
{
var listCode = (from a in _context.SysCodeDtls
join b in _context.SysCodes
on a.CodeId equals b.Id
where a.RecStatus == "A"
&& b.RecStatus == "A"
select new CodeDataEntity()
{
CodeId = b.Id,
CodeTable = b.CodeTable,
CodeField = b.CodeField,
CodeSn = a.CodeSn,
Comments = a.Comments,
Contents = a.Contents,
RecStatus = a.RecStatus,
Sort = a.Sort
});
DateTime Createtimestart = DateTime.Now;
DateTime Createtimeend = DateTime.Now;
if (!string.IsNullOrWhiteSpace(search.Createtime))
{
string[] Createtimes = search.Createtime.Split("|");
DateTime.TryParse(Createtimes[0], out Createtimestart);
DateTime.TryParse(Createtimes[1], out Createtimeend);
Createtimeend = Createtimeend.AddDays(1);
}
var dt = (from a in _context.AdmMemoBooks
join b in _context.PltUsers.Where(e => e.RecStatus == "A")
on a.ToUserId equals b.Id
// join d in _context.HrDepts
//on b.DeptId equals d.Id
join c in _context.PltUsers.Where(e => e.RecStatus == "A")
on a.Creater equals c.Id
join f in listCode.Where(x => x.CodeTable == "ADM_MemoBook" && x.CodeField == "KaoHe")
on a.KaoHe equals f.CodeSn into fsss
from fff in fsss.DefaultIfEmpty()
join g in listCode.Where(x => x.CodeTable == "ADM_MemoBook" && x.CodeField == "RType")
on a.Rtype equals g.CodeSn into gsss
from ggg in gsss.DefaultIfEmpty()
join h in listCode.Where(x => x.CodeTable == "ADM_MemoBook" && x.CodeField == "HaveRead")
on a.Rtype equals h.CodeSn into hsss
from hhh in hsss.DefaultIfEmpty()
where a.RecStatus == "A"
&& (string.IsNullOrWhiteSpace(search.Createtime) || (a.Createtime >= Createtimestart && a.Createtime <= Createtimeend))
&& (string.IsNullOrWhiteSpace(search.Rtype) || a.Rtype == search.Rtype.Trim())
&& (string.IsNullOrWhiteSpace(search.Creater) || a.Creater == search.Creater.Trim())
&& (search.unread != 1 || a.HaveRead == 0)
&& (string.IsNullOrWhiteSpace(search.HaveRead) || a.HaveRead == int.Parse(search.HaveRead))
&& (string.IsNullOrWhiteSpace(search.ToUserId) || a.ToUserId == search.ToUserId.Trim())
&& (string.IsNullOrWhiteSpace(search.WorkDept) || a.WorkDept == search.WorkDept.Trim())
&& (string.IsNullOrWhiteSpace(search.KaoHe) || a.KaoHe == search.KaoHe)
select new AdmMemoBookDTO
{
Id = a.Id,
Rtype = a.Rtype,
RtypeName = ggg.Comments,
Creater = c.UserName,
ToUserId = b.UserName,
Time = a.Time,
TimeName = a.Time.HasValue ? a.Time.Value.ToString("yyyy-MM-dd HH:mm") : "",
Context = a.Context,
Createtime = a.Createtime,
FeedBack = a.FeedBack,
WorkDept = b.DeptId,
KaoHe = a.KaoHe,
KaoHeName = fff.Comments,
ZhuiZe = a.ZhuiZe,
WanchengTime = a.WanchengTime,
WanchengTimeName = a.WanchengTime.HasValue? a.WanchengTime.Value.ToString("yyyy-MM-dd HH:mm"): "",
BanLi = a.BanLi,
ShenSu = a.ShenSu,
ShenSuTime = a.ShenSuTime,
HaveRead = a.HaveRead.HasValue? a.HaveRead.Value:0,
HaveReadName = hhh.Comments,
}).OrderByDescending(x=>x.Createtime).ToList();
//if (!string.IsNullOrEmpty(search.Createtime))
//{
// var date = search.Createtime.Split('|');
// DateTime startDate = Convert.ToDateTime(date[0]);
// DateTime endDate = Convert.ToDateTime(date[1]);
// dt = dt.Where(e => e.Createtime >= startDate && e.Createtime <= endDate.AddDays(1)).ToList();
//}
//if (!string.IsNullOrEmpty(search.Rtype))
//{
// dt = dt.Where(e => e.Rtype == search.Rtype).ToList();
//}
//if (!string.IsNullOrEmpty(search.Creater))
//{
// dt = dt.Where(e => e.Creater == search.Creater).ToList();
//}
//int? iii = 0;
//if (search.unread == 1)
//{
// dt = dt.Where(e => e.HaveRead == iii).ToList();
//}
//if (!string.IsNullOrEmpty(search.HaveRead))
//{
// int aaa = int.Parse(search.HaveRead);
// dt = dt.Where(e => e.HaveRead == aaa).ToList();
//}
//if (!string.IsNullOrEmpty(search.ToUserId))
//{
// dt = dt.Where(e => e.ToUserId == search.ToUserId).ToList();
//}
//if (!string.IsNullOrEmpty(search.WorkDept))
//{
// dt = dt.Where(e => e.WorkDept == search.WorkDept).ToList();
//}
ResultDataEntity data = new ResultDataEntity();
if (search.totalrows == 0)
search.totalrows = dt.Count();
var dtList = dt.Skip((search.page - 1) * search.rows).Take(search.rows).ToList();
var list = _mapper.Map>(dtList);
data.LoadData(search, list);
return data;
}
///
/// 某一个人的工作提醒
///
/// 用户ID
///
public int GetRemind(string userid)
{
var query = _context.AdmMemoBooks
.Where(e => e.RecStatus == "A" && e.ToUserId == userid && e.HaveRead == 0 /*&& e.Time >= DateTime.Now && e.Rtype == "1"*/)
.ToList();
//var dt = (from a in query
// join b in _context.PltUsers.Where(e => e.RecStatus == "A")
// on a.Creater equals b.Id
// select new AdmMemoBookDTO
// {
// Id = a.Id,
// Rtype = a.Rtype,
// Creater = b.UserName,
// Time = a.Time,
// Context = a.Context,
// Createtime = a.Createtime
// }).ToList();
return query.Count;
}
///
/// 某一个人的工作提醒
///
/// 用户ID
///
public List GetRemindsalary(string userid, DateTime datemin, DateTime datemax, string KaoHe)
{
var query = _context.AdmMemoBooks
.Where(e => e.RecStatus == "A" && e.ToUserId == userid && e.KaoHe == KaoHe && e.Modifytime >= datemin && e.Modifytime < datemax)
.ToList();
//var dt = (from a in query
// join b in _context.PltUsers.Where(e => e.RecStatus == "A")
// on a.Creater equals b.Id
// select new AdmMemoBookDTO
// {
// Id = a.Id,
// Rtype = a.Rtype,
// Creater = b.UserName,
// Time = a.Time,
// Context = a.Context,
// Createtime = a.Createtime
// }).ToList();
var list = _mapper.Map>(query);
return list;
}
public ResultEntity SaveMemoBook(AdmMemoBookDTO mbDTO)
{
ResultEntity resultEntity = new ResultEntity();
try
{
AdmMemoBook mb = _mapper.Map(mbDTO);
if (string.IsNullOrEmpty(mb.Id))
{
mb.Id = Guid.NewGuid().ToString();
mb.Id = mb.Id;
// mb.HaveRead = 0;
// mb.KaoHe = "1";
_context.AdmMemoBooks.Add(mb);
}
else
{
var book = _context.AdmMemoBooks.Find(mb.Id);
if(book.HaveRead == 1)
{
resultEntity.Result = false;
resultEntity.Message = "已完成的提醒不能修改";
return resultEntity;
}
book.HaveRead = mb.HaveRead;
book.Context = mb.Context;
book.ToUserId = mb.ToUserId;
book.Time = mb.Time;
book.Modifier = mb.Modifier;
book.Modifytime = mb.Modifytime;
book.FeedBack = mb.FeedBack;
book.WorkDept = mb.WorkDept;
book.KaoHe = mb.KaoHe;
book.ZhuiZe = mb.ZhuiZe;
book.WanchengTime = mb.WanchengTime;
book.BanLi = mb.BanLi;
book.ShenSu = mb.ShenSu;
book.ShenSuTime = mb.ShenSuTime;
}
_context.SaveChanges();
resultEntity.ReturnID = mb.Id;
resultEntity.Result = true;
}
catch (Exception ex)
{
resultEntity.Result = false;
resultEntity.Message = "保存失败,请联系管理员";
ex.Message.ToString();
}
return resultEntity;
}
public ResultEntity SaveMemoBookKaohe(AdmMemoBookDTO mbDTO)
{
ResultEntity resultEntity = new ResultEntity();
try
{
AdmMemoBook mb = _mapper.Map(mbDTO);
if (string.IsNullOrEmpty(mb.Id))
{
mb.Id = Guid.NewGuid().ToString();
mb.Id = mb.Id;
// mb.HaveRead = 0;
// mb.KaoHe = "1";
_context.AdmMemoBooks.Add(mb);
}
else
{
var book = _context.AdmMemoBooks.Find(mb.Id);
book.HaveRead = mb.HaveRead;
book.Context = mb.Context;
book.ToUserId = mb.ToUserId;
book.Time = mb.Time;
book.Modifier = mb.Modifier;
book.Modifytime = mb.Modifytime;
book.FeedBack = mb.FeedBack;
book.WorkDept = mb.WorkDept;
book.KaoHe = mb.KaoHe;
book.ZhuiZe = mb.ZhuiZe;
book.WanchengTime = mb.WanchengTime;
book.BanLi = mb.BanLi;
book.ShenSu = mb.ShenSu;
book.ShenSuTime = mb.ShenSuTime;
}
_context.SaveChanges();
resultEntity.ReturnID = mb.Id;
resultEntity.Result = true;
}
catch (Exception ex)
{
resultEntity.Result = false;
resultEntity.Message = "保存失败,请联系管理员";
ex.Message.ToString();
}
return resultEntity;
}
///
/// 备忘状态
///
/// 主id
/// 用户
///
public ResultEntity ModifyMemoBookStatus(string id, string userid ,bool isReaded = false)
{
ResultEntity result = new ResultEntity();
result.Result = true;
var model = _context.AdmMemoBooks.Find(id);
if (model != null)
{
if (isReaded)
{
model.HaveRead = 1;
}
else
{
model.RecStatus = "D";
}
model.Modifier = userid;
model.Modifytime = DateTime.Now;
_context.SaveChanges();
}
return result;
}
///
/// 单条提醒记录
///
///
///
public AdmMemoBookDTO GetMemoBook(string id)
{
AdmMemoBook entity = _context.AdmMemoBooks.Where(e => e.RecStatus == "A" && e.Id == id).FirstOrDefault();
if (entity == null)
{
entity = new AdmMemoBook();
}
AdmMemoBookDTO memobook = _mapper.Map(entity);
return memobook;
}
#endregion
///
/// 保存验证码
///
///
///
public ResultEntity SavePhoneMessage(AdmPhoneMessageDTO admPhoneMessageDTO)
{
ResultEntity resultEntity = new ResultEntity();
try
{
AdmPhoneMessage hold = _mapper.Map(admPhoneMessageDTO);
if (string.IsNullOrEmpty(hold.Id))
{
hold.Id = Guid.NewGuid().ToString();
admPhoneMessageDTO.Id = hold.Id;
_context.AdmPhoneMessages.Add(hold);
}
else
{
var entity = _context.AdmPhoneMessages.Find(hold.Id);
entity.Phone = hold.Phone;
entity.Message = hold.Message;
entity.Createtime = hold.Createtime;
}
_context.SaveChanges();
resultEntity.ReturnID = hold.Id;
resultEntity.Result = true;
}
catch (Exception ex)
{
resultEntity.Result = false;
resultEntity.Message = "保存失败,请联系管理员";
ex.Message.ToString();
}
return resultEntity;
}
///
/// 获取最近的验证码
///
///
///
public AdmPhoneMessageDTO GetPhoneMessageZuijin(string phone)
{
AdmPhoneMessage entity = _context.AdmPhoneMessages.Where(e => e.Phone == phone ).OrderByDescending(x=>x.Createtime).FirstOrDefault();
if (entity == null)
{
entity = new AdmPhoneMessage();
}
AdmPhoneMessageDTO admPhoneMessageDTO = _mapper.Map(entity);
return admPhoneMessageDTO;
}
}
}