public JsonResult Notice(int Id) { OperationResult oper = new OperationResult(OperationResultType.Error, "操作异常"); OnlinePurchaseProduct online = _onlinePurchaseProductContract.View(Id); List <Store> listStore = _storeContract.Stores.Where(x => x.IsDeleted == false && x.IsEnabled == true && x.Administrators.Any()).ToList(); List <int> listAdminId = new List <int>(); foreach (Store item in listStore) { listAdminId.AddRange(item.Administrators.Where(x => x.IsDeleted == false && x.IsEnabled == true).Select(x => x.Id)); } string strContent = string.IsNullOrEmpty(online.NoticeContent) ? online.NoticeTitle : online.NoticeContent; NotificationDto dto = new NotificationDto() { AdministratorIds = listAdminId, Title = online.NoticeTitle, Description = strContent, IsEnableApp = true, NoticeTargetType = (int)NoticeTargetFlag.Admin, NoticeType = (int)NoticeFlag.Immediate }; oper = _notificationContract.Insert(sendNotificationAction, dto); return(Json(oper)); }
public ActionResult SendNotice(int adminId, int target, string title, string content, string departmentIds) { try { NoticeTargetFlag noticeTarget; NoticeFlag noticeType = NoticeFlag.Immediate; if (!Enum.TryParse(target.ToString(), out noticeTarget)) { return(Json(new OperationResult(OperationResultType.Error, "通知目标类型错误"))); } if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(content)) { return(Json(new OperationResult(OperationResultType.Error, "通知标题及内容不能为空"))); } var dto = new NotificationDto() { Title = title, Description = content, NoticeType = noticeType, NoticeTargetType = (int)noticeTarget, }; switch (noticeTarget) { case NoticeTargetFlag.Admin: break; case NoticeTargetFlag.Department: { //按部门发送,传入部门id if (string.IsNullOrEmpty(departmentIds)) { return(Json(new OperationResult(OperationResultType.Error, "部门id不能为空"))); } var deptArr = departmentIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).Distinct().ToArray(); for (int i = 0; i < deptArr.Length; i++) { dto.DepartmentIds.Add(deptArr[i]); } } break; default: break; } var res = _notificationContract.Insert(sendNotificationAction, dto); return(Json(res)); } catch (Exception e) { return(Json(new OperationResult(OperationResultType.Error, "系统错误"))); } }
public ActionResult Verify(int requestId, bool isPass) { var request = _contract.View(requestId); if (request.State != TimeoutRequestState.审核中) { return(Json(OperationResult.Error("已审核"))); } var config = _contract.GetConfig().Data as Dictionary <string, string>; var configDays = TimeSpan.FromDays(int.Parse(config[_configKey])); var timeoutDays = TimeSpan.FromSeconds(request.Timeouts); if (timeoutDays > configDays) { var adminIds = GetVerifyAdminIds(request.DepartmentId, _superVerifyFlags); if (!adminIds.Contains(AuthorityHelper.OperatorId.Value)) { return(Json(OperationResult.Error($"超时天数已超过规定最高天数{config[_configKey]},需要更高权限才能继续操作"))); } } else { var adminIds = GetVerifyAdminIds(request.DepartmentId, _filterFlags); if (!adminIds.Contains(AuthorityHelper.OperatorId.Value)) { return(Json(OperationResult.Error($"权限不足"))); } } request.State = isPass ? TimeoutRequestState.已通过 : TimeoutRequestState.未通过; request.VerifyAdminId = AuthorityHelper.OperatorId.Value; var res = _contract.Update(request); if (res.ResultType == OperationResultType.Success) { // 获取有审核权限且管辖部门包含申请人所在部门的管理员 var notiDto = new NotificationDto { AdministratorIds = new List <int> { request.RequestAdminId }, NoticeType = NoticeFlag.Immediate, NoticeTargetType = (int)NoticeTargetFlag.Admin, Title = "超时申请审核通知", Description = $"您的申请已经审核完毕,审核结果:{request.State}", IsEnableApp = false }; _notificationContract.Insert(sendNotificationAction, notiDto); } return(Json(res)); }
public JsonResult Create(ResignationDto dto) { dto.ToExamineResult = 0; dto.operationId = AuthorityHelper.OperatorId; OperationResult oper = _resignationContract.Insert(dto); if (oper.ResultType == OperationResultType.Success) { int NotificationId = _templateNotificationContract.templateNotifications.Where(x => x.Name == "离职通知").Select(x => x.Id).FirstOrDefault(); var orgContent = _templateContract.Templates.Where(x => !x.IsDeleted && x.IsEnabled && x.TemplateNotificationId == NotificationId) .Select(x => x.TemplateHtml).FirstOrDefault(); var title = _templateContract.Templates.Where(x => !x.IsDeleted && x.IsEnabled && x.TemplateNotificationId == NotificationId) .Select(x => x.TemplateName).FirstOrDefault(); List <int> AuthorityList = new List <int>() { 1, 4, 5, 7 }; var resign = _administratorContract.Administrators.Where(x => x.Id == dto.ResignationId).FirstOrDefault(); var dicPC = new Dictionary <string, object>(); dicPC.Add("entryName", resign?.Member?.RealName ?? string.Empty); dicPC.Add("entryDep", resign?.Department?.DepartmentName ?? string.Empty); dicPC.Add("ToExamine", ""); var content = NVelocityHelper.Generate(orgContent, dicPC, "Entry_PC"); var receiveAdminIds = _administratorContract.Administrators.Where(x => x.IsEnabled && !x.IsDeleted && AuthorityList.Contains(x.JobPosition.Auditauthority.Value)).Select(s => s.Id).ToList(); _notificationContract.Insert(sendNotificationAction, new NotificationDto() { Title = title, AdministratorIds = receiveAdminIds, Description = content, IsEnableApp = true, NoticeTargetType = (int)NoticeTargetFlag.Admin, NoticeType = (int)NoticeFlag.Immediate }); } return(Json(oper)); }