예제 #1
0
        public void GetTicketsCustomFields()
        {
            TicketCustomFields ticketCustomFields = TestSetup.KayakoApiService.Tickets.GetTicketCustomFields(2);

            Assert.IsNotNull(ticketCustomFields.FieldGroups, "No ticket custom fields were returned");
            Assert.IsNotEmpty(ticketCustomFields.FieldGroups, "No ticket custom fields were returned");

            OutputMessage <TicketCustomFields>("Result: ", ticketCustomFields);
        }
        public void Setup()
        {
            _kayakoApiRequest = new Mock <IKayakoApiRequest>();

            _ticketController = new TicketController(_kayakoApiRequest.Object);

            _responseTicketCollection = new TicketCollection
            {
                new Ticket()
            };

            _createTicketRequestRequiredFields = new TicketRequest
            {
                Subject          = "Subject",
                FullName         = "Fullname",
                Email            = "*****@*****.**",
                Contents         = "Contents",
                DepartmentId     = 1,
                TicketStatusId   = 2,
                TicketPriorityId = 3,
                TicketTypeId     = 4
            };

            _createTicketRequiredFieldsParameters = "subject=Subject&fullname=Fullname&[email protected]&contents=Contents&departmentid=1&ticketstatusid=2&ticketpriorityid=3&tickettypeid=4";

            _responseTicketCustomFields = new TicketCustomFields
            {
                FieldGroups = new List <TicketCustomFieldGroup>
                {
                    new TicketCustomFieldGroup
                    {
                        Id     = 1,
                        Title  = "Title",
                        Fields = new[]
                        {
                            new TicketCustomField
                            {
                                Type         = TicketCustomFieldType.Text,
                                Name         = "FieldName1",
                                FieldContent = "content1"
                            },
                            new TicketCustomField
                            {
                                Type         = TicketCustomFieldType.Text,
                                Name         = "FieldName2",
                                FieldContent = "content2"
                            }
                        }
                    }
                }
            };
        }
