Example #1
0
            public override void Process(CmdTrigger <RealmServerCmdArgs> trigger)
            {
                string         playerName       = trigger.Text.NextWord();
                Character      argumentOrTarget = trigger.Args.GetCharArgumentOrTarget(trigger, playerName);
                ITicketHandler ticketHandler    = trigger.Args.TicketHandler;

                if (argumentOrTarget != null && argumentOrTarget.IsInWorld)
                {
                    Ticket         ticket  = argumentOrTarget.Ticket;
                    ITicketHandler handler = ticket.Handler;
                    if (handler != null && handler.Role > ticketHandler.Role)
                    {
                        trigger.Reply("Ticket is already being handled by: " + handler.Name);
                    }
                    else
                    {
                        if (handler != null)
                        {
                            trigger.Reply("Taking over Ticket from: " + handler.Name);
                            handler.SendMessage("The Ticket you were handling by " + (object)ticket.Owner +
                                                " is now handled by: " + (object)ticketHandler);
                        }

                        ticket.Handler = ticketHandler;
                    }
                }
                else
                {
                    trigger.Reply("Selected player is offline or does not exist: " + playerName);
                }
            }
Example #2
0
        public Ticket HandleNextUnhandledTicket(ITicketHandler handler)
        {
            Ticket ticket;

            do
            {
                ticket = GetNextUnhandledTicket(handler);
                if (ticket != null)
                {
                    lck.EnterWriteLock();
                    try
                    {
                        if (ticket.Handler == null)
                        {
                            ticket.SetHandlerUnlocked(handler);
                            break;
                        }
                        // Ticket got handled in the very short time in which the lock was released -> continue
                    }
                    finally
                    {
                        lck.ExitWriteLock();
                    }
                }
            } while (ticket != null);
            return(ticket);
        }
Example #3
0
        public Ticket HandleNextUnhandledTicket(ITicketHandler handler)
        {
            Ticket nextUnhandledTicket;

            do
            {
                nextUnhandledTicket = GetNextUnhandledTicket(handler);
                if (nextUnhandledTicket != null)
                {
                    lck.EnterWriteLock();
                    try
                    {
                        if (nextUnhandledTicket.Handler == null)
                        {
                            nextUnhandledTicket.SetHandlerUnlocked(handler);
                            break;
                        }
                    }
                    finally
                    {
                        lck.ExitWriteLock();
                    }
                }
            } while(nextUnhandledTicket != null);

            return(nextUnhandledTicket);
        }
Example #4
0
 public bool HandleTicket(ITicketHandler handler, Ticket ticket)
 {
     if (handler.MayHandle(ticket))
     {
         ticket.Handler = handler;
         return(true);
     }
     return(false);
 }
Example #5
0
 internal void SetHandlerUnlocked(ITicketHandler handler)
 {
     if (m_handler != handler)
     {
         var oldHandler = m_handler;
         m_handler = handler;
         if (handler != null)
         {
             handler.HandlingTicket = this;
         }
         var evt = TicketHandlerChanged;
         if (evt != null)
         {
             evt(this, oldHandler);
         }
     }
 }
Example #6
0
        public void Delete()
        {
            TicketMgr.Instance.lck.EnterWriteLock();
            try
            {
                if (m_previous != null)
                {
                    m_previous.m_next = m_next;
                }

                if (m_next != null)
                {
                    m_next.m_previous = m_previous;
                }

                var mgr = TicketMgr.Instance;
                if (this == mgr.first)
                {
                    mgr.first = null;
                }

                if (this == mgr.last)
                {
                    mgr.last = null;
                }

                if (m_handler != null)
                {
                    m_handler.HandlingTicket = null;
                    m_handler = null;
                }

                if (m_owner != null)
                {
                    m_owner.Ticket = null;
                }

                TicketMgr.Instance.ticketsById.Remove(m_charId);
            }
            finally
            {
                TicketMgr.Instance.lck.ExitWriteLock();
            }
        }
Example #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="handler">May be null</param>
        /// <returns>Returns the next Ticket that is not already handled and may be handled by the given handler.</returns>
        public Ticket GetNextUnhandledTicket(ITicketHandler handler)
        {
            lck.EnterReadLock();
            try
            {
                for (Ticket ticket = first; ticket != null; ticket = ticket.Next)
                {
                    if (handler == null || handler.MayHandle(ticket))
                    {
                        return(ticket);
                    }
                }
            }
            finally
            {
                lck.ExitReadLock();
            }

            return(null);
        }
Example #8
0
        internal void SetHandlerUnlocked(ITicketHandler handler)
        {
            if (this.m_handler == handler)
            {
                return;
            }
            ITicketHandler handler1 = this.m_handler;

            this.m_handler = handler;
            if (handler != null)
            {
                handler.HandlingTicket = this;
            }
            Ticket.TicketHandlerChangedHandler ticketHandlerChanged = this.TicketHandlerChanged;
            if (ticketHandlerChanged == null)
            {
                return;
            }
            ticketHandlerChanged(this, handler1);
        }
Example #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="handler">May be null</param>
 /// <returns>Returns the next Ticket that is not already handled and may be handled by the given handler.</returns>
 public Ticket GetNextUnhandledTicket(ITicketHandler handler)
 {
     lck.EnterReadLock();
     try
     {
         var current = first;
         while (current != null)
         {
             if (handler == null || handler.MayHandle(current))
             {
                 return(current);
             }
             current = current.Next;
         }
     }
     finally
     {
         lck.ExitReadLock();
     }
     return(null);
 }
Example #10
0
        public void Delete()
        {
            TicketMgr.Instance.lck.EnterWriteLock();
            try
            {
                if (this.m_previous != null)
                {
                    this.m_previous.m_next = this.m_next;
                }
                if (this.m_next != null)
                {
                    this.m_next.m_previous = this.m_previous;
                }
                TicketMgr instance = TicketMgr.Instance;
                if (this == instance.first)
                {
                    instance.first = (Ticket)null;
                }
                if (this == instance.last)
                {
                    instance.last = (Ticket)null;
                }
                if (this.m_handler != null)
                {
                    this.m_handler.HandlingTicket = (Ticket)null;
                    this.m_handler = (ITicketHandler)null;
                }

                if (this.m_owner != null)
                {
                    this.m_owner.Ticket = (Ticket)null;
                }
                TicketMgr.Instance.ticketsById.Remove(this.m_charId);
            }
            finally
            {
                TicketMgr.Instance.lck.ExitWriteLock();
            }
        }
Example #11
0
 internal void OnOwnerLogout()
 {
     TicketMgr.Instance.lck.EnterWriteLock();
     try
     {
         Position = m_owner.Position;
         m_Map    = m_owner.Map;
         Phase    = m_owner.Phase;
         m_owner  = null;
         ITicketHandler handler = m_handler;
         if (handler == null)
         {
             return;
         }
         handler.SendMessage("Owner of the Ticket you are handling went -{0}-.",
                             (object)ChatUtility.Colorize("offline", Color.Red));
     }
     finally
     {
         TicketMgr.Instance.lck.ExitWriteLock();
     }
 }
Example #12
0
        public void Delete()
        {
            TicketMgr.Instance.lck.EnterWriteLock();
            try
            {
                if (m_previous != null)
                {
                    m_previous.m_next = m_next;
                }

                if (m_next != null)
                {
                    m_next.m_previous = m_previous;
                }

                var mgr = TicketMgr.Instance;
                if (this == mgr.first)
                {
                    mgr.first = null;
                }

                if (this == mgr.last)
                {
                    mgr.last = null;
                }

                if (m_handler != null)
                {
                    m_handler.HandlingTicket = null;
                    m_handler = null;
                }

                if (m_owner != null)
                {
                    m_owner.Ticket = null;
                }

                TicketMgr.Instance.ticketsById.Remove(m_charId);
            }
            finally
            {
                TicketMgr.Instance.lck.ExitWriteLock();
            }
        }
Example #13
0
 internal void SetHandlerUnlocked(ITicketHandler handler)
 {
     if (m_handler != handler)
     {
         var oldHandler = m_handler;
         m_handler = handler;
         if (handler != null)
         {
             handler.HandlingTicket = this;
         }
         var evt = TicketHandlerChanged;
         if (evt != null)
         {
             evt(this, oldHandler);
         }
     }
 }
Example #14
0
 public TicketController(ITicketHandler ticketHandler, IBaseHandler<ProductDomain> productHandler, ICurrentUser currentUser)
 {
     _ticketHandler = ticketHandler;
     _productHandler = productHandler;
     _currentUser = currentUser;
 }
Example #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UserController"/> class.
 /// </summary>
 /// <param name="htmlResponseBuilder">
 /// The html response builder.
 /// </param>
 /// <param name="ticketHandler">
 /// The user handler.
 /// </param>
 public TicketController(IHtmlResponseBuilder htmlResponseBuilder, ITicketHandler ticketHandler)
 {
     _htmlResponseBuilder = htmlResponseBuilder;
     _ticketHandler       = ticketHandler;
 }
Example #16
0
 public ProductController(IBaseHandler <ProductDomain> productHandler, IBaseHandler <CustomerDomain> customerHandler, ITicketHandler ticketHandler)
 {
     _productHandler  = productHandler;
     _customerHandler = customerHandler;
     _ticketHandler   = ticketHandler;
 }
Example #17
0
 public ProductController(IBaseHandler<ProductDomain> productHandler, IBaseHandler<CustomerDomain> customerHandler, ITicketHandler ticketHandler)
 {
     _productHandler = productHandler;
     _customerHandler = customerHandler;
     _ticketHandler = ticketHandler;
 }
Example #18
0
 public TicketController(ITicketHandler ticketHandler, IBaseHandler <ProductDomain> productHandler, ICurrentUser currentUser)
 {
     _ticketHandler  = ticketHandler;
     _productHandler = productHandler;
     _currentUser    = currentUser;
 }
Example #19
0
 public QueueController(ITicketHandler ticketHandler)
 {
     _ticketHandler = ticketHandler;
 }