Exemple #1
0
        public async Task AddDeviceRepair(DeviceRepairInputDto input)
        {
            var userId = ((UserIdentity)User.Identity).UserId;

            var user = await db.UserDetails.Include(m => m.User).SingleOrDefaultAsync(m => m.Id == userId && !m.IsDelete);

            if (user == null)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "无权操作权限"
                    }))
                });
            }

            if (!await db.Devices.AnyAsync(m => m.Id == input.DeviceId && !m.IsDelete && !m.IsScrap && m.DepartmentId == user.User.DepartmentId))
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "该设备不存在或已报废、无操作权限"
                    }))
                });
            }

            if (await db.DeviceRepairs.AnyAsync(m => m.DeviceId == input.DeviceId && m.ApprovalType != EApprovalType.Completed))
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "该设备已在维修"
                    }))
                });
            }

            var related = await db.RelatedApprovals.SingleOrDefaultAsync(m => m.RelatedKey == "DeviceRepair");

            if (related == null)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "设备报修申请未绑定审批流,添加失败"
                    }))
                });
            }

            var approval = await db.Approvals.Where(m => m.Key == related.ApprovalKey).ToListAsync();

            if (approval == null && approval.Count <= 0)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = related.ApprovalKey + "该审批流不存在,添加失败"
                    }))
                });
            }

            var data = new DeviceRepair()
            {
                Id            = IdentityManager.NewId(),
                ApprovalType  = EApprovalType.UnderReview,
                Desc          = input.Desc,
                DeviceId      = input.DeviceId,
                UserId        = userId,
                IsDelete      = false,
                ApprovalKey   = related.ApprovalKey,
                ApprovalIndex = 0
            };

            db.DeviceRepairs.Add(data);

            var userTypeKey = await db.Approvals.SingleOrDefaultAsync(m => m.Deis == 1 && m.Key == data.ApprovalKey);

            if (userTypeKey != null)
            {
                db.DeviceRepairApprovals.Add(new DeviceRepairApproval
                {
                    Id             = IdentityManager.NewId(),
                    DeviceRepairId = data.Id,
                    IsApproval     = false,
                    UserTypeKey    = userTypeKey.UserTypeKey,
                    ApprovalIndex  = 1
                });
            }
            else
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = data.ApprovalKey + "审批流异常"
                    }))
                });
            }

            if (await db.SaveChangesAsync() <= 0)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "添加失败"
                    }))
                });
            }
        }
