public async Task <StateSet> GetStateSetAsync(String id, EntityHeader org, EntityHeader user) { var stateSet = await _stateSetRepo.GetStateSetAsync(id); await AuthorizeAsync(stateSet, AuthorizeResult.AuthorizeActions.Read, user, org); return(stateSet); }
public async Task <InvokeResult <DeviceWorkflow> > LoadFullDeviceWorkflowAsync(string id, EntityHeader org, EntityHeader user) { DeviceWorkflow deviceWorkflow = null; try { deviceWorkflow = await _deviceWorkflowRepo.GetDeviceWorkflowAsync(id); } catch (RecordNotFoundException) { return(InvokeResult <DeviceWorkflow> .FromErrors(ErrorCodes.CouldNotLoadDeviceWorkflow.ToErrorMessage($"WorkflowId={id}"))); } if (deviceWorkflow.Attributes == null) { deviceWorkflow.Attributes = new List <Models.Attribute>(); } if (deviceWorkflow.Inputs == null) { deviceWorkflow.Inputs = new List <WorkflowInput>(); } var result = new InvokeResult <DeviceWorkflow>(); foreach (var attribute in deviceWorkflow.Attributes) { if (attribute.AttributeType != null && attribute.AttributeType.Value == ParameterTypes.ValueWithUnit) { /* Will catch validation errors later, so just try to load */ if (!EntityHeader.IsNullOrEmpty(attribute.UnitSet)) { try { attribute.UnitSet.Value = await GetAttributeUnitSetAsync(attribute.UnitSet.Id, org, user); } catch (RecordNotFoundException) { result.Errors.Add(ErrorCodes.CouldNotLoadUnitSet.ToErrorMessage($"AttributeId={attribute.Id},UnitSetId={attribute.UnitSet.Id}")); } } } if (!EntityHeader.IsNullOrEmpty(attribute.StateSet)) { try { attribute.StateSet.Value = await GetStateSetAsync(attribute.StateSet.Id, org, user); } catch (RecordNotFoundException) { result.Errors.Add(ErrorCodes.CouldNotLoadStateSet.ToErrorMessage($"AttributeId={attribute.Id},StateSetId={attribute.StateSet.Id}")); } } } foreach (var input in deviceWorkflow.Inputs) { if (!EntityHeader.IsNullOrEmpty(input.UnitSet)) { try { input.UnitSet.Value = await GetAttributeUnitSetAsync(input.UnitSet.Id, org, user); } catch (RecordNotFoundException) { result.Errors.Add(ErrorCodes.CouldNotLoadUnitSet.ToErrorMessage($"InputId={input.Id},UnitSetId={input.UnitSet.Id}")); } } if (!EntityHeader.IsNullOrEmpty(input.StateSet)) { try { input.StateSet.Value = await GetStateSetAsync(input.StateSet.Id, org, user); } catch (RecordNotFoundException) { result.Errors.Add(ErrorCodes.CouldNotLoadStateSet.ToErrorMessage($"InputId={input.Id},StateSetId={input.StateSet.Id}")); } } } foreach (var inputCommand in deviceWorkflow.InputCommands) { if (inputCommand.Parameters != null) { foreach (var param in inputCommand.Parameters) { if (param.ParameterType.Value == ParameterTypes.State) { param.StateSet.Value = await _stateSetRepo.GetStateSetAsync(param.StateSet.Id); } } } } if (result.Successful) { return(InvokeResult <DeviceWorkflow> .Create(deviceWorkflow)); } return(result); }