private string GetDateLink(ActivityItemViewModel activityItem)
        {
            var url     = Url.Action("DownloadDocument", "DocumentModal", new { area = string.Empty, documentNumber = "{0}" });
            var docs    = activityItem.Documents;
            var builder = new StringBuilder();

            if (docs != null && docs.Any())
            {
                if (docs.Count > 1)
                {
                    builder.AppendLine(string.Format("<a href=\"#\" data-activityItem-id=\"{0}\">{1}</a>", activityItem.Id, activityItem.Date));
                    builder.AppendLine(string.Format("<div class=\"hide modalBody\" data-activityitem-popup=\"{0}\">", activityItem.Id));
                    builder.AppendLine("<ul>");
                    foreach (var doc in docs)
                    {
                        builder.AppendLine(string.Format("<li>Document: {0} <a name='documentLink' href=\"{1}\">(reference: {2})</a></li>", doc.Description, string.Format(url, doc.DocNumber), doc.DocNumber));
                    }

                    builder.AppendLine("</ul>");
                    builder.AppendLine("</div>");
                }
                else
                {
                    builder.AppendLine(string.Format("<a name='documentLink' href=\"{0}\">{1}</a>", string.Format(url, docs[0].DocNumber), activityItem.Date));
                }
            }
            else
            {
                builder.AppendLine(activityItem.Date);
            }

            return(builder.ToString());
        }
 private void AddActivity(ActivityItemViewModel activity)
 {
     //if (this.Activities.All(act => act.ActivityId != activity.ActivityId))
     //{
     //    this.Activities.Add(activity);
     //    this._activityItemsChangedSubject.OnNext(this.Activities);
     //}
 }
Пример #3
0
        private async Task SelectActivity(ActivityItemViewModel selectedActivity)
        {
            var parameters = new NavigationParameters();

            parameters.Add("SelectedActivity", selectedActivity);
            parameters.Add("ActionMode", ActionMode.Edit);

            await _navigationService.NavigateAsync(NavigationConstants.Activity, parameters);
        }
Пример #4
0
 internal static ActivityModel Get(ActivityItemViewModel activity)
 {
     return(new ActivityModel()
     {
         Id = activity.Id,
         Date = activity.Date.Date.Add(activity.Time),
         Description = activity.Description,
         Title = activity.Title,
         State = (int)activity.State,
     });
 }
Пример #5
0
        public override void OnNavigatedTo(INavigationParameters parameters)
        {
            ActionMode = (ActionMode)parameters["ActionMode"];

            if (ActionMode == ActionMode.Create)
            {
                SelectedActivity = new ActivityItemViewModel();
            }
            else
            {
                SelectedActivity = (ActivityItemViewModel)parameters["SelectedActivity"];
            }

            base.OnNavigatedTo(parameters);
        }
Пример #6
0
        public WorkflowDefinition(IEnumerable <DesignerItemViewModelBase> items, IEnumerable <ConnectorViewModel> connectors, ActivityItemViewModel startActivity)
        {
            var activities = new List <ActivityDefinition>();

            foreach (var i in items)
            {
                var activityDefinition = new ActivityDefinition();
                var activityInfo       = i as ActivityItemViewModel;
                activityDefinition.Id = i.Id;
                if (activityInfo != null)
                {
                    activityDefinition.Name     = activityInfo.ActivityName;
                    activityDefinition.Guard    = activityInfo.SelectedActivityGuardType.ToString();
                    activityDefinition.Settings = activityInfo.Settings.Select(s => new Setting()
                    {
                        Name  = s.Key,
                        Value = s.Value
                    }).ToArray();
                }
                else
                {
                    activityDefinition.Name = "UnknownActivity_" + i.Id;
                }
                activities.Add(activityDefinition);
            }
            Activities = activities.ToArray();
            var transitions = connectors.Select(c => new TransitionDefinition()
            {
                Id               = c.Id,
                ConditionText    = c.ConditionText ?? "true",
                SourceActivityId = IdMod(c.SourceConnectorInfo.DataItem),
                TargetActivityId = IdMod((c.SinkConnectorInfo as FullyCreatedConnectorInfo)?.DataItem)
            }).ToList();

            if (startActivity != null)
            {
                var startTransition = new TransitionDefinition()
                {
                    ConditionText    = "true",
                    SourceActivityId = -1,
                    TargetActivityId = startActivity.Id
                };
                long maxId = 0;
                if (transitions != null && transitions.Count > 0)
                {
                    maxId = transitions.Max(t => t.Id);
                }
                startTransition.Id = maxId + 1;
                transitions.Add(startTransition);
            }
            Transitions = transitions.ToArray();
            Settings    = new Setting[]
            {
                new Setting()
                {
                    Name  = "statemachinetype",
                    Value = "SomeStateMachineTypeClass"
                }
            };
            Name = "Registered Workflow 66";
        }
Пример #7
0
        public (IEnumerable <DesignerItemViewModelBase> items, IEnumerable <ConnectorViewModel> connectors) ToVM(DiagramViewModel dvm)
        {
            var dataItems = ActivityItems.Select(ai =>
            {
                Enum.TryParse <ActivityGuardType>(Workflow.Activities.First(adef => adef.Id == ai.ActivityId).Guard, out var selectedGuard);
                var avm = new ActivityItemViewModel(ai.ActivityId, dvm, ai.X, ai.Y)
                {
                    ActivityName = ai.ActivityName,
                    IconPath     = ai.IconPath,
                    SelectedActivityGuardType = selectedGuard,
                    Settings = (Workflow.Activities.First(a => a.Id == ai.ActivityId).Settings == null) ? (new System.Collections.ObjectModel.ObservableCollection <SettingInfo>()) : (new System.Collections.ObjectModel.ObservableCollection <SettingInfo>(Workflow.Activities.First(a => a.Id == ai.ActivityId).Settings?.Select(s => new SettingInfo()
                    {
                        Key = s.Name,
                        Value = s.Value
                    })))
                };
                return(avm);
            }).ToArray();

            dvm.WorkflowName = Workflow.Name;
            //dvm.WorkflowId = Workflow.Id;
            int.TryParse(Workflow.Id, out var wfId);
            dvm.WorkflowId          = wfId;
            dvm.WorkflowDescription = Workflow.Description;

            dvm.WorkflowSettings = new System.Collections.ObjectModel.ObservableCollection <SettingInfo>(Workflow.Settings.Select(s => new SettingInfo()
            {
                Key   = s.Name,
                Value = s.Value
            }));
            var connectors = new List <ConnectorViewModel>();

            foreach (var c in ConnectorItems)
            {
                if (c.SourceId == -1)
                {
                    continue;                   // start transition, specially handled
                }
                if (c.TargetId == -999)
                {
                    continue;                     //unfinished transition, ignore
                }
                var fcciSrc = new FullyCreatedConnectorInfo(dataItems.Where(di => di.Id == c.SourceId).FirstOrDefault(), c.SourceOrientation);
                var fcciTgt = new FullyCreatedConnectorInfo(dataItems.Where(di => di.Id == c.TargetId).FirstOrDefault(), c.TargetOrientation);
                var cvm     = new ConnectorViewModel(c.ConnectorId, fcciSrc.DataItem.Parent, fcciSrc, fcciTgt)
                {
                    SourceA          = c.SourceA,
                    SourceB          = c.SourceB,
                    EndPoint         = c.EndPoint,
                    Area             = c.Area,
                    ConnectionPoints = c.Points,
                    ConditionText    = Workflow.Transitions.FirstOrDefault(t => t.Id == c.ConnectorId)?.ConditionText
                };
                connectors.Add(cvm);
            }
            var vm = (dataItems, connectors);

            foreach (var di in dataItems)
            {
                foreach (var connector in connectors)
                {
                    var src = connector.SourceConnectorInfo;
                    var tgt = connector.SinkConnectorInfo as FullyCreatedConnectorInfo;

                    if (src.DataItem == di)
                    {
                        var orientation = src.Orientation;
                        switch (orientation)
                        {
                        case ConnectorOrientation.None:
                            throw new Exception("Bad Orientation found on connector source");

                        case ConnectorOrientation.Left:
                            di.LeftConnector = src;
                            break;

                        case ConnectorOrientation.Top:
                            di.TopConnector = src;
                            break;

                        case ConnectorOrientation.Right:
                            di.RightConnector = src;
                            break;

                        case ConnectorOrientation.Bottom:
                            di.BottomConnector = src;
                            break;

                        default:
                            break;
                        }
                    }
                    if (tgt.DataItem.Id == di.Id)
                    {
                        var orientation = tgt.Orientation;
                        switch (orientation)
                        {
                        case ConnectorOrientation.None:
                            throw new Exception("Bad Orientation found on connector target");

                        case ConnectorOrientation.Left:
                            di.LeftConnector = tgt;
                            break;

                        case ConnectorOrientation.Top:
                            di.TopConnector = tgt;
                            break;

                        case ConnectorOrientation.Right:
                            di.RightConnector = tgt;
                            break;

                        case ConnectorOrientation.Bottom:
                            di.BottomConnector = tgt;
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
            return(vm);
        }
Пример #8
0
        private DrawingboardDefinition(IEnumerable <DesignerItemViewModelBase> items, IEnumerable <ConnectorViewModel> connectors, ActivityItemViewModel startActivity)
        {
            Workflow = new WorkflowDefinition(items, connectors, startActivity);
            var activityItems = items.Select(i => i as ActivityItemViewModel).Where(i => i != null);

            ActivityItems = activityItems.Select(i => new DrawingboardActivityItem()
            {
                TypeName          = i.GetType().FullName,
                IconPath          = i.IconPath,
                ActivityName      = i.ActivityName,
                X                 = i.Left,
                Y                 = i.Top,
                ActivityId        = WorkflowDefinition.IdMod(i),
                BottomConnectorId = i.BottomConnector?.DataItem?.Id ?? -1,
                LeftConnectorId   = i.LeftConnector?.DataItem?.Id ?? -1,
                RightConnectorId  = i.RightConnector?.DataItem?.Id ?? -1,
                TopConnectorId    = i.TopConnector?.DataItem?.Id ?? -1
            }).ToArray();
            ConnectorItems = connectors.Select(c => new DrawingboardConnectorItem()
            {
                ConnectorId       = c.Id,
                SourceB           = c.SourceB,
                Area              = c.Area,
                SourceA           = c.SourceA,
                EndPoint          = c.EndPoint,
                Points            = c.ConnectionPoints,
                SourceOrientation = c.SourceConnectorInfo.Orientation,
                TargetOrientation = c.SinkConnectorInfo?.Orientation ?? ConnectorOrientation.None,
                SourceId          = WorkflowDefinition.IdMod(c.SourceConnectorInfo.DataItem),
                TargetId          = WorkflowDefinition.IdMod((c.SinkConnectorInfo as FullyCreatedConnectorInfo)?.DataItem),
            }).ToArray();
        }