public static ComponentType CreateRandomComponentType(Guid accountId) { var guid = Guid.NewGuid().ToString(); using (var dispatcherContext = DispatcherContext.Create()) { var data = new GetOrCreateComponentTypeRequestData() { DisplayName = "display name " + guid, SystemName = "sysName " + guid }; var type = dispatcherContext.ComponentTypeService.GetOrCreateComponentType(accountId, data); return(type); } }
public ComponentType GetOrCreateComponentType( Guid accountId, GetOrCreateComponentTypeRequestData data) { if (data == null) { throw new ArgumentNullException("data"); } if (data.DisplayName == null) { data.DisplayName = data.SystemName; } if (data.SystemName == null) { data.SystemName = data.DisplayName; } if (string.IsNullOrEmpty(data.SystemName)) { throw new UserFriendlyException("Не задано системное имя типа компонента"); } var context = Context.GetAccountDbContext(accountId); var repository = context.GetComponentTypeRepository(); var lockObject = LockObject.ForAccount(accountId); lock (lockObject) { var result = repository.GetOneOrNullBySystemName(data.SystemName); if (result == null) { // Проверим лимит var checker = AccountLimitsCheckerManager.GetCheckerForAccount(accountId); var limitCheckResult = checker.CheckMaxComponentTypes(context); if (!limitCheckResult.Success) { throw new OverLimitException(limitCheckResult.Message); } result = repository.Add(data.DisplayName, data.SystemName); checker.RefreshComponentTypesCount(); } return(result); } }
public GetOrCreateComponentTypeResponse GetOrCreateComponentType(Guid accountId, GetOrCreateComponentTypeRequestData data) { var request = GetRequest <GetOrCreateComponentTypeRequest>(accountId); request.Data = data; var dispatcher = DispatcherHelper.GetDispatcherService(); return(dispatcher.GetOrCreateComponentType(request)); }