public void BeginFetchTicketServiceLocation(ObservableTicket ticket)
        {
            var awaiter = sApiManager.GetServiceLocationAsync(ticket.Inner.customerId, ticket.Inner.serviceLocationId).GetAwaiter();

            awaiter.OnCompleted(() =>
            {
                ServiceLocation serviceLocation = awaiter.GetResult();
                ticket.ServiceLocation          = serviceLocation;
            });
        }
        public void BeginFetchTicketCustomer(ObservableTicket ticket)
        {
            var awaiter = sApiManager.GetCustomerAsync(ticket.Inner.customerId).GetAwaiter();

            awaiter.OnCompleted(() =>
            {
                Customer customer = awaiter.GetResult();
                ticket.Customer   = customer;
            });
        }
        //public class ListFilter
        //{
        //    List<String> AcceptableTicketStatus = new List<String>();
        //}

        private void ProcessUpdatedLicketList(List <Ticket> ticketList)
        {
            var displayLists = new[] { ToScheduleDataItems, TodayDataItems, FireInspectionDataItems };

            List <ObservableTicket> itemsInLists = new List <ObservableTicket>();

            foreach (var testList in displayLists)
            {
                itemsInLists.AddRange(testList);
                //foreach (var obsTicket in testList)
                //    itemsInLists.AddLast(obsTicket);
            }

            foreach (Ticket t in ticketList)
            {
                var list = DetermineTicketList(t);

                ObservableTicket prevTicket = null;
                foreach (var testList in displayLists)
                {
                    prevTicket = testList.FirstOrDefault(ot => ot.Inner.ticketId == t.ticketId);
                    if (prevTicket != null)
                    {
                        if (ReferenceEquals(testList, list))
                        {
                            prevTicket.ResetTicket(t); // update the ticket TODO check property change
                            BeginFetchTicketServiceLocation(prevTicket);
                            list = null;               //don't add to list below
                        }
                        else // this ticket no longer belongs in this list
                        {
                            testList.Remove(prevTicket);
                        }

                        //This ticket was in a list so lets remove it from itemsInLists
                        itemsInLists.Remove(prevTicket);

                        break; // tickets can't be in multiple lists
                    }
                }

                if (list != null)
                {
                    ObservableTicket obsTick = new ObservableTicket(t);

                    //fetchTicketCustomer(obsTick);
                    //if (t.serviceLocationId != t.customerId)
                    BeginFetchTicketServiceLocation(obsTick);

                    list.Add(obsTick);
                }
            }

            //remove anything left in itemsInLists from all the lists
            foreach (ObservableTicket obsTicket in itemsInLists)
            {
                foreach (var testList in displayLists)
                {
                    if (testList.Remove(obsTicket))
                    {
                        break; // go to next ticket
                    }
                }
            }
        }