예제 #3
0
        public void UpdateTicketCustomFields()
        {
            DepartmentCollection depts   = TestSetup.KayakoApiService.Departments.GetDepartments();
            TicketCollection     tickets = TestSetup.KayakoApiService.Tickets.GetTickets(depts.Select(d => d.Id).ToArray());

            int idToUse = -1;

            foreach (Ticket ticket in tickets)
            {
                TicketCustomFields ticketCustomFields = TestSetup.KayakoApiService.Tickets.GetTicketCustomFields(ticket.Id);

                if (ticketCustomFields.FieldGroups.Count > 0)
                {
                    if (ticketCustomFields.FieldGroups.Where(tcf => tcf.Fields.Length > 0 && tcf.Fields.Any(a => a.Type == Core.Constants.TicketCustomFieldType.Text || a.Type == Core.Constants.TicketCustomFieldType.TextArea)).Any())
                    {
                        idToUse = ticket.Id;
                        break;
                    }
                }
            }

            if (idToUse != -1)
            {
                TicketCustomFields ticketCustomFields = TestSetup.KayakoApiService.Tickets.GetTicketCustomFields(idToUse);

                TicketCustomFieldGroup group = ticketCustomFields.FieldGroups.FirstOrDefault(tcf => tcf.Fields.Length > 0 && tcf.Fields.Any(a => a.Type == Core.Constants.TicketCustomFieldType.Text || a.Type == Core.Constants.TicketCustomFieldType.TextArea));
                TicketCustomField      field = group.Fields.FirstOrDefault(type => type.Type == Core.Constants.TicketCustomFieldType.Text || type.Type == Core.Constants.TicketCustomFieldType.TextArea);
                field.FieldContent = String.Format("This was updated at : {0}", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));

                TicketCustomFields updatedTicketCustomFields = TestSetup.KayakoApiService.Tickets.UpdateTicketCustomFields(idToUse, ticketCustomFields);

                TicketCustomFieldGroup updatedGroup = updatedTicketCustomFields.FieldGroups.FirstOrDefault(customField => customField.Fields.Length > 0 && customField.Fields.Any(a => a.Type == Core.Constants.TicketCustomFieldType.Text || a.Type == Core.Constants.TicketCustomFieldType.TextArea));
                TicketCustomField      updatedField = updatedGroup.Fields.FirstOrDefault(type => type.Type == Core.Constants.TicketCustomFieldType.Text || type.Type == Core.Constants.TicketCustomFieldType.TextArea);

                Assert.AreEqual(field.FieldContent, updatedField.FieldContent);
            }
            else
            {
                throw new Exception("Could not find any tickets with any text/text area custom fields.");
            }
        }
        /// <summary>
        /// Update the custom field values for a ticket. Please note all custom fields for the ticket must be sent through with
        /// their values.
        /// </summary>
        public TicketCustomFields UpdateTicketCustomFields(int ticketId, TicketCustomFields customFields)
        {
            string apiMethod = String.Format("/Tickets/TicketCustomField/{0}", ticketId);

            StringBuilder sb = new StringBuilder();

            foreach (TicketCustomFieldGroup group in customFields.FieldGroups)
            {
                foreach (TicketCustomField field in group.Fields)
                {
                    if (!String.IsNullOrEmpty(sb.ToString()))
                    {
                        sb.Append("&");
                    }

                    sb.AppendFormat("{0}={1}", field.Name, HttpUtility.UrlEncode((field.FieldContent ?? "")));
                }
            }

            return(Connector.ExecutePost <TicketCustomFields>(apiMethod, sb.ToString()));
        }
        public void TicketCustomFieldCollectionDeserialization()
        {
            var ticketcustomFields = new TicketCustomFields
            {
                FieldGroups = new List <TicketCustomFieldGroup>
                {
                    new TicketCustomFieldGroup
                    {
                        Id     = 4,
                        Title  = "Test Ticket",
                        Fields = new []
                        {
                            new TicketCustomField
                            {
                                Id           = 2,
                                Type         = TicketCustomFieldType.Text,
                                Name         = "ab32ds122",
                                Title        = "Test",
                                FieldContent = "Test Plaintext Field"
                            },
                            new TicketCustomField
                            {
                                Id           = 3,
                                Type         = TicketCustomFieldType.LinkedSelectFields,
                                Name         = "fd923nds2",
                                Title        = "Linked Select",
                                FieldContent = "Product > Fusion"
                            },
                            new TicketCustomField
                            {
                                Id           = 4,
                                Type         = TicketCustomFieldType.MultiSelect,
                                Name         = "mcz923nxa",
                                Title        = "Multiple",
                                FieldContent = "Value1, Value2"
                            },
                            new TicketCustomField
                            {
                                Id           = 5,
                                Type         = TicketCustomFieldType.Date,
                                Name         = "z13nc8923",
                                Title        = "Date",
                                FieldContent = "05/24/2011"
                            },
                            new TicketCustomField
                            {
                                Id           = 6,
                                Type         = TicketCustomFieldType.File,
                                FileName     = "report.txt",
                                Name         = "mds923nx92",
                                Title        = "File",
                                FieldContent = "VTFkSlJsUXRNVE01TURvZ1EzVnpkRzl0SUVacFpXeGtjeUJwYmlCVWFXTnJaWFFnVm1sbGQzTUtDbE5YU1VaVUxURXpPVEU2SUZCMVlteHBZeTlRY21sMllYUmxJRlpwYzJsaWFXeHBkSGtnVkc5bloyeGxJR2x1SUZWelpYSXZWWE5sY2lCUGNtZGhibWw2WVhScGIyNGdRM1Z6ZEc5dElFWnBaV3hrSUVkeWIzVndjd29L"
                            }
                        }
                    }
                }
            };

            var expectedTicketCustomFields = XmlDataUtility.ReadFromFile <TicketCustomFields>("TestData/TicketCustomFields.xml");

            AssertUtility.ObjectsEqual(expectedTicketCustomFields, ticketcustomFields);
        }