Пример #1
0
        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));
        }
Пример #2
0
        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));
        }