Example #1
0
        public IndividualTicketFieldResponse CreateTicketField(TicketField ticketField)
        {
            var body = new
                           {
                               ticket_field = new
                                                  {
                                                      type = ticketField.Type,
                                                      title = ticketField.Title
                                                  }
                           };

            var res = GenericPost<IndividualTicketFieldResponse>("ticket_fields.json", body);
            return res;
        }
Example #2
0
        public void CanCreateAndDeleteTaggerTicketField()
        {
            var tField = new TicketField()
            {
                Type = TicketFieldTypes.Tagger,
                Title = "My Tagger",
                Description = "test description",
                TitleInPortal = "Test Tagger",
                CustomFieldOptions = new List<CustomFieldOptions>()
            };

            tField.CustomFieldOptions.Add(new CustomFieldOptions()
                {
                    Name = "test entry",
                    Value = "test value"
                });

            var res = api.Tickets.CreateTicketField(tField);
            Assert.NotNull(res.TicketField);

            Assert.True(api.Tickets.DeleteTicketField(res.TicketField.Id.Value));            
        }
Example #3
0
        public void CanCreateUpdateAndDeleteTicketFields()
        {            
            var tField = new TicketField()
                             {
                                 Type = TicketFieldTypes.Text,
                                 Title = "MyField",
                             };

            var res = api.Tickets.CreateTicketField(tField);
            Assert.NotNull(res.TicketField);

            var updatedTF = res.TicketField;
            updatedTF.Title = "My Custom Field";

            var updatedRes = api.Tickets.UpdateTicketField(updatedTF);
            Assert.AreEqual(updatedRes.TicketField.Title, updatedTF.Title);

            Assert.True(api.Tickets.DeleteTicketField(updatedTF.Id.Value));
        }
Example #4
0
 public async Task<IndividualTicketFieldResponse> UpdateTicketFieldAsync(TicketField ticketField)
 {
     return await GenericPutAsync<IndividualTicketFieldResponse>(string.Format("ticket_fields/{0}.json", ticketField.Id), ticketField);            
 }
Example #5
0
        public async Task<IndividualTicketFieldResponse> CreateTicketFieldAsync(TicketField ticketField)
        {                        
            var body = new
                           {
                               ticket_field = new
                                                  {
                                                      type = ticketField.Type,
                                                      title = ticketField.Title
                                                  }
                           };

            var res = GenericPostAsync<IndividualTicketFieldResponse>("ticket_fields.json", body);            
            return await res;                        
        }
Example #6
0
 public IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField)
 {
     return GenericPut<IndividualTicketFieldResponse>(string.Format("ticket_fields/{0}.json", ticketField.Id), ticketField);            
 }
Example #7
0
        public void CanCreateUpdateOptionsAndDeleteTaggerTicketField()
        {
            var tField = new TicketField()
            {
                Type = TicketFieldTypes.Tagger,
                Title = "My Tagger 2",
                Description = "test description",
                TitleInPortal = "Test Tagger",
                CustomFieldOptions = new List<CustomFieldOptions>()
            };

            tField.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryA",
                Value = "test_valueA"
            });

            tField.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryB",
                Value = "test_valueB"
            });

            var res = api.Tickets.CreateTicketField(tField);
            Assert.NotNull(res.TicketField);
            Assert.NotNull(res.TicketField.Id);
            Assert.AreEqual(res.TicketField.CustomFieldOptions.Count, 2);
            Assert.NotNull(res.TicketField.CustomFieldOptions[0].Id);
            Assert.NotNull(res.TicketField.CustomFieldOptions[1].Id);

            long id = res.TicketField.Id.Value;
            long idCfoA = res.TicketField.CustomFieldOptions[0].Id.Value;
            long idCfoB = res.TicketField.CustomFieldOptions[1].Id.Value;

            /* https://developer.zendesk.com/rest_api/docs/core/ticket_fields#updating-a-dropdown-tagger-field
             * All options must be passed on update. Options that are not passed will be removed; as a result, these values will be removed from any tickets or macros.
             * To create a new option, pass a null id along with name and value.
             * To update an existing option, pass its id along with name and value.
             * To remove an option, omit it from the list of options upon update.
             */
            var tFieldU = new TicketField()
            {
                Id = id,
                CustomFieldOptions = new List<CustomFieldOptions>()
            };

            //update CustomFieldOption A
            tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Id = idCfoA,
                Name = "test entryA newTitle",
                Value = "test_valueA_newTag"
            });
            //delete CustomFieldOption B
            //add CustomFieldOption C
            tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryC",
                Value = "test_valueC"
            });

            var resU = api.Tickets.UpdateTicketField(tFieldU);

            Assert.AreEqual(resU.TicketField.CustomFieldOptions.Count, 2);
            Assert.AreEqual(resU.TicketField.CustomFieldOptions[0].Id, idCfoA);
            Assert.AreNotEqual(resU.TicketField.CustomFieldOptions[1].Id, idCfoB);

            Assert.True(api.Tickets.DeleteTicketField(id));
        }
Example #8
0
 public IndividualTicketFieldResponse UpdateTicketField(TicketField ticketField)
 {
     var body = new
     {
         ticket_field = ticketField
     };
     return GenericPut<IndividualTicketFieldResponse>(string.Format("ticket_fields/{0}.json", ticketField.Id), body);            
 }
Example #9
0
        public IndividualTicketFieldResponse CreateTicketField(TicketField ticketField)
        {
            if (ticketField.CustomFieldOptions != null)
            {
                foreach (var custom in ticketField.CustomFieldOptions)
                {
                    custom.Name = custom.Name.Replace(' ', '_');
                    custom.Value = custom.Value.Replace(' ', '_');
                }
            }

            var body = new
                {
                    ticket_field = ticketField
                };

            var res = GenericPost<IndividualTicketFieldResponse>("ticket_fields.json", body);            
            return res;                        
        }
