Beispiel #1
0
        public void CreateAsync_NewWorkflowNull_ThrowArgumentNullException()
        {
            WrikeWorkflow newWorkflow = null;

            var ex = Assert.ThrowsAsync <ArgumentNullException>(() => TestConstants.WrikeClient.Workflows.CreateAsync(newWorkflow));

            Assert.AreEqual("newWorkflow", ex.ParamName);
        }
        public void CreateAsync_ShouldAddNewWorkflowWithName()
        {
            var newWorkflow     = new WrikeWorkflow($"NewWorkflow#{DateTime.Now.ToString("yyyyMMddhhmmss")}");
            var createdWorkflow = WrikeClientFactory.GetWrikeClient().Workflows.CreateAsync(newWorkflow).Result;

            Assert.IsNotNull(createdWorkflow);
            Assert.AreEqual(newWorkflow.Name, createdWorkflow.Name);
            Assert.IsNotNull(createdWorkflow.CustomStatuses);
            Assert.GreaterOrEqual(createdWorkflow.CustomStatuses.Count, 0);

            //TODO: test other parameters
        }
Beispiel #3
0
        async Task <WrikeWorkflow> IWrikeWorkflowsClient.CreateAsync(WrikeWorkflow newWorkflow)
        {
            if (newWorkflow == null)
            {
                throw new ArgumentNullException(nameof(newWorkflow));
            }

            var postDataBuilder = new WrikeFormUrlEncodedContentBuilder()
                                  .AddParameter("name", newWorkflow.Name);

            var response = await SendRequest <WrikeWorkflow>("workflows", HttpMethods.Post, postDataBuilder.GetContent()).ConfigureAwait(false);

            return(GetReponseDataFirstItem(response));
        }
        public static async Task ExtensionSamples(WrikeClient client)
        {
            var newWorkflow = new WrikeWorkflow("Sinan's Extension Workflow")
            {
                CustomStatuses = new List <WrikeCustomStatus>
                {
                    new WrikeCustomStatus
                    {
                        Color  = WrikeColor.CustomStatusColor.Blue,
                        Group  = WrikeTaskStatus.Active,
                        Hidden = false,
                        Name   = "New"
                    },
                    new WrikeCustomStatus
                    {
                        Color  = WrikeColor.CustomStatusColor.Brown,
                        Group  = WrikeTaskStatus.Active,
                        Hidden = false,
                        Name   = "In Progress(MaterialCollector)"
                    },
                    new WrikeCustomStatus
                    {
                        Color  = WrikeColor.CustomStatusColor.DarkBlue,
                        Group  = WrikeTaskStatus.Active,
                        Hidden = false,
                        Name   = "Collection Completed"
                    }
                    ,
                    new WrikeCustomStatus
                    {
                        Color  = WrikeColor.CustomStatusColor.DarkCyan,
                        Group  = WrikeTaskStatus.Active,
                        Hidden = false,
                        Name   = "Assigned To Content Manager"
                    },
                    new WrikeCustomStatus
                    {
                        Color  = WrikeColor.CustomStatusColor.DarkBlue,
                        Group  = WrikeTaskStatus.Active,
                        Hidden = false,
                        Name   = "In Progress(Content Manager)"
                    },
                    new WrikeCustomStatus
                    {
                        Color  = WrikeColor.CustomStatusColor.Gray,
                        Group  = WrikeTaskStatus.Completed,
                        Hidden = false,
                        Name   = "Completed"
                    },
                    new WrikeCustomStatus
                    {
                        Color  = WrikeColor.CustomStatusColor.DarkBlue,
                        Group  = WrikeTaskStatus.Completed,
                        Hidden = false,
                        Name   = "BookAndAdApproved"
                    }
                }
            };

            newWorkflow = await client.Workflows.CreateWorkflowWithCustomStatusesAsync(newWorkflow);
        }
Beispiel #5
0
        /// <summary>
        /// Creates new workflow with given customStatuses, by calling create and update methods
        /// </summary>
        /// <param name="wrikeWorkflowsClient">workflow client</param>
        /// <param name="newWorkflow">new workflow to be created with customStatuses set</param>
        /// See <see href="https://developers.wrike.com/documentation/api/methods/modify-workflow"/>
        /// See <see href="https://developers.wrike.com/documentation/api/methods/create-workflow"/>
        public static async Task <WrikeWorkflow> CreateWorkflowWithCustomStatusesAsync(this IWrikeWorkflowsClient wrikeWorkflowsClient, WrikeWorkflow newWorkflow)
        {
            if (newWorkflow == null)
            {
                throw new ArgumentNullException(nameof(newWorkflow));
            }

            if (newWorkflow.CustomStatuses == null)
            {
                throw new ArgumentNullException("newWorkflow.CustomStatuses");
            }

            if (newWorkflow.CustomStatuses.Count == 0)
            {
                throw new ArgumentException("value can not be empty", "newWorkflow.CustomStatuses");
            }

            if (newWorkflow.CustomStatuses.Any(cs => cs.Id != null))
            {
                throw new ArgumentException("CustomStatuses can not have Id property set", "newWorkflow.CustomStatuses");
            }

            var createdWorkflow = await wrikeWorkflowsClient.CreateAsync(newWorkflow).ConfigureAwait(false);

            //created workflow will have default active and completed statuses, if newWorkflow.CustomStatuses
            //have same items update the default ones

            var firstActiveCustomStatus =
                newWorkflow.CustomStatuses.FirstOrDefault(cs => cs.Group == WrikeTaskStatus.Active);

            if (firstActiveCustomStatus != null)
            {
                firstActiveCustomStatus.Id    = createdWorkflow.CustomStatuses.FirstOrDefault(cs => cs.Group == WrikeTaskStatus.Active).Id;
                firstActiveCustomStatus.Group = null;
            }

            var firstCompletedCustomStatus = newWorkflow.CustomStatuses.FirstOrDefault(cs => cs.Group == WrikeTaskStatus.Completed);

            if (firstActiveCustomStatus != null)
            {
                firstCompletedCustomStatus.Id    = createdWorkflow.CustomStatuses.FirstOrDefault(cs => cs.Group == WrikeTaskStatus.Completed).Id;
                firstCompletedCustomStatus.Group = null;
            }

            foreach (var customStatus in newWorkflow.CustomStatuses)
            {
                createdWorkflow = await wrikeWorkflowsClient.UpdateAsync(
                    createdWorkflow.Id, customStatus : customStatus).ConfigureAwait(false);
            }
            return(createdWorkflow);
        }