/// <inheritdoc /> public async Task AssignWorkItemToTicketsAsync(WorkItem workItem, IEnumerable <long> ticketIds) { if (!ticketIds.Any()) { return; } using (var cn = _data.GetConnection()) { var organization = await GetOrganizationAsync(cn, workItem.OrganizationId); // create related work item tickets var workItemTickets = new List <WorkItemTicket>(); foreach (var ticketId in ticketIds) { var workItemTicket = new WorkItemTicket() { TicketId = ticketId, OrganizationId = workItem.OrganizationId, TicketStatus = TicketStatus.Unknown, WorkItemNumber = workItem.Number, CreatedBy = "system", DateCreated = DateTime.UtcNow, }; await cn.InsertAsync(workItemTicket); workItemTickets.Add(workItemTicket); } await ReadTicketsAsync(organization, workItemTickets); await UpdateTicketsAsync(organization, workItem, workItemTickets); } }
public async Task <IActionResult> OnPostDoActionAsync(int ticketId, int objectId, int teamId, ActionItemType objectType) { var client = await _freshdeskClientFactory.CreateClientForOrganizationAsync(OrgId); var ticket = await client.GetTicketAsync(ticketId, withConversations : true); await FreshdeskCache.InitializeAsync(OrgName); using (var cn = Data.GetConnection()) { if (objectId == 0) { await IgnoreTicketInner(ticketId, teamId, cn); } else { int number = await CreateWorkItemFromTicketAsync(cn, client, ticket, objectId, objectType); var wit = new WorkItemTicket() { TicketId = ticketId, WorkItemNumber = number, OrganizationId = OrgId, TicketStatus = ticket.Status, TicketType = WebhookRequestToWebhookConverter.TicketTypeFromString(ticket.Type), CompanyId = ticket.CompanyId, CompanyName = GetCompanyName(ticket.CompanyId ?? 0), ContactId = ticket.RequesterId, ContactName = GetContactName(ticket.RequesterId), Subject = ticket.Subject }; await client.UpdateTicketWorkItemAsync(ticketId, number.ToString()); await Data.TrySaveAsync(cn, wit); } } return(Redirect($"Tickets/Index")); }