Example #10
0
        public void CanCreateUpdateAndDeleteTicketFields()
        {
            // Something seems wrong with the api itself.
            Assert.Inconclusive();

            var tField = new TicketField()
                             {
                                 Type = TicketFieldTypes.Text,
                                 Title = "MyField",
                             };

            var res = api.Tickets.CreateTicketField(tField);
            Assert.NotNull(res.TicketField);

            var updatedTF = res.TicketField;
            updatedTF.Title = "My Custom Field";

            var updatedRes = api.Tickets.UpdateTicketField(updatedTF);
            Assert.AreEqual(updatedRes.TicketField.Title, updatedTF.Title);

            Assert.True(api.Tickets.DeleteTicketField(updatedTF.Id.Value));
        }
Example #11
0
        public void CanCreateUpdateOptionsAndDeleteTaggerTicketField()
        {
            // https://support.zendesk.com/hc/en-us/articles/204579973--BREAKING-Update-ticket-field-dropdown-fields-by-value-instead-of-id-

            string option1 = "test_value_a";
            string option1_Update = "test_value_a_newtag";
            string option2 = "test_value_b";
            string option3 = "test_value_c";


            var tField = new TicketField()
            {
                Type = TicketFieldTypes.Tagger,
                Title = "My Tagger 2",
                Description = "test description",
                TitleInPortal = "Test Tagger",
                CustomFieldOptions = new List<CustomFieldOptions>()
            };

            tField.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryA",
                Value = option1
            });

            tField.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryB",
                Value = option2
            });

            var res = api.Tickets.CreateTicketField(tField);
            Assert.That(res.TicketField, Is.Not.Null);
            Assert.That(res.TicketField.Id, Is.Not.Null);
            Assert.That(res.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
            Assert.That(res.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1));
            Assert.That(res.TicketField.CustomFieldOptions[1].Value, Is.EqualTo(option2));

            long id = res.TicketField.Id.Value;

            var tFieldU = new TicketField()
            {
                Id = id,
                CustomFieldOptions = new List<CustomFieldOptions>()
            };

            //update CustomFieldOption A
            tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryA newTitle",
                Value = option1_Update
            });
            //delete CustomFieldOption B
            //add CustomFieldOption C
            tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryC",
                Value = option3
            });

            var resU = api.Tickets.UpdateTicketField(tFieldU);

            Assert.That(resU.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
            Assert.That(resU.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1_Update));
            Assert.That(resU.TicketField.CustomFieldOptions[1].Value, Is.Not.EqualTo(option2));

            Assert.True(api.Tickets.DeleteTicketField(id));
        }
Example #12
0
        public async Task CanCreateUpdateOptionsAndDeleteTaggerTicketFieldAsync()
        {
            string option1 = "test_value_a";
            string option1_Update = "test_value_a_newtag";
            string option2 = "test_value_b";
            string option3 = "test_value_c";

            var tField = new TicketField()
            {
                Type = TicketFieldTypes.Tagger,
                Title = "My Tagger 2",
                Description = "test description",
                TitleInPortal = "Test Tagger",
                CustomFieldOptions = new List<CustomFieldOptions>()
            };

            tField.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryA",
                Value = option1
            });

            tField.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryB",
                Value = option2
            });

            var res = await api.Tickets.CreateTicketFieldAsync(tField);
            Assert.That(res.TicketField, Is.Not.Null);
            Assert.That(res.TicketField.Id, Is.Not.Null);
            Assert.That(res.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
            Assert.That(res.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1));
            Assert.That(res.TicketField.CustomFieldOptions[1].Value, Is.EqualTo(option2));

            long id = res.TicketField.Id.Value;

            var tFieldU = new TicketField()
            {
                Id = id,
                CustomFieldOptions = new List<CustomFieldOptions>()
            };

            //update CustomFieldOption A
            tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryA newTitle",
                Value = option1_Update
            });
            //delete CustomFieldOption B
            //add CustomFieldOption C
            tFieldU.CustomFieldOptions.Add(new CustomFieldOptions()
            {
                Name = "test entryC",
                Value = option3
            });

            var resU = await api.Tickets.UpdateTicketFieldAsync(tFieldU);

            Assert.That(resU.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
            Assert.That(resU.TicketField.CustomFieldOptions[0].Value, Is.EqualTo(option1_Update));
            Assert.That(resU.TicketField.CustomFieldOptions[1].Value, Is.Not.EqualTo(option2));

            Assert.True(await api.Tickets.DeleteTicketFieldAsync(id));
        }
Example #13
0
        public async Task TicketField()
        {
            var tField = new TicketField
            {
                Type = TicketFieldTypes.Tagger,
                Title = "My Tagger 2",
                Description = "test description",
                TitleInPortal = "Test Tagger",
                CustomFieldOptions = new List<CustomFieldOptions>
                {
                    new CustomFieldOptions
                    {
                        Name = "test entryA",
                        Value = "Test2"
                    },
                    new CustomFieldOptions
                    {
                        Name = "test entryB",
                        Value = "test3"
                    }
                }
            };

            var res = api.Tickets.CreateTicketField(tField);
            Assert.That(res.TicketField, Is.Not.Null);
            Assert.That(res.TicketField.Id, Is.Not.Null);
            Assert.That(res.TicketField.CustomFieldOptions.Count, Is.EqualTo(2));
        }