MCPcopy Create free account
hub / github.com/FrodeHus/EntraRoleReaper / AddAsync

Method AddAsync

server/Services/ActivityService.cs:153–215  ·  view source on GitHub ↗
(ActivityDto activity)

Source from the content-addressed store, hash-verified

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);

Callers 5

SaveActivitiesAsyncMethod · 0.45
SeedActivitiesAsyncMethod · 0.45
GetCurrentTenantAsyncMethod · 0.45
ImportAsyncMethod · 0.45
SetExclusionAsyncMethod · 0.45

Calls 3

AddMethod · 0.80
UpdateMethod · 0.80
GetByNameAsyncMethod · 0.45

Tested by

no test coverage detected