Exemplo n.º 1
0
        public async Task <ActionResult <ResponseModel> > Edit(WorkflowListCreateViewModel model)
        {
            var response = ResponseModelFactory.CreateInstance;

            if (ConfigurationManager.AppSettings.IsTrialVersion)
            {
                response.SetIsTrial();
                return(Ok(response));
            }

            await using (_dbContext)
            {
                if (model.Status != "0")
                {
                    response.SetFailed("改工作不在【新工作】不能修改");
                    return(Ok(response));
                }

                var entity = _mapper.Map <WorkflowListCreateViewModel, WorkflowList>(model);
                //进行下一步审批
                if (!string.IsNullOrEmpty(model.NextStepCode) && !string.IsNullOrEmpty(model.Approver))
                {
                    //进行中
                    entity.Status = "1";
                    //进行中
                    entity.Status          = "1";
                    entity.CurrentStepCode = model.NextStepCode;
                    var step = await _dbContext.WorkflowStep.FindAsync(model.NextStepCode);

                    if (step != null)
                    {
                        var steps = await _dbContext.WorkflowStep.
                                    Where(s => s.TemplateCode == step.TemplateCode).OrderBy(o => o.SortID).ToListAsync();

                        if (steps.Count > int.Parse(step.SortID))
                        {
                            entity.NextStepCode = steps[int.Parse(step.SortID)]?.Code;
                        }
                    }
                    var receivers = new List <WorkflowReceiver>();
                    foreach (var user in model.Approver.Split(','))
                    {
                        var u = Guid.Parse(user);
                        //发送审批到下一个人
                        var receiver = WorkflowReceiverFactory.CreateInstance;
                        receiver.Type         = entity.Type;
                        receiver.User         = u;
                        receiver.Description  = entity.Description;
                        receiver.WorkflowCode = entity.Code;
                        receiver.CreateUser   = entity.User;
                        receiver.StepCode     = entity.CurrentStepCode;
                        receiver.TemplateCode = step?.TemplateCode;
                        receivers.Add(receiver);
                        //发送纸飞机通知
                        var toDoUser = await _dbContext.DncUser.FindAsync(entity.User);

                        var rUser = await _dbContext.DncUser.FindAsync(u);

                        await _telegramService.SendTextMessageAsync(rUser.TelegramChatId,
                                                                    $"请审核用户【{toDoUser.DisplayName}】{entity.Title}", rUser.TelegramBotToken);
                    }

                    await _dbContext.WorkflowReceiver.AddRangeAsync(receivers);
                }
                _dbContext.Entry(entity).State = EntityState.Modified;
                await _dbContext.SaveChangesAsync();

                return(Ok(response));
            }
        }
Exemplo n.º 2
0
        public async Task <ActionResult <ResponseModel> > Create(WorkflowListCreateViewModel model)
        {
            var response = ResponseModelFactory.CreateInstance;

            if (model.Title.Trim().Length <= 0)
            {
                response.SetFailed("请输入审批工作名称");
                return(Ok(response));
            }

            await using (_dbContext)
            {
                if (_dbContext.DncRole.Count(x => x.Name == model.Title) > 0)
                {
                    response.SetFailed("审批工作已存在");
                    return(Ok(response));
                }
                var entity = _mapper.Map <WorkflowListCreateViewModel, WorkflowList>(model);
                entity.User      = AuthContextService.CurrentUser.Guid;
                entity.StartDate = DateTime.Now;
                entity.Status    = "0";
                entity.Code      = RandomHelper.GetRandomizer(8, true, false, true, true);
                //进行下一步审批
                if (!string.IsNullOrEmpty(model.NextStepCode) && !string.IsNullOrEmpty(model.Approver))
                {
                    //进行中
                    entity.Status          = "1";
                    entity.CurrentStepCode = model.NextStepCode;
                    var step = await _dbContext.WorkflowStep.FindAsync(model.NextStepCode);

                    if (step != null)
                    {
                        var steps = await _dbContext.WorkflowStep.
                                    Where(s => s.TemplateCode == step.TemplateCode).OrderBy(o => o.SortID).ToListAsync();

                        if (steps.Count > int.Parse(step.SortID))
                        {
                            entity.NextStepCode = steps[int.Parse(step.SortID)]?.Code;
                        }
                    }
                    var receivers = new List <WorkflowReceiver>();
                    foreach (var user in model.Approver.Split(','))
                    {
                        var u = Guid.Parse(user);
                        //发送审批到下一个人
                        var receiver = WorkflowReceiverFactory.CreateInstance;
                        receiver.Type         = entity.Type;
                        receiver.User         = u;
                        receiver.WorkflowCode = entity.Code;
                        receiver.CreateUser   = entity.User;
                        receiver.Description  = entity.Description;
                        receiver.StepCode     = entity.CurrentStepCode;
                        receiver.TemplateCode = step?.TemplateCode;
                        receivers.Add(receiver);
                        //发送纸飞机通知
                        var toDoUser = await _dbContext.DncUser.FindAsync(entity.User);

                        var rUser = await _dbContext.DncUser.FindAsync(u);

                        await _telegramService.SendTextMessageAsync(rUser.TelegramChatId,
                                                                    $"请审核用户【{toDoUser.DisplayName}】{entity.Title}", rUser.TelegramBotToken);
                    }


                    await _dbContext.WorkflowReceiver.AddRangeAsync(receivers);
                }

                await _dbContext.WorkflowList.AddAsync(entity);

                await _dbContext.SaveChangesAsync();

                return(Ok(response));
            }
        }