public object Post(Ticket_Actions request) { ApiUser hdUser = request.ApiUser; bigWebApps.bigWebDesk.Data.Ticket _tktNew = null; if (request.action == "response" || !string.IsNullOrEmpty(request.note_text)) { Ticket.Response(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text, request.is_waiting_on_response, ref _tktNew, request.files, request.user_id); //return new HttpResult("", HttpStatusCode.OK); } else if (request.action == "workpad") { string workpad = HttpUtility.HtmlDecode(request.workpad + ""); Ticket.UpdateTicketWorkpad(hdUser.OrganizationId, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), workpad); //return new HttpResult("", HttpStatusCode.OK); } else if (request.action == "note" && hdUser.IsTechAdmin) { string note = request.note + ""; Ticket.UpdateTechNote(hdUser.OrganizationId, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), note); //return new HttpResult("", HttpStatusCode.OK); } else if (request.action == "add_tech" || request.tech_id > 0) { Ticket.AttachAlternateTechnician(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.tech_id); } else if (request.action == "add_user" || request.user_id > 0) { Ticket.AttachAlternateUser(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.user_id); } if (_tktNew != null) { return(TicketLogRecords.TicketLog(hdUser.OrganizationId, hdUser.DepartmentId, _tktNew.ID, _tktNew.PseudoID)); } return(new HttpResult("", HttpStatusCode.OK)); }
public object Put(Ticket_Actions request) { ApiUser hdUser = request.ApiUser; request.note_text = request.note_text ?? ""; request.status = request.status ?? ""; request.status = request.status.Replace("_", ""); int ticket_id = Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key); var _tktOld = new bigWebApps.bigWebDesk.Data.Ticket(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, true); bigWebApps.bigWebDesk.Data.Ticket _tktNew = null; Ticket.Status status; if (Enum.TryParse <Ticket.Status>(request.status, true, out status)) { if (_tktOld.TicketStatus != status) { switch (status) { case Ticket.Status.OnHold: Ticket.OnHold(hdUser, ticket_id, request.note_text, ref _tktNew); break; case Ticket.Status.PartsOnOrder: throw new HttpError(HttpStatusCode.NotFound, "Incorrect status"); case Ticket.Status.Closed: Ticket.Close(hdUser, ticket_id, request.note_text, request.is_send_notifications, request.resolved, request.resolution_id, request.confirmed, request.confirm_note, ref _tktNew); break; case Ticket.Status.Open: Ticket.ReOpen(hdUser, ticket_id, request.note_text, ref _tktNew); break; } } } bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.TicketResponse; if (request.action == "transfer" || (request.user_id > 0 && _tktOld.UserId != request.user_id)) { Ticket.TransferToUser(hdUser, ticket_id, request.user_id, request.note_text, ref _tktNew); tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.ChangeEndUser; } if (request.action == "transfer" || (request.tech_id > 0 && _tktOld.TechnicianId != request.tech_id)) { Ticket.TransferToTech(hdUser, ticket_id, request.tech_id, request.note_text, request.keep_attached, ref _tktNew); if (_tktNew.TechnicianId == hdUser.UserId) { bigWebApps.bigWebDesk.Data.Ticket.UpdateNewPostIcon(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, hdUser.UserId, false); } else if (_tktNew.TechnicianId != hdUser.UserId) { bigWebApps.bigWebDesk.Data.Ticket.UpdateNewPostIcon(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, hdUser.UserId, true); } tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.TransferTicket; } if (request.priority_id > 0 && _tktOld.PriorityId != request.priority_id) { Ticket.UpdatePriority(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, request.priority_id); tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.ChangePriority; } /** not implemented * need to add parameters LocationId, Transfermode, is_transfer_user_to_account * look page https://support.sherpadesk.com/home/accts/assignticket.aspx * Transfermode: * 0 - This ticket only (default) * 1 - Only unassigned tickets for this user * 2 - All tickets for this user */ if (request.account_id != 0 && _tktOld.AccountId != request.account_id) { Ticket.UpdateAccount(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, request.account_id, request.account_location_id, 0, request.is_transfer_user_to_account); tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.ChangeAccount; } if (request.location_id != 0 && _tktOld.LocationId != request.location_id) { Ticket.UpdateLocation(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, request.location_id); tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.ChangeLocation; } if (request.project_id != 0 && _tktOld.ProjectId != request.project_id) { Ticket.UpdateProject(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, request.project_id); tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.ChangeProject; } if (request.level_id > 0 && _tktOld.Level != request.level_id) { Ticket.UpdateLevel(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, request.level_id, hdUser.UserId, request.note_text); tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.ChangeLevel; } if (request.class_id > 0 && _tktOld.ClassId != request.class_id) { Ticket.UpdateClass(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, request.class_id); tktEvent = bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.ChangeClass; } if (tktEvent != bigWebApps.bigWebDesk.Data.NotificationRules.TicketEvent.TicketResponse) { _tktNew = _tktNew ?? new bigWebApps.bigWebDesk.Data.Ticket(hdUser.OrganizationId, hdUser.DepartmentId, ticket_id, true); bigWebApps.bigWebDesk.Data.NotificationRules.RaiseNotificationEvent(hdUser.OrganizationId, hdUser.DepartmentId, hdUser.UserId, tktEvent, _tktNew); } if (!string.IsNullOrEmpty(request.action)) { switch (request.action.ToLower()) { case "pickup": Ticket.PickUp(hdUser, ticket_id, request.note_text, ref _tktNew); break; case "confirm": Ticket.Confirm(hdUser, ticket_id, request.note_text, ref _tktNew); break; case "escalate": Ticket.EscalateTicketByLevel(hdUser, ticket_id, true); return(getTicket(hdUser, request.key, false)); break; case "deescalate": Ticket.EscalateTicketByLevel(hdUser, ticket_id, false); return(getTicket(hdUser, request.key, false)); break; } } if (_tktNew != null) { return(TicketLogRecords.TicketLog(hdUser.OrganizationId, hdUser.DepartmentId, _tktNew.ID, _tktNew.PseudoID)); } return(new HttpResult("", HttpStatusCode.OK)); }