(ActivityDto activity)
| 151 | } |
| 152 | |
| 153 | public async Task<Activity?> AddAsync(ActivityDto activity) |
| 154 | { |
| 155 | var existing = await _activityRepository.GetByNameAsync(activity.ActivityName); |
| 156 | var targetResources = new List<TargetResource>(); |
| 157 | |
| 158 | foreach (var targetResourceDto in activity.TargetResources ?? []) |
| 159 | { |
| 160 | var existingTarget = await GetTargetResourceByType(targetResourceDto.ResourceType) ?? targetResources.Find(tr => tr.ResourceType == targetResourceDto.ResourceType); |
| 161 | if (existingTarget == null) |
| 162 | { |
| 163 | existingTarget = new TargetResource |
| 164 | { |
| 165 | ResourceType = targetResourceDto.ResourceType, |
| 166 | Properties = targetResourceDto.Properties.Select(p => new TargetResourceProperty |
| 167 | { |
| 168 | PropertyName = p.PropertyName, |
| 169 | Description = p.Description |
| 170 | }).ToList() |
| 171 | }; |
| 172 | _targetResourceRepository.Add(existingTarget); |
| 173 | targetResources.Add(existingTarget); |
| 174 | } |
| 175 | else |
| 176 | { |
| 177 | foreach (var prop in targetResourceDto.Properties) |
| 178 | { |
| 179 | if (existingTarget.Properties.All(p => p.PropertyName != prop.PropertyName)) |
| 180 | { |
| 181 | var newProp = new TargetResourceProperty |
| 182 | { |
| 183 | PropertyName = prop.PropertyName, |
| 184 | Description = prop.Description, |
| 185 | TargetResourceId = existingTarget.Id |
| 186 | }; |
| 187 | _targetResourcePropertyRepository.Add(newProp); |
| 188 | } |
| 189 | } |
| 190 | _targetResourceRepository.Update(existingTarget); |
| 191 | } |
| 192 | |
| 193 | existing?.TargetResources.Add(existingTarget); |
| 194 | } |
| 195 | |
| 196 | if (existing is null) |
| 197 | { |
| 198 | existing = new Activity |
| 199 | { |
| 200 | Name = activity.ActivityName, |
| 201 | AuditCategory = activity.Category, |
| 202 | Service = activity.Service, |
| 203 | IsExcluded = false, |
| 204 | TargetResources = targetResources |
| 205 | }; |
| 206 | _activityRepository.Add(existing); |
| 207 | } |
| 208 | else |
| 209 | { |
| 210 | _activityRepository.Update(existing); |
no test coverage detected