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 }
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); }
/// <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); }