using System;
using System.Collections.Generic;
using System.Common;
using System.Common.Helpers;
using System.Data;
using System.IRepositories;
using System.Linq;
using System.Model;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace TVShoppingCallCenter_ZLJ.Controllers.ManagementCenter
{
[Produces("application/json")]
[Route("api/[controller]")]
public class TodoManagementController : BaseController
{
private readonly ISys_TodoManagementRepository _sys_todomanagementrepository;
public TodoManagementController(ISys_TodoManagementRepository sys_todomanagementrepository)
{
_sys_todomanagementrepository = sys_todomanagementrepository;
}
///
/// 添加待办
///
///
///
[HttpPost("add")]
public async Task AddAsync(T_Sys_TodoManagement input)
{
if (input.F_Type < 0)
return Error("请选择待办类型");
string user = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
input.F_CreateTime = DateTime.Now;
input.F_CreateUser = user;
input.F_IsDelete = 0;
var res = await _sys_todomanagementrepository.Add(input);
if (res > 0)
{
return Success("添加成功");
}
else
{
return Error("添加失败");
}
}
///
/// 修改待办
///
[HttpPost("update")]
public async Task UpdateAsync(T_Sys_TodoManagement input)
{
if (input.F_ID <= 0)
return Error("参数错误");
if (input.F_Type < 0)
return Error("请选择待办类型");
var model = await _sys_todomanagementrepository.GetSingle(x => x.F_ID == input.F_ID);
if (model == null)
return Error("操作失败");
// string user = "8000";
string user = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
input.F_IsDelete = 0;
input.F_CreateUser = model.F_CreateUser;
input.F_CreateTime = model.F_CreateTime;
input.F_UpdateTime = DateTime.Now;
input.F_UpdateUser = user;
// model.F_UpdateUser = "8000";
var b = await _sys_todomanagementrepository.Update(input);
if (b)
return Success("修改成功");
return Error("修改失败");
}
///
/// 删除待办
///
///
///
[HttpPost("delete")]
public async Task Remove(int[] ids)
{
var res = 0;
if (ids != null && ids.Length > 0)
{
foreach (var item in ids)
{
var model = await _sys_todomanagementrepository.GetSingle(x => x.F_ID == item);
model.F_IsDelete = (int)EnumUserCountState.Delete;
model.F_DeleteTime = DateTime.Now.ToLocalTime();
model.F_DeleteUser = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
if (_sys_todomanagementrepository.Update(model).Result)
res += 1;
}
if (res == ids.Length)
return Success("删除成功");
else if (res > 0 && res < ids.Length)
return Error("部分删除失败,请查看后重新操作");
else
return Error("删除失败,请查看后重新操作");
}
else
return Error("请选择要删除的记录");
}
///
/// 操作待办
///
/// id
///
[HttpGet("operation")]
public async Task GetOperationAsync(int[] ids, int state)
{
var res = 0;
if (ids != null && ids.Length > 0)
{
foreach (var item in ids)
{
var model = await _sys_todomanagementrepository.GetSingle(x => x.F_ID == item);
model.F_State = state;
if (_sys_todomanagementrepository.Update(model).Result)
res += 1;
}
if (res == ids.Length)
return Success("操作成功");
else if (res > 0 && res < ids.Length)
return Error("部分操作败,请查看后重新操作");
else
return Error("操作失败,请查看后重新操作");
}
else
return Error("请选择要操作的记录");
}
///
/// 获取待办列表
///
///
///
///
///
[HttpGet("getlist")]
public async Task GetListMark(string keyword,int state=-1, int type = -1, int pageindex = 1, int pagesize = 20)
{
List conModels = new List();
#region 条件筛选
conModels.Add(new ConditionalModel() { FieldName = "F_IsDelete", ConditionalType = ConditionalType.Equal, FieldValue = ((int)EnumUserCountState.Enabled).ToString() });
if (!string.IsNullOrEmpty(keyword))
{
conModels.Add(new ConditionalCollections()
{
ConditionalList = new List>()
{
new KeyValuePair(WhereType.And, new ConditionalModel() { FieldName = "F_Name", ConditionalType = ConditionalType.Like, FieldValue = keyword }),
new KeyValuePair( WhereType.Or , new ConditionalModel() { FieldName = "F_Content", ConditionalType = ConditionalType.Like, FieldValue = keyword }),
new KeyValuePair( WhereType.Or , new ConditionalModel() { FieldName = "F_PeopleName", ConditionalType = ConditionalType.Like, FieldValue = keyword })
}
});
}
if (type > -1)
{
conModels.Add(new ConditionalModel() { FieldName = "F_Type", ConditionalType = ConditionalType.Like, FieldValue = type.ToString() });
}
if (state > -1)
{
conModels.Add(new ConditionalModel() { FieldName = "F_State", ConditionalType = ConditionalType.Like, FieldValue = state.ToString() });
}
#endregion
int recordCount = 0;
var list = await _sys_todomanagementrepository.GetListByPage(conModels, new MyPageModel() { PageIndex = pageindex, PageSize = pagesize, PageCount = recordCount });
var obj = new
{
state = "success",
message = "成功",
rows = list,
total = list.Totals,
};
return Content(obj.ToJson());
}
///
/// 获取任务详情
///
/// id
///
[HttpGet("getdetails")]
public async Task GetDetailsAsync(int id)
{
if (id <= 0)
return Error("参数错误");
var model = await _sys_todomanagementrepository.GetSingle(x => x.F_ID == id);
if (model == null)
{
return Error("获取失败");
}
return Success("获取成功!", model);
}
///
/// 上传文件并导入数据库
///
///
[HttpPost("importexcel")]
public async Task ImportExcel(int headrow = 0)
{
Microsoft.AspNetCore.Http.IFormFile _upfile = Request.Form.Files[0];
if (!_upfile.ContentType.Equals("application/vnd.ms-excel") && !_upfile.ContentType.Equals("application/x-xls") && !_upfile.ContentType.Equals("application/x-xlsx") && !_upfile.ContentType.Equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") && !_upfile.ContentType.Equals("application/octet-stream"))
return Error($"请正确上传Excel文件:file.ContentType={_upfile.ContentType}");
NPOIHelper npoi = new NPOIHelper();
var dtExcel = npoi.ExcelToTable1(_upfile, headrow);
int num = dtExcel.Rows.Count;
var cols = dtExcel.Columns;
int colnum = cols.Count;
string errmsg = string.Empty;
if (num > 0)
{
int index = 1;
foreach (DataRow dr in dtExcel.Rows)
{
var model = new T_Sys_TodoManagement();
string user = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
model.F_Name = dr["待办标题"].ToString();
model.F_Content = dr["待办标题"].ToString();
model.F_PeopleName = dr["待联系人姓名"].ToString();
model.F_Tel = dr["待联系人电话"].ToString();
if (dr["分类"].ToString() == "日程")
model.F_Type = 0;
else
model.F_Type = 1;
if (dr["任务状态"].ToString() == "未完成")
model.F_State = 0;
else
model.F_State = 0;
model.F_CreateTime = DateTime.Now;
model.F_CreateUser = user;
model.F_IsDelete = 0;
int b = await _sys_todomanagementrepository.Add(model);
if (b <= 0)
{
if (!string.IsNullOrEmpty(errmsg))
{
errmsg = errmsg + "\r\n第" + index + "行导入失败!";
}
else
{
errmsg = "第" + index + "行导入失败!";
}
}
index++;
}
}
else
{
return Error("文件中无数据");
}
if (!string.IsNullOrEmpty(errmsg))
{
return Error(errmsg);
}
return Success("导入成功");
}
}
}