public void SetStatus(string userId, int creditRequestId, CreditRequestStatusInfo statusInfo, string message) { var creditRequest = _iUnitOfWork.CreditRequestRepository.Get(creditRequestId); //не выдали ли уже кредит if (creditRequest.CustomerCredits.Any()) { throw BankClientException.ThrowCannotSetStatus(); } var chiefRoleName = AppRoles.CreditDepartmentChief.ToString(); //не обработал ли заяку начальник if (!AuthManagerService.UserManager.IsInRole(userId, chiefRoleName)) { if (creditRequest.CreditRequestStatuses.Any(s => AuthManagerService.UserManager.IsInRole(s.AppUserId, chiefRoleName))) { throw BankClientException.ThrowCannotSetStatus(); } } var existingStatus = creditRequest.CreditRequestStatuses.FirstOrDefault(cs => cs.AppUserId == userId); if (existingStatus != null) { if (statusInfo == CreditRequestStatusInfo.None) { _iUnitOfWork.CreditRequestStatusRepository.Delete(existingStatus.Id); } else { existingStatus.Info = statusInfo; existingStatus.Message = message; } } else { creditRequest.CreditRequestStatuses.Add(new CreditRequestStatus() { AppUserId = userId, Info = statusInfo, Message = message }); } _iUnitOfWork.SaveChanges(); }