public IEnumerable <Actor> Handle(ActorsByDiagramQuery query)
        {
            var actors = _context.Actors
                         .Include(a => a.Contents)
                         .Where(a => a.UseCaseDiagram.Id == query.DiagramId &&
                                (!query.Version.HasValue ||
                                 a.Version == query.Version.Value))
                         .ToList();

            return(actors);
        }
        public CreateUseCaseDiagramNewVersionCommand Convert(UseCaseDiagram input)
        {
            var result = new CreateUseCaseDiagramNewVersionCommand();

            var actorsQuery = new ActorsByDiagramQuery {
                DiagramId = input.Id, Version = input.Version
            };
            var actors = _actorsByDiagramQueryHandler.Handle(actorsQuery);

            var useCasesQuery = new UseCasesByDiagramQuery {
                DiagramId = input.Id, Version = input.Version
            };
            var useCases = _useCasesByDiagramQueryHandler.Handle(useCasesQuery);

            result.Actors   = actors.Select(FromModel);
            result.UseCases = useCases.Select(FromModel);
            result.Contents = input.Contents.Select(c => new UseCaseDiagramContentItem
            {
                Locale = c.Locale,
                Name   = c.Name
            });
            result.PackageId         = input.SpecificationItem.PackageId;
            result.EntitiesRelations = input.EntitiesRelations.Select(r => new UseCaseEntitiesRelationItem
            {
                Contents = r.Contents.Select(c => new UseCaseEntitiesRelationContent
                {
                    Description = c.Description,
                    Locale      = c.Locale
                }),
                SourceId = r.SourceId,
                TargetId = r.TargetId
            });
            result.Id = input.Id;
            result.UseCasesRelations = input.UseCasesRelations.Select(r => new UseCasesRelationItem
            {
                SourceId = r.SourceId,
                TargetId = r.TargetId,
                Type     = r.Type
            });

            result.PackageId = input.SpecificationItem.PackageId;

            return(result);
        }