private void ImportEvents( IWriteSession session, IProjectContext projectContext, IList <JsonEvent> events, INamespace @namespace) { var existingEvents = projectContext.Project.GetAllEvents().ToList(); CheckForDuplicates("events", events.Select(e => e.Name).ToList()); foreach (var evt in events) { var eventName = !string.IsNullOrWhiteSpace(evt.Name) ? evt.Name : null; var @event = _eventService.CreateEvent(session, projectContext, @namespace, eventName); var eventGroup = projectContext.Project.EventGroups.Items.FirstOrDefault(i => i.Name == evt.EventGroup) ?? projectContext.Project.EventGroups.Items.FirstOrDefault(); if ([email protected](eventGroup)) { _eventService.SetEventGroup(session, @event, eventGroup); } if (@namespace.Events.Items.GroupBy(e => e.EventId).Any(id => id.Count() > 1)) { _eventService.SetEventId(session, @event, existingEvents.FindFreeEventId()); } if (evt.Parameters != null) { CheckForDuplicates("event parameters", evt.Parameters.Select(p => p.Name).ToList()); foreach (var param in evt.Parameters) { var paramType = projectContext.TypeManager.FindType(param.Type); if (paramType == null) { _importProblems.Add($"Invalid parameter type '{param.Type}' for a parameter with name " + $"'{param.Name}' in event '{evt.Name}'"); continue; } var parameter = _eventService.AddParameter(session, projectContext, @event, paramType); if (!string.IsNullOrWhiteSpace(param.Name)) { SetParameterName(session, @event, parameter, param.Name); } } } existingEvents.Add(@event); } }