public async Task DenyAsync(FlowMasterAdapterModel flowMasterAdapterModel, ApproveOpinionModel approveOpinionModel) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel); if (CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel) == false) { return; } RecoveryCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); flowMasterAdapterModel.ProcessLevel--; RecoveryCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); CopyUserAutoCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); if (flowMasterAdapterModel.ProcessLevel > 0) { } else { flowMasterAdapterModel.Status = 0; } FindNextActionUser(flowUsers, flowMasterAdapterModel); await context.BulkUpdateAsync(flowUsers); await UpdateAsync(flowMasterAdapterModel); await AddHistoryRecord(user, flowMasterAdapterModel, $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", false); #region 產生收件匣紀錄 await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel); #endregion CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); }
public async Task BackToSendAsync(FlowMasterAdapterModel flowMasterAdapterModel, ApproveOpinionModel approveOpinionModel) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel); if (CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel) == false) { return; } foreach (var item in flowUsers) { item.Completion = false; } flowMasterAdapterModel.ProcessLevel = 0; flowMasterAdapterModel.Status = 0; FindNextActionUser(flowUsers, flowMasterAdapterModel); await context.BulkUpdateAsync(flowUsers); await UpdateAsync(flowMasterAdapterModel); await AddHistoryRecord(user, flowMasterAdapterModel, $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", false); #region 產生收件匣紀錄 await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel); #endregion CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); }
public async Task SendAsync(FlowMasterAdapterModel flowMasterAdapterModel, ApproveOpinionModel approveOpinionModel) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel); if (user.Id != flowMasterAdapterModel.MyUserId) { return; } var flowUser = flowUsers.FirstOrDefault(x => x.Level == 0); flowUser.Completion = true; flowMasterAdapterModel.ProcessLevel = 1; flowMasterAdapterModel.Status = 1; CopyUserAutoCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); FindNextActionUser(flowUsers, flowMasterAdapterModel); await context.BulkUpdateAsync(flowUsers); await UpdateAsync(flowMasterAdapterModel); await AddHistoryRecord(user, flowMasterAdapterModel, $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", true); #region 產生收件匣紀錄 await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel); #endregion CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); }
public async Task OnWorkOrderSendingDialogCompletion(ApproveOpinionModel e) { if (e != null) { #region 產生一筆稽核送審記錄 var user = await CurrentUserHelper.GetCurrentUserAsync(); var code = UniqueStringHelper.GetCode(); FlowMasterAdapterModel flowMasterAdapterModel = new FlowMasterAdapterModel() { Code = code, MyUserId = user.Id, PolicyHeaderId = e.PolicyHeaderAdapterModel.Id, CreateDate = DateTime.Now, ProcessLevel = 0, Title = $"工單完工 - {CurrentRecord.Description}", Content = "", Status = 0, SourceType = FlowSourceTypeEnum.WorkOrder, SourceJson = JsonConvert.SerializeObject(CurrentRecord), SourceCode = CurrentRecord.Code, }; flowMasterAdapterModel.UpdateAt = DateTime.Now; await FlowMasterService.AddAsync(flowMasterAdapterModel); flowMasterAdapterModel = await FlowMasterService.GetAsync(code); await FlowMasterService.SendAsync(flowMasterAdapterModel, e); CurrentRecord.Status = MagicHelper.WorkOrderStatus送審; await CurrentService.UpdateAsync(CurrentRecord); this.dataGrid.RefreshGrid(); #endregion } ShowWorkOrderSendingDialog = false; }
public async Task OnShowApproveOpinionDialogCompletion(ApproveOpinionModel e) { if (e != null) { switch (FlowActionEnum) { case FlowActionEnum.Send: await CurrentService.SendAsync(FlowMasterAdapterModel, e); break; case FlowActionEnum.BackToSend: await CurrentService.BackToSendAsync(FlowMasterAdapterModel, e); break; case FlowActionEnum.Agree: await CurrentService.AgreeAsync(FlowMasterAdapterModel, e); break; case FlowActionEnum.Deny: await CurrentService.DenyAsync(FlowMasterAdapterModel, e); break; default: break; } dataGrid.RefreshGrid(); } else { } ShowApproveOpinionDialog = false; }
public async Task AgreeAsync(FlowMasterAdapterModel flowMasterAdapterModel, ApproveOpinionModel approveOpinionModel) { CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <WorkOrder>(context); CleanTrackingHelper.Clean <MyUser>(context); var thisLevel = flowMasterAdapterModel.ProcessLevel; (var flowUsers, var user) = await GetUsersDataAsync(flowMasterAdapterModel); if (CheckCurrentActionUser(flowUsers, user, flowMasterAdapterModel) == false) { return; } var flowUserCurrentLevel = flowUsers.Where(x => x.Level == flowMasterAdapterModel.ProcessLevel).ToList(); var currentUser = flowUserCurrentLevel.FirstOrDefault(x => x.MyUserId == user.Id); if (currentUser != null) { currentUser.Completion = true; } var remindUsers = flowUsers .Where(x => x.Level == flowMasterAdapterModel.ProcessLevel && x.Completion == false).ToList(); bool allProcessing = (remindUsers.Count() > 0) ? false : true; if (allProcessing) { #region 是否是最後一關關卡 var lastLevel = flowUsers.OrderByDescending(x => x.Level) .FirstOrDefault(); if (flowMasterAdapterModel.ProcessLevel == lastLevel.Level) { flowMasterAdapterModel.Status = 99; flowMasterAdapterModel.ProcessLevel++; #region 若不是直接申請,則需要同步更新來源紀錄的狀態碼 if (flowMasterAdapterModel.SourceType == FlowSourceTypeEnum.WorkOrder) { if (string.IsNullOrEmpty(flowMasterAdapterModel.SourceCode) == false) { var workOrder = await context.WorkOrder .AsNoTracking() .FirstOrDefaultAsync(x => x.Code == flowMasterAdapterModel.SourceCode); if (workOrder != null) { workOrder.Status = MagicHelper.WorkOrderStatus結案; context.Update(workOrder); await context.SaveChangesAsync(); } } } #endregion } else { #region 還有關卡要繼續審核 flowMasterAdapterModel.Status = 1; flowMasterAdapterModel.ProcessLevel++; CopyUserAutoCompletion(flowUsers, flowMasterAdapterModel.ProcessLevel); #endregion } #endregion } FindNextActionUser(flowUsers, flowMasterAdapterModel); await context.BulkUpdateAsync(flowUsers); await UpdateAsync(flowMasterAdapterModel); await AddHistoryRecord(user, flowMasterAdapterModel, $"{approveOpinionModel.Summary}", $"{approveOpinionModel.Comment}", true); if (thisLevel != flowMasterAdapterModel.ProcessLevel && flowMasterAdapterModel.Status != 99) { #region 產生收件匣紀錄 await NotifyInboxUsers(flowUsers, flowMasterAdapterModel, flowMasterAdapterModel.ProcessLevel); #endregion } CleanTrackingHelper.Clean <FlowMaster>(context); CleanTrackingHelper.Clean <FlowUser>(context); CleanTrackingHelper.Clean <WorkOrder>(context); CleanTrackingHelper.Clean <FlowHistory>(context); CleanTrackingHelper.Clean <MyUser>(context); }