using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using MadRunFabric.Common; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using SignTokenApi.IRepositories; using System.Security.Claims; using Microsoft.Extensions.Configuration; using SignTokenApi.Model; using MadRunFabric.Model; namespace SignTokenApi.Controllers { /// /// 排班管理 - 普通排班(保洁,保安) - 公示系统展示 /// [Authorize] [ApiVersion("6.0")] [Route("api/[controller]")] [Produces("application/json")] public class WorkClassUserController : BaseController { private readonly ILogger _logger; private readonly IConfiguration _configuration; private readonly ISys_Work_ClassGroup_User_MapRepository _sys_work_classgroup_user_maprepository; //private readonly ISys_User_AccountRepository _sys_user_accountRepository; private readonly ISys_Work_ClassGroupRepository _sys_work_classgroupRepository; private readonly ISys_Work_UserRepository _sys_work_userRepository; private readonly ISys_DictionaryValueRepository _sys_dictionaryvalueRepository; public WorkClassUserController( ILogger logger, IConfiguration configuration, ISys_Work_ClassGroup_User_MapRepository sys_work_classgroup_user_maprepository, //ISys_User_AccountRepository sys_user_accountRepository, ISys_Work_ClassGroupRepository sys_work_classgroupRepository, ISys_Work_UserRepository sys_work_userRepository, ISys_DictionaryValueRepository sys_dictionaryvalueRepository ) { _logger = logger; _configuration = configuration; _sys_work_classgroup_user_maprepository = sys_work_classgroup_user_maprepository; _sys_work_classgroupRepository = sys_work_classgroupRepository; _sys_work_userRepository = sys_work_userRepository; _sys_dictionaryvalueRepository = sys_dictionaryvalueRepository; } /// /// 获取角色分类(角色,班次,用户) /// /// /// /// [HttpGet("getclassanduserlist")] public async Task GetClassAndUserListAsync(string projectid, string usertype) { //获取班次 var list_class = await _sys_work_classgroupRepository.Get(x => x.isdelete == 0); //获取用户 var list_user = await _sys_work_userRepository.Get(x => x.isdelete == 0); #region 条件查询 if (!string.IsNullOrEmpty(projectid)) { list_class = list_class.Where(x => x.projectid == projectid); list_user = list_user.Where(x => x.projectid == projectid); } //获取角色分类(字典) var list_usertype = list_user.Select(x => x.usertype).Distinct().ToList(); var list_dic = await _sys_dictionaryvalueRepository.Get(x => list_usertype.Contains(x.id)); #endregion var list = list_dic.Select(p => { var list_c = list_class.Where(x => x.usertype == p.id).Select(s=> { return new { s.code, s.name, s.starttime, s.endtime }; }); var list_u = list_user.Where(x => x.usertype == p.id).Select(s => { return new { s.id, s.username }; }); return new { p.id, //code p.name, //角色 list_class = list_c, //班别list list_user = list_u //用户list }; }); return Success("获取成功", list); } /// /// 获取排班标记 /// /// /// /// [HttpGet("getusermarker")] public IActionResult GetClassGroupMarker(string projectid, string usercode,string starttime,string endtime) { var result = _sys_work_classgroup_user_maprepository.GetWorkClassGroupUserMarker(projectid, usercode, starttime, endtime); return Success("获取成功", result); } /// /// 添加排班用户 /// /// [HttpPost("saveuser")] public async Task SaveClassGroupUserAsync(WorkClassGroupUserMapInput input) { string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value; #region 验证判断 if(string.IsNullOrEmpty(input.projectid)) return Error("请选择项目"); if (string.IsNullOrEmpty(input.usertype)) return Error("请选择职务"); if (string.IsNullOrEmpty(input.date.ToString())) return Error("请选择日期"); if (input.userlist == null && input.userlist.Count <= 0) return Error("请选中员工"); #endregion var model = new Sys_Work_ClassGroup_User_Map(); model.projectid = input.projectid; model.classcode = input.classcode; model.usertype = input.usertype; model.userlist = input.userlist; model.date = input.date; model.remark = input.remark; model.isdelete = 0; model.createby = usercode; model.createname = username; model.createtime = DateTime.Now; if (await _sys_work_classgroup_user_maprepository.Add(model)) return Success("保存成功"); return Error("保存失败"); } /// /// 修改排班用户 /// /// /// /// [HttpPost("update")] public async Task UpdateAsync(WorkClassGroupUserMapInput input) { string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value; if (string.IsNullOrEmpty(input.id)) return Error("参数错误"); if (string.IsNullOrEmpty(input.date.ToString())) return Error("日期不能为空"); var model = await _sys_work_classgroup_user_maprepository.GetSingle(input.id); if (model == null) return Error("参数错误!"); model.date = input.date; bool b = await _sys_work_classgroup_user_maprepository.UpdateOne(model); if (b) return Success("保存成功"); return Error("保存失败"); } /// /// 删除排班信息 by ids /// /// string[] id /// [HttpPost("delete")] public async Task DeleteAsync(string[] ids) { string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; var res = 0; if (ids != null && ids.Length > 0) { foreach (var item in ids) { if (await _sys_work_classgroup_user_maprepository.Remove(item)) res += 1; } if (res == ids.Length) return Success("删除成功"); else if (res > 0 && res < ids.Length) return Error("部分删除失败,请查看后重新操作"); else return Error("删除失败,请查看后重新操作"); } else return Error("请选择要删除的记录"); } #region 公示系统 - 省三院 /// /// 获取当天排班信息 - 树形 /// /// /// 字典编码 /// [HttpGet("getuserlistbyday")] public IActionResult GetUserListByDayAsync(string projectid,string code) { var result = _sys_work_classgroup_user_maprepository.GetUserListByDay(projectid, code); return Success("获取成功", result); } #endregion } }