public void CreateDeleteTicketAttachment()
        {
            DepartmentCollection depts = TestSetup.KayakoApiService.Departments.GetDepartments();
            StaffUserCollection staff = TestSetup.KayakoApiService.Staff.GetStaffUsers();
            StaffUser randomStaffUser = staff[new Random().Next(staff.Count)];
            TicketCollection tickets = TestSetup.KayakoApiService.Tickets.GetTickets(depts.Select(d => d.Id).ToArray());
            Ticket randomTicket = tickets[new Random().Next(tickets.Count)];
            TicketPostCollection ticketPosts = TestSetup.KayakoApiService.Tickets.GetTicketPosts(randomTicket.Id);
            TicketPost randomPost = ticketPosts[new Random().Next(ticketPosts.Count)];

            string contents = Convert.ToBase64String(Encoding.UTF8.GetBytes("This is the file contents"));

            TicketAttachmentRequest request = new TicketAttachmentRequest()
            {
                TicketId = randomTicket.Id,
                TicketPostId = randomPost.Id,
                FileName = "TheFilename.txt",
                Contents = contents
            };

            TicketAttachment createdAttachment = TestSetup.KayakoApiService.Tickets.AddTicketAttachment(request);

            Assert.AreEqual(createdAttachment.TicketId, randomTicket.Id);
            Assert.AreEqual(createdAttachment.TicketPostId, randomPost.Id);
            Assert.AreEqual(createdAttachment.FileName, "TheFilename.txt");
            //Assert.AreEqual(createdAttachment.Contents, contents);

            bool success = TestSetup.KayakoApiService.Tickets.DeleteTicketAttachment(randomTicket.Id, createdAttachment.Id);

            Assert.IsTrue(success);
        }
 public static TicketAttachment ToResponseData(TicketAttachmentRequest requestData)
 {
     return TicketAttachmentRequest.ToResponseType<TicketAttachmentRequest, TicketAttachment>(requestData);
 }
 public static TicketAttachment ToResponseData(TicketAttachmentRequest requestData)
 {
     return(TicketAttachmentRequest.ToResponseType <TicketAttachmentRequest, TicketAttachment>(requestData));
 }
 public static TicketAttachmentRequest FromResponseData(TicketAttachment responseData)
 {
     return(TicketAttachmentRequest.FromResponseType <TicketAttachment, TicketAttachmentRequest>(responseData));
 }
		/// <summary>
		/// Add an attachment to a ticket post.
		/// </summary>
		/// <param name="ticketId">The unique numeric identifier of the ticket</param>
		/// <param name="ticketPostId">The unique numeric identifier of the ticket post</param>
		/// <param name="fileName">The file name for the attachment </param>
		/// <param name="contents">The BASE64 encoded attachment contents</param>
		public TicketAttachment AddTicketAttachment(TicketAttachmentRequest request)
		{
            string apiMethod = "/Tickets/TicketAttachment";

            request.EnsureValidData(RequestTypes.Create);

			RequestBodyBuilder parameters = new RequestBodyBuilder();
			parameters.AppendRequestData("ticketid", request.TicketId);
            parameters.AppendRequestData("ticketpostid", request.TicketPostId);
            parameters.AppendRequestData("filename", request.FileName);
            parameters.AppendRequestData("contents", request.Contents);

			TicketAttachmentCollection attachments = Connector.ExecutePost<TicketAttachmentCollection>(apiMethod, parameters.ToString());

			if (attachments != null && attachments.Count > 0)
			{
				return attachments[0];
			}

			return null;
		}