public SingleObjectModel ProcessesCheckList(string projectUID)
        {
            try {
                var project = Project.Parse(projectUID);

                FixedList <ProjectProcess> result = ModelingServices.ProcessesCheckList(project);

                return(new SingleObjectModel(this.Request, result.ToResponse(),
                                             typeof(WhatIfResult).FullName));
            } catch (Exception e) {
                throw base.CreateHttpException(e);
            }
        }
        public SingleObjectModel WhatIfReactivated(string projectUID, string activityUID)
        {
            try {
                var project = Project.Parse(projectUID);

                Activity activity = project.GetActivity(activityUID);

                WhatIfResult result = ModelingServices.WhatIfReactivated(activity);

                return(new SingleObjectModel(this.Request, result.ToResponse(),
                                             typeof(WhatIfResult).FullName));
            } catch (Exception e) {
                throw base.CreateHttpException(e);
            }
        }
        public SingleObjectModel WhatIfCreatedFromEvent(string projectUID,
                                                        [FromBody] object body)
        {
            try {
                base.RequireBody(body);

                var bodyAsJson = JsonObject.Parse(body);

                var activityModel = bodyAsJson.Get <Activity>("activityTemplateUID");
                var eventDate     = bodyAsJson.Get <DateTime>("eventDate", DateTime.Today);

                var project = Project.Parse(projectUID);

                WhatIfResult result = ModelingServices.WhatIfCreatedFromEvent(activityModel, project, eventDate);

                return(new SingleObjectModel(this.Request, result.ToResponse(),
                                             typeof(WhatIfResult).FullName));
            } catch (Exception e) {
                throw base.CreateHttpException(e);
            }
        }
        public SingleObjectModel WhatIfCompleted(string projectUID, string activityUID,
                                                 [FromBody] object body)
        {
            try {
                base.RequireBody(body);
                var bodyAsJson = JsonObject.Parse(body);

                var project = Project.Parse(projectUID);

                Activity activity = project.GetActivity(activityUID);

                DateTime completedDate = bodyAsJson.Get <DateTime>("completedDate", DateTime.Today);

                WhatIfResult result = ModelingServices.WhatIfCompleted(activity, completedDate, true);

                return(new SingleObjectModel(this.Request, result.ToResponse(),
                                             typeof(WhatIfResult).FullName));
            } catch (Exception e) {
                throw base.CreateHttpException(e);
            }
        }
        public SingleObjectModel UpdateAllProjectProcessesWithLastChanges(string projectUID)
        {
            try {
                var project = Project.Parse(projectUID);

                var result = ModelingServices.ProcessesCheckList(project);

                foreach (var process in result)
                {
                    Activity startActivity = project.GetActivity(process.StartActivity.UID);

                    var updater = new ProcessUpdater(startActivity);

                    updater.UpdateWithLastProcessChanges();
                }

                return(new SingleObjectModel(this.Request, result.ToResponse(),
                                             typeof(WhatIfResult).FullName));
            } catch (Exception e) {
                throw base.CreateHttpException(e);
            }
        }