public static void Consume() { // For getting the raw XML SecurityHandler.Instance.CollectRawRequestResponse = true; CRMHandler.Instance.CollectRawRequestResponse = true; ProjectManagementHandler.Instance.CollectRawRequestResponse = true; if (SecurityHandler.Instance.TryAuthenticate(out IEnumerable <string> messages)) { RawMessageHelper.Instance.SaveRecentRequestResponsePair("c:\\temp\\TryAuthenticate.txt"); if (Logger.IsInfoEnabled) { Logger.Info("Sucessfully authenticated on transactional API"); } var newProject = new Project { ID = Guid.NewGuid(), AccountManagerID = 523, ProjectManagerID = 523, TypeID = 249, StartDate = DateTime.Today, StageID = 0, Name = "TimeLog test implementering", CustomerID = 667, //Original value 709 does not exist Action = DataAction.Created, BudgetAmountExpenses = 0, BudgetAmountTravelExpenses = 0, BudgetWorkAmountFixedPriceProject = 0, BudgetWorkAmountFixedPriceTasks = 0, BudgetWorkAmountTimeAndMaterial = 0, BudgetWorkHoursFixedPriceProject = 0, BudgetWorkHoursFixedPriceTasks = 0, BudgetWorkHoursTimeAndMaterial = 0, CategoryID = 0, CurrencyID = 0, MainContractID = 1, // ONLY FOR CREATION! TimeMaterial = 1, FixedPrice = 2, TimeMaterialAccountEndBalancing = 3, TimeMaterialAccountPeriodicBalancing = 4, PrepaidServices = 5, RevenueReqPerTask = 6, ContinuousService = 7, ContinuousItemInvoicing = 8 DepartmentHandledByID = 0, DepartmentOrderedByID = 0, //Description = string.Empty, EndDate = DateTime.Today.AddDays(30), ExchangeRate = 0, No = "MIROEBS", LegalEntityID = 0, PriceGroupID = 0, PurchaseOrderNumber = "42", IsInternalProject = true }; var createProjectResult = ProjectManagementHandler.Instance.ProjectManagementClient.CreateProject(newProject, ProjectManagementHandler.Instance.Token); RawMessageHelper.Instance.SaveRecentRequestResponsePair("c:\\temp\\CreateProject.txt"); if (createProjectResult.ResponseState != ExecutionStatus.Success) { foreach (var apiMessage in createProjectResult.Messages) { if (Logger.IsErrorEnabled) { Logger.Error(apiMessage.Message); } } return; } var project = createProjectResult.Return.FirstOrDefault(); if (project == null || project.Status != ExecutionStatus.Success) { if (Logger.IsWarnEnabled) { Logger.Warn("No project created"); } return; } if (Logger.IsDebugEnabled) { Logger.DebugFormat("Project created (ID: {0})", project.Item.ProjectID); } project.Item.Name = "TimeLog test implementering updated"; var updateProjectResult = ProjectManagementHandler.Instance.ProjectManagementClient.UpdateProject(project.Item, ProjectManagementHandler.Instance.Token); if (updateProjectResult.ResponseState != ExecutionStatus.Success) { foreach (var apiMessage in updateProjectResult.Messages) { if (Logger.IsErrorEnabled) { Logger.Error(apiMessage.Message); } } return; } project = updateProjectResult.Return.FirstOrDefault(); if (project == null || project.Status != ExecutionStatus.Success) { if (Logger.IsWarnEnabled) { Logger.Warn("No project updated"); } return; } if (Logger.IsDebugEnabled) { Logger.DebugFormat("Project updated (ID: {0})", project.Item.ProjectID); } var task1 = new Task { Action = DataAction.Created, AdditionalTextIsRequired = false, BudgetAmount = 100000, BudgetHours = 100, Description = "Test task description", EndDate = DateTime.Now.AddMonths(6), ID = Guid.NewGuid(), Link = "https://login.timelog.com", Name = "Test task", No = "TASK001", StartDate = DateTime.Now, ProjectSubContractID = 0, // 0 = Inherit from project default contract State = new TaskState { IsActive = true }, TaskID = -1, TaskTypeID = 328 }; task1.ExternalKeys = new[] { new ExternalSystemContext { SystemName = "OEBS", ExternalID = "9988" } }; task1.IsExternalKeysLoaded = true; var createTaskResult = ProjectManagementHandler.Instance.ProjectManagementClient.CreateTask(task1, project.Item.ProjectID, ProjectManagementHandler.Instance.Token); if (createTaskResult.ResponseState != ExecutionStatus.Success) { foreach (var apiMessage in createTaskResult.Messages) { if (Logger.IsErrorEnabled) { Logger.Error(apiMessage.Message); } } return; } var task = createTaskResult.Return.FirstOrDefault(); if (task == null || task.Status != ExecutionStatus.Success) { if (Logger.IsWarnEnabled) { Logger.Warn("No task created"); } return; } if (Logger.IsDebugEnabled) { Logger.DebugFormat("Task created (ID: {0})", task.Item.TaskID); } var task2 = new Task { Action = DataAction.Created, AdditionalTextIsRequired = false, BudgetAmount = 100000, BudgetHours = 100, Description = "Test subtask description", EndDate = DateTime.Now.AddMonths(6), ID = Guid.NewGuid(), Link = "https://login.timelog.com", Name = "Test task", No = "TASK002", StartDate = DateTime.Now, ProjectSubContractID = 0, // 0 = Inherit from parent task State = new TaskState { IsActive = true }, TaskID = -1, TaskTypeID = 328 }; var createTask2Result = ProjectManagementHandler.Instance.ProjectManagementClient.CreateSubTask(task2, task.Item.TaskID, task.Item.Details.ProjectHeader.ID, ProjectManagementHandler.Instance.Token); if (createTask2Result.ResponseState != ExecutionStatus.Success) { foreach (var apiMessage in createTask2Result.Messages) { if (Logger.IsErrorEnabled) { Logger.Error(apiMessage.Message); } } return; } var task2Return = createTask2Result.Return.FirstOrDefault(); if (task2Return == null || task2Return.Status != ExecutionStatus.Success) { if (Logger.IsWarnEnabled) { Logger.Warn("No task created"); } return; } if (Logger.IsDebugEnabled) { Logger.DebugFormat("Task created (ID: {0})", task2Return.Item.TaskID); } var getTaskByIdResult = ProjectManagementHandler.Instance.ProjectManagementClient.GetTaskById(task.Item.ID, ProjectManagementHandler.Instance.Token); if (getTaskByIdResult.ResponseState != ExecutionStatus.Success) { foreach (var apiMessage in createTask2Result.Messages) { if (Logger.IsErrorEnabled) { Logger.Error(apiMessage.Message); } } return; } foreach (var taskItem in getTaskByIdResult.Return) { if (Logger.IsDebugEnabled) { Logger.DebugFormat("{0} > {1}", taskItem.Details.WBS, taskItem.Name); } } } else { if (Logger.IsWarnEnabled) { Logger.Warn("Failed to authenticate to transactional API"); Logger.Warn(string.Join(",", messages)); } } }
public static void Consume() { // For getting the raw XML SecurityHandler.Instance.CollectRawRequestResponse = true; CRMHandler.Instance.CollectRawRequestResponse = true; ProjectManagementHandler.Instance.CollectRawRequestResponse = true; if (SecurityHandler.Instance.TryAuthenticate(out IEnumerable <string> messages)) { RawMessageHelper.Instance.SaveRecentRequestResponsePair("c:\\temp\\TryAuthenticate.txt"); if (Logger.IsInfoEnabled) { Logger.Info("Sucessfully authenticated on transactional API"); } // Get a customer var customersResult = CRMHandler.Instance.CRMClient.GetCustomersByNamePaged( "Timelog", false, false, 1, 10, CRMHandler.Instance.Token); RawMessageHelper.Instance.SaveRecentRequestResponsePair("c:\\temp\\GetCustomersByNamePaged.txt"); if (customersResult.ResponseState == ExecutionStatus.Success) { var customer = customersResult.Return.FirstOrDefault(); if (customer != null) { var customerId = customer.ID; var projectGuid = Guid.NewGuid(); var taskGuid = Guid.NewGuid(); var project = new Project { ID = projectGuid, Name = "My API Test Project", CustomerID = customerId, TypeID = 1, MainContractID = 1 }; var projectResult = ProjectManagementHandler.Instance.ProjectManagementClient.CreateProject(project, ProjectManagementHandler.Instance.Token); RawMessageHelper.Instance.SaveRecentRequestResponsePair("c:\\temp\\CreateProject.txt"); if (projectResult.ResponseState == TransactionalAPI.SDK.ProjectManagementService.ExecutionStatus.Success) { if (Logger.IsInfoEnabled) { Logger.Info("Project created"); } project = projectResult.Return.FirstOrDefault()?.Item; var task = new Task { ID = taskGuid, Name = "First task" }; var taskResult = ProjectManagementHandler.Instance.ProjectManagementClient.CreateTask( task, project !.ProjectID, ProjectManagementHandler.Instance.Token); RawMessageHelper.Instance.SaveRecentRequestResponsePair("c:\\temp\\CreateTask.txt"); if (taskResult.ResponseState == TransactionalAPI.SDK.ProjectManagementService.ExecutionStatus.Success) { if (Logger.IsInfoEnabled) { Logger.Info("Task created"); } task = taskResult.Return.FirstOrDefault().Item; var subtask = new Task { ID = Guid.NewGuid(), Name = "First sub-task", ProjectSubContractID = project.MainContractID }; taskResult = ProjectManagementHandler.Instance.ProjectManagementClient.CreateSubTask( subtask, task.TaskID, project.ProjectID, ProjectManagementHandler.Instance.Token); RawMessageHelper.Instance.SaveRecentRequestResponsePair("c:\\temp\\CreateSubTask.txt"); if (taskResult.ResponseState == TransactionalAPI.SDK.ProjectManagementService.ExecutionStatus.Success) { if (Logger.IsInfoEnabled) { Logger.Info("Sub-Task created"); } } else { foreach (var apiMessage in taskResult.Messages) { if (Logger.IsErrorEnabled) { Logger.Error(apiMessage.Message); } } } } } else { foreach (var apiMessage in projectResult.Messages) { if (Logger.IsErrorEnabled) { Logger.Error(apiMessage.Message); } } } } else { if (Logger.IsWarnEnabled) { Logger.Warn("No customer found"); } } } else { foreach (var apiMessage in customersResult.Messages) { if (Logger.IsErrorEnabled) { Logger.Error(apiMessage.Message); } } } } else { if (Logger.IsWarnEnabled) { Logger.Warn("Failed to authenticate to transactional API"); Logger.Warn(string.Join(",", messages)); } } }