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));
        }
示例#2
0
        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));
        }
示例#4
0
        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));
        }