public object Post(Ticket_Actions request)
        {
            ApiUser hdUser = request.ApiUser;

            if (request.tech_id > 0)
            {
                Ticket.AttachAlternateTechnician(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.tech_id);
            }
            else if (request.user_id > 0)
            {
                Ticket.AttachAlternateUser(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.user_id);
            }

            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("_", "");

            Ticket.Status status;

            if (Enum.TryParse <Ticket.Status>(request.status, true, out status))
            {
                switch (status)
                {
                case Ticket.Status.OnHold:
                    Ticket.OnHold(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text);
                    break;

                case Ticket.Status.PartsOnOrder:
                    throw new HttpError(HttpStatusCode.NotFound, "Incorrect status");

                case Ticket.Status.Closed:
                    Ticket.Close(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text, request.is_send_notifications, request.resolved, request.confirmed, request.confirm_note);
                    break;

                case Ticket.Status.Open:
                    Ticket.ReOpen(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text);
                    break;
                }
            }
            else if (request.tech_id > 0)
            {
                Ticket.TransferToTech(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.tech_id, request.note_text, request.keep_attached);
            }
            else if (!string.IsNullOrEmpty(request.action))
            {
                switch (request.action.ToLower())
                {
                case "pickup": Ticket.PickUp(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text);
                    break;

                case "confirm": Ticket.Confirm(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text);
                    break;
                }
            }
            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("_", "");

            Ticket.Status status;

            if (Enum.TryParse<Ticket.Status>(request.status, true, out status))
            {
                switch (status)
                {
                    case Ticket.Status.OnHold:
                        Ticket.OnHold(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text);
                        break;
                    case Ticket.Status.PartsOnOrder:
                        throw new HttpError(HttpStatusCode.NotFound, "Incorrect status");
                    case Ticket.Status.Closed:
                        Ticket.Close(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text, request.is_send_notifications, request.resolved, request.confirmed, request.confirm_note);
                        break;
                    case Ticket.Status.Open:
                        Ticket.ReOpen(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text);
                        break;
                }
            }
            else if (request.tech_id > 0)
            {
                Ticket.TransferToTech(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.tech_id, request.note_text, request.keep_attached);
            }
            else if (!string.IsNullOrEmpty(request.action))
            {
                switch (request.action.ToLower())
                {
                    case "pickup": Ticket.PickUp(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text);
                        break;
                    case "confirm": Ticket.Confirm(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.note_text);
                        break;
                }
            }
            return new HttpResult("", HttpStatusCode.OK);
        }
        public object Post(Ticket_Actions request)
        {
            ApiUser hdUser = request.ApiUser;

            if (request.tech_id > 0)
                Ticket.AttachAlternateTechnician(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.tech_id);
            else if (request.user_id > 0)
                Ticket.AttachAlternateUser(hdUser, Ticket.GetId(hdUser.OrganizationId, hdUser.DepartmentId, request.key), request.user_id);

            return new HttpResult("", HttpStatusCode.OK);
        }