Exemple #2
0
        public async Task UpdateRepairApprovalType(DeviceRepairInputDto input)
        {
            var userId = ((UserIdentity)User.Identity).UserId;
            var token  = ((UserIdentity)User.Identity).Token;

            var userTypeKeys = token.UserTypeKey;

            //var userId = 42966847102676992;

            var user = await db.UserDetails.Include(m => m.User).SingleOrDefaultAsync(m => m.Id == userId && !m.IsDelete);

            if (user == null)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "无权操作权限"
                    }))
                });
            }

            var data = await db.DeviceRepairs.Include(m => m.Device).SingleOrDefaultAsync(m => m.Id == input.DeviceRepairId && !m.IsDelete && !m.Device.IsScrap);

            if (data == null)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "该设备报修信息不存在或已报废、无操作权限"
                    }))
                });
            }

            if (data.ApprovalType == EApprovalType.Rejected)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "该订单已被驳回"
                    }))
                });
            }

            var approval = await db.Approvals.Where(m => m.Key == data.ApprovalKey).ToListAsync();

            if (approval == null && approval.Count <= 0)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = data.ApprovalKey + "该审批流不存在,请重新提交申请"
                    }))
                });
            }

            var index = data.ApprovalIndex + 1;

            var maxIndex = approval.Max(m => m.Deis);

            var userApproval = approval.SingleOrDefault(m => m.Deis == index);

            if (userApproval != null && input.ApprovalType == null)
            {
                if (!userTypeKeys.Contains(userApproval.UserTypeKey))
                {
                    //}
                    //if (userApproval.UserTypeKey != token.UserTypeKey)
                    //{
                    throw new HttpResponseException(new HttpResponseMessage()
                    {
                        Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                        {
                            Code = EExceptionType.Implement, Message = data.ApprovalKey + "无权操作"
                        }))
                    });
                }
                else
                {
                    data.ApprovalIndex += 1;

                    data.ApprovalType = EApprovalType.InExecution;

                    //var deviceRepairApproval = await db.DeviceRepairApprovals.SingleOrDefaultAsync(m => m.UserTypeKey == token.UserTypeKey && m.ApprovalIndex == index && m.DeviceRepairId == data.Id);

                    var deviceRepairApproval = await db.DeviceRepairApprovals.SingleOrDefaultAsync(m => userTypeKeys.Contains(m.UserTypeKey) && m.ApprovalIndex == index && m.DeviceRepairId == data.Id);

                    if (deviceRepairApproval == null)
                    {
                        throw new HttpResponseException(new HttpResponseMessage()
                        {
                            Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                            {
                                Code = EExceptionType.Implement, Message = data.ApprovalKey + "审批流程异常"
                            }))
                        });
                    }

                    deviceRepairApproval.IsApproval = true;
                    deviceRepairApproval.UserId     = token.UserId;

                    var userTypeKey = approval.SingleOrDefault(m => m.Deis == index + 1);

                    if (userTypeKey != null)
                    {
                        db.DeviceRepairApprovals.Add(new DeviceRepairApproval
                        {
                            Id             = IdentityManager.NewId(),
                            DeviceRepairId = data.Id,
                            IsApproval     = false,
                            UserTypeKey    = userTypeKey.UserTypeKey,
                            ApprovalIndex  = index + 1
                        });
                    }

                    if (maxIndex == data.ApprovalIndex)
                    {
                        data.ApprovalType = EApprovalType.Reviewed;
                    }
                }
            }
            else if (maxIndex == data.ApprovalIndex && input.ApprovalType == null)
            {
                data.ApprovalType = EApprovalType.Reviewed;

                var device = await db.Devices.SingleOrDefaultAsync(m => m.Id == data.DeviceId && !m.IsDelete && !m.IsRepair);

                if (device != null)
                {
                    device.IsRepair = true;
                }
                else
                {
                    throw new HttpResponseException(new HttpResponseMessage()
                    {
                        Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                        {
                            Code = EExceptionType.Implement, Message = data.DeviceId + "不存在或已报废"
                        }))
                    });
                }
            }
            else if (input.ApprovalType != null)
            {
                data.ApprovalType = (EApprovalType)input.ApprovalType;

                if (data.ApprovalType == EApprovalType.Reviewed)
                {
                    var device = await db.Devices.SingleOrDefaultAsync(m => m.Id == data.DeviceId && !m.IsDelete && !m.IsScrap);

                    if (device != null)
                    {
                        device.IsRepair = true;
                    }
                    else
                    {
                        throw new HttpResponseException(new HttpResponseMessage()
                        {
                            Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                            {
                                Code = EExceptionType.Implement, Message = data.DeviceId + "不存在或已报废"
                            }))
                        });
                    }
                }
                else if (data.ApprovalType == EApprovalType.Completed)
                {
                    var device = await db.Devices.SingleOrDefaultAsync(m => m.Id == data.DeviceId && !m.IsDelete && !m.IsScrap);

                    if (device != null)
                    {
                        device.IsRepair = false;
                    }
                    else
                    {
                        throw new HttpResponseException(new HttpResponseMessage()
                        {
                            Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                            {
                                Code = EExceptionType.Implement, Message = data.DeviceId + "不存在或已报废"
                            }))
                        });
                    }
                }
                else if (data.ApprovalType == EApprovalType.No)
                {
                    var device = await db.Devices.SingleOrDefaultAsync(m => m.Id == data.DeviceId && !m.IsDelete && !m.IsScrap);

                    if (device != null)
                    {
                        device.IsScrap = true;
                    }
                    else
                    {
                        throw new HttpResponseException(new HttpResponseMessage()
                        {
                            Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                            {
                                Code = EExceptionType.Implement, Message = data.DeviceId + "不存在或已报废"
                            }))
                        });
                    }
                }
            }

            if (await db.SaveChangesAsync() <= 0)
            {
                throw new HttpResponseException(new HttpResponseMessage()
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new ResponseApi()
                    {
                        Code = EExceptionType.Implement, Message = "更新失败"
                    }))
                });
            }
        }