示例#1
0
        public void SendTickets(Socket handler, string departmentId)
        {
            Console.WriteLine($"Sending tickets to {departmentId}");

            List <SecondaryTicket> tickets;

            if (!secondaryTickets.TryGetValue(departmentId, out tickets))
            {
                tickets = new List <SecondaryTicket>();
            }

            Console.WriteLine(tickets.Count);

            List <SecondaryTicket> departmentTickets = new List <SecondaryTicket>();

            for (int i = 0; i < tickets.Count; i++)
            {
                SecondaryTicket ticket = tickets[i];

                departmentTickets.Add(ticket);

                db.SetSecondaryTicketReceived(ticket.Id.ToString(), true);
            }

            string jsonString = $"SECONDARYTICKETS {Newtonsoft.Json.JsonConvert.SerializeObject(departmentTickets)}";

            Send(handler, jsonString);
        }
示例#2
0
        public SecondaryTicket AddSecondaryTicket(string originalTicketId, string solver, string secondarySolver, string title, string question)
        {
            SecondaryTicket st = new SecondaryTicket(ObjectId.GenerateNewId(), new ObjectId(originalTicketId), solver, secondarySolver, title, question);

            secondaryTickets.InsertOne(st);

            return(st);
        }
示例#3
0
        public DataTable GetSecondaryTicketsBySolver(string solver)
        {
            try
            {
                List <SecondaryTicket> tickets = db.GetSecondaryTicketsBySolver(solver);

                DataTable dt = new DataTable("secondaryTickets");

                dt.Columns.Add("id");
                dt.Columns.Add("originalticketId");
                dt.Columns.Add("solver");
                dt.Columns.Add("secondarysolver");
                dt.Columns.Add("date");
                dt.Columns.Add("title");

                for (int i = 0; i < tickets.Count; i++)
                {
                    SecondaryTicket ticket = tickets[i];

                    List <string> arr = new List <string>();
                    arr.Add(ticket.Id.ToString());
                    arr.Add(ticket.originalTicketId.ToString());
                    arr.Add(ticket.solver);
                    arr.Add(ticket.secondarySolver);
                    arr.Add(ticket.date.ToString());
                    arr.Add(ticket.title);

                    for (int u = 0; u < ticket.questions.Count; u++)
                    {
                        if (!dt.Columns.Contains("question:" + u))
                        {
                            dt.Columns.Add("question:" + u);
                        }

                        if (!dt.Columns.Contains("answers: " + u))
                        {
                            dt.Columns.Add("answers: " + u);
                        }

                        arr.Add(ticket.questions[u]);
                        arr.Add(ticket.answers[u]);
                    }


                    dt.Rows.Add(arr.ToArray());
                }

                return(dt);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return(null);
        }
示例#4
0
        public int AddSecondaryTicket(string originalTicketId, string solver, string secondarySolver, string title, string question)
        {
            SecondaryTicket st = db.AddSecondaryTicket(originalTicketId, solver, secondarySolver, title, question);

            db.ChangeTicketStatus(originalTicketId, TicketStatus.WaitingForAnswers);

            departmentQueue.FetchSecondaryTickets();

            return(0);
        }
示例#5
0
        public void FetchSecondaryTickets()
        {
            List <SecondaryTicket> tickets = db.GetSecondaryTickets();

            for (int i = 0; i < tickets.Count; i++)
            {
                SecondaryTicket ticket = tickets[i];

                //if (!ticket.received)
                AddSecondaryTicket(ticket);
            }
        }
示例#6
0
        public void ChangeSecondaryTicketAnswer(string id, string response)
        {
            Console.WriteLine($"adding answer {response} to {id}");

            var filter = Builders <SecondaryTicket> .Filter.Eq("Id", new ObjectId(id));

            SecondaryTicket st = secondaryTickets.Find(x => x.Id == new ObjectId(id)).ToList()[0];

            st.answers[st.answers.Count - 1] = response;

            var update = Builders <SecondaryTicket> .Update.Set("answers", st.answers);

            secondaryTickets.UpdateOne(filter, update);
        }
示例#7
0
        public bool AddSecondaryTicket(SecondaryTicket st)
        {
            if (secondaryTickets.ContainsKey(st.secondarySolver))
            {
                if (!secondaryTickets.TryGetValue(st.secondarySolver, out List <SecondaryTicket> tickets))
                {
                    return(false);
                }

                List <SecondaryTicket> old = new List <SecondaryTicket>(tickets);
                int index = old.FindIndex(x => x.Id == st.Id);

                if (index == -1)
                {
                    tickets.Add(st);
                }
                else
                {
                    tickets[index] = st;
                }

                if (!secondaryTickets.TryUpdate(st.secondarySolver, tickets, old))
                {
                    return(false);
                }
            }
            else
            {
                List <SecondaryTicket> list = new List <SecondaryTicket>();
                list.Add(st);

                if (!secondaryTickets.TryAdd(st.secondarySolver, list))
                {
                    return(false);
                }
            }

            return(true);
        }
示例#8
0
        public DataTable GetSecondaryTickets()
        {
            List <SecondaryTicket> tickets = db.GetSecondaryTickets();

            DataTable dt = new DataTable("secondaryTickets");

            dt.Columns.Add("id");
            dt.Columns.Add("originalticketId");
            dt.Columns.Add("solver");
            dt.Columns.Add("secondarysolver");
            dt.Columns.Add("date");
            dt.Columns.Add("title");

            for (int i = 0; i < tickets.Count; i++)
            {
                SecondaryTicket ticket = tickets[i];

                List <string> arr = new List <string>();
                arr.Add(ticket.Id.ToString());
                arr.Add(ticket.originalTicketId.ToString());
                arr.Add(ticket.solver);
                arr.Add(ticket.secondarySolver);
                arr.Add(ticket.date.ToString());
                arr.Add(ticket.title);

                for (int u = 0; u < ticket.questions.Count; u++)
                {
                    dt.Columns.Add("question:" + u);
                    dt.Columns.Add("answers: " + u);
                    arr.Add(ticket.questions[u]);
                    arr.Add(ticket.answers[u]);
                }

                dt.Rows.Add(arr.ToArray());
            }

            return(dt);
        }