public void DeleteTicket(int ticketID)
        {
            CustTicket ticket = new CustTicket();

            using (var db = new EticketContext())
            {
                ticket = db.CustTickets.FirstOrDefault(x => x.TicketID == ticketID && x.Closed == true);

                if (ticket == null)
                {
                    Console.WriteLine("Ticket not found under the specified criteria. Press any key to continue");
                    Console.ReadKey();
                }
                else
                {
                    Console.Write($"Are you sure you want to delete Customer Ticket with ID- {ticket.TicketID}? (Y/N) ");
                    string selection = Console.ReadLine();
                    if (selection == "Y" || selection == "y")
                    {
                        db.CustTickets.Remove(ticket);
                        db.SaveChanges();
                        ticket = db.CustTickets.SingleOrDefault(s => s.TicketID == ticketID);
                        if (ticket == null)
                        {
                            Console.WriteLine("Ticket deleted.");
                        }
                        else
                        {
                            Console.WriteLine("Ticket couldn't be deleted.");
                        }
                    }
                }
            }
        }
        public void assignUsersToTicket(int ticketID)
        {
            CustTicketForm form   = new CustTicketForm();
            CustTicket     ticket = new CustTicket();

            using (var db = new EticketContext())
            {
                ticket = db.CustTickets.FirstOrDefault(x => x.TicketID == ticketID);
            }
            if (ticket == null)
            {
                Console.WriteLine("Ticket couldn't be found. Press any key to return.");
                Console.ReadKey();
            }
            else
            {
                CustTicket updatedTicket = form.CustTicketFormAssignUsers(ticket);
                using (var db = new EticketContext())
                {
                    ticket             = db.CustTickets.SingleOrDefault(s => s.TicketID == ticket.TicketID);
                    ticket.CSAgent     = updatedTicket.CSAgent;
                    ticket.TechSupport = updatedTicket.TechSupport;
                    ticket.Closed      = updatedTicket.Closed;
                    db.SaveChanges();
                }
                string updatedTicketToText = ($" Date: {updatedTicket.Date}  - CustomerName: {updatedTicket.CustomerName} - Customer Email: {updatedTicket.CustomerEmail} - Customer Phone: {updatedTicket.CustomerPhone} - Description: {updatedTicket.Description} - TicketID: {updatedTicket.TicketID} \n");
                File.AppendAllText("CustTicketArchive.txt", updatedTicketToText);
            }
        }
        //CRUD for Customer Tickets
        #region
        public void SubmitNewTicket(string username)
        {
            CustTicketForm form      = new CustTicketForm();
            CustTicket     newTicket = new CustTicket();

            newTicket = form.CustTicketFormEmpty(username);
            using (var db = new EticketContext())
            {
                db.CustTickets.Add(newTicket);
                db.SaveChanges();
            }
            string newTicketToText = ($" Date: {newTicket.Date}  - CustomerName: {newTicket.CustomerName} - Customer Email: {newTicket.CustomerEmail} - Customer Phone: {newTicket.CustomerPhone} - Description: {newTicket.Description} - TicketID: {newTicket.TicketID}\n");

            File.AppendAllText("CustTicketArchive.txt", newTicketToText);
        }
        public void CustTicketFormFilled(CustTicket ticket)
        {
            string status = ticket.Closed ? "Closed" : "Active";

            Console.Write(" Customer Name: ");
            ColourInput(ticket.CustomerName);
            Console.Write("\n Customer Email: ");
            ColourInput(ticket.CustomerEmail);
            Console.Write("\n Customer Phone:");
            ColourInput(ticket.CustomerPhone);
            Console.WriteLine("\n Description: ");
            ColourInput(ticket.Description);
            Console.Write("\n Submission Date: ");
            ColourInput($"{ticket.Date}");
            Console.Write("\n Ticket Status: ");
            ColourInput(status);
            Console.Write("\n Receiver: ");
            ColourInput(ticket.CSAgent);
            Console.Write("\n Handler: ");
            ColourInput(ticket.TechSupport);
            Console.Write("\n TicketID: ");
            ColourInput($"{ticket.TicketID} \n");
        }
        public CustTicket CustTicketFormAssignUsers(CustTicket ticket)
        {
            Console.Clear();

            CustTicketFormFilled(ticket);

            if (ticket.Closed == true)
            {
                Console.Write("Ticket is closed, do you want to reopen case? (Y/N)");
                string submit = Console.ReadLine();
                if (submit != "N" || submit != "n")
                {
                    ticket.Closed = false;
                }
            }

            Console.Write("\n Assign new Receiver Username (press enter if you don't want to assign a new receiver): ");
            string csagent = Console.ReadLine();
            bool   csagentExists;

            if (csagent == "")
            {
                csagent       = ticket.CSAgent;
                csagentExists = true;
            }
            else
            {
                using (var db = new EticketContext())
                {
                    if (db.CSAgents.Any(x => x.Username == csagent))
                    {
                        csagentExists = true;
                    }
                    else
                    {
                        csagentExists = false;
                    }
                }
            }
            if (csagentExists && csagent != ticket.CSAgent)
            {
                Console.Write($"\n Do you want to change the receiver from ");
                ColourInput(ticket.CSAgent);
                Console.Write("to ");
                ColourInput(csagent);
                Console.Write(" ? (Y/N) \n");
                string submit = Console.ReadLine();
                if (submit != "N" || submit != "n")
                {
                    ticket.CSAgent = csagent;
                }
            }
            else if (!csagentExists)
            {
                Console.WriteLine("The username you provided does not exist in the Customer Service Agents database. Press any key to continue");
                Console.ReadKey();
            }
            Console.Write($" Assign new Handler Username (press enter if you don't want to assign a new handler): ");
            string techsupport       = Console.ReadLine();
            bool   techsupportExists = false;

            if (techsupport == "")
            {
                techsupport       = ticket.TechSupport;
                techsupportExists = true;
            }
            else
            {
                using (var db = new EticketContext())
                {
                    if (db.TechSupportUsers.Any(x => x.Username == techsupport))
                    {
                        techsupportExists = true;
                    }
                    else
                    {
                        techsupportExists = false;
                    }
                }
            }
            if (techsupportExists && techsupport != ticket.TechSupport)
            {
                Console.Write($"\n Do you want to change the handler from ");
                ColourInput(ticket.TechSupport);
                Console.Write("to ");
                ColourInput(techsupport);
                Console.Write(" ? (Y/N) \n");
                string submit = Console.ReadLine();
                if (submit != "N" || submit != "n")
                {
                    ticket.TechSupport = techsupport;
                }
            }
            else if (!techsupportExists)
            {
                Console.WriteLine("The username you provided does not exist in the Technical Support Users database. Press any key to continue");
                Console.ReadKey();
            }
            return(ticket);
        }
        public CustTicket CustTicketFormEmpty(string username)
        {
            CustTicket Ticket = new CustTicket();

            Console.Clear();
            Console.Write(" Customer Name: ");
            string name = Console.ReadLine();

            Console.Clear();

            Console.Write($" Customer Name: ");
            ColourInput(name);
            Console.Write("\n Customer Email: ");
            string email = Console.ReadLine();

            Console.Clear();

            Console.Write($" Customer Name: ");
            ColourInput(name);
            Console.Write("\n Customer Email: ");
            ColourInput(email);
            Console.Write("\n Customer Phone: ");
            string phone = Console.ReadLine();

            Console.Clear();

            Console.Write($" Customer Name: ");
            ColourInput(name);
            Console.Write("\n Customer Email: ");
            ColourInput(email);
            Console.Write("\n Customer Phone: ");
            ColourInput(phone);
            Console.WriteLine("\n Description: ");
            string description = Console.ReadLine();

            Console.Clear();

            Console.Write($" Customer Name: ");
            ColourInput(name);
            Console.Write("\n Customer Email: ");
            ColourInput(email);
            Console.Write("\n Customer Phone: ");
            ColourInput(phone);
            Console.WriteLine("\n Description: ");
            ColourInput(description);


            Console.WriteLine("\nSubmit ticket? (Y/N) ");
            string selection = Console.ReadLine();

            if (selection != "N" && selection != "n")
            {
                Ticket.CustomerName  = name;
                Ticket.CustomerEmail = email;
                Ticket.CustomerPhone = phone;
                Ticket.Description   = description;
                Ticket.Date          = DateTime.Now;
                Ticket.Closed        = false;
                Ticket.CSAgent       = username;
                return(Ticket);
            }
            else
            {
                Ticket.CustomerName  = name;
                Ticket.CustomerEmail = email;
                Ticket.CustomerPhone = phone;
                Ticket.Description   = ($" INVALID TICKET \n {description}");
                Ticket.Date          = DateTime.Now;
                Ticket.Closed        = true;
                Ticket.CSAgent       = username;
                return(Ticket);
            }
        }
        public CustTicket CustTicketFormUpdate(CustTicket ticket)
        {
            Console.Clear();

            Console.Write(" Customer Name: ");
            ColourInput(ticket.CustomerName);
            string name = Console.ReadLine();

            if (name == "")
            {
                name = ticket.CustomerName;
            }
            Console.Clear();

            Console.Write(" Customer Name: ");
            ColourInput(ticket.CustomerName);
            Console.Write("\n Customer Email: ");
            ColourInput(ticket.CustomerEmail);
            string email = Console.ReadLine();

            if (email == "")
            {
                email = ticket.CustomerEmail;
            }
            Console.Clear();

            Console.Write(" Customer Name: ");
            ColourInput(ticket.CustomerName);
            Console.Write("\n Customer Email: ");
            ColourInput(ticket.CustomerEmail);
            Console.Write("\n Customer Phone:");
            ColourInput(ticket.CustomerPhone);
            string phone = Console.ReadLine();

            if (phone == "")
            {
                phone = ticket.CustomerPhone;
            }
            Console.Clear();

            Console.Write(" Customer Name: ");
            ColourInput(ticket.CustomerName);
            Console.Write("\n Customer Email: ");
            ColourInput(ticket.CustomerEmail);
            Console.Write("\n Customer Phone:");
            ColourInput(ticket.CustomerPhone);
            Console.WriteLine("\n Description: ");
            ColourInput(ticket.Description);
            Console.WriteLine("\n Added comments: ");
            string description    = Console.ReadLine();
            string newDescription = ($"{ticket.Description} \n {DateTime.Now} -Added comments- \n {description}");

            Console.Clear();
            Console.Write(" Customer Name: ");
            ColourInput(ticket.CustomerName);
            Console.Write("\n Customer Email: ");
            ColourInput(ticket.CustomerEmail);
            Console.Write("\n Customer Phone:");
            ColourInput(ticket.CustomerPhone);
            Console.WriteLine("\n Description: ");
            ColourInput(ticket.Description);
            Console.WriteLine("\n Added comments: ");
            ColourInput(description);
            Console.WriteLine("\n Do you want to close this ticket? (Y/N)");
            string closeTicket = Console.ReadLine();
            bool   close;

            if (closeTicket == "y" || closeTicket == "Y")
            {
                close = true;
            }
            else
            {
                close = ticket.Closed;
            }


            Console.WriteLine("\n Submit updated ticket? (Y/N) ");
            string selection = Console.ReadLine();


            if (selection != "N" || selection != "n")
            {
                ticket.CustomerName  = name;
                ticket.CustomerEmail = email;
                ticket.CustomerPhone = phone;
                ticket.Description   = newDescription;
                ticket.Closed        = close;
                Console.WriteLine("Ticket Updated.");
                Console.ReadKey();
                return(ticket);
            }
            else
            {
                Console.WriteLine("Couldn't update ticket.");
                Console.ReadKey();
                return(ticket);
            }
        }
Example #8
0
        public TechSupportUserMenu(TechSupportUser user)
        {
            bool logout = false;

            do
            {
                Console.Clear();
                HidePassword.Logo();

                Console.Write("Select a function: \n 1. Get new Customer Ticket \n 2. Search for a Customer Ticket \n 3. Update Customer Ticket \n 4. See all your tickets \n 5. Logout \n");
                string selection = Console.ReadLine();
                switch (selection)
                {
                case "1":
                    Console.Clear();
                    CustTicketManager getTicket = new CustTicketManager();
                    CustTicketForm    form      = new CustTicketForm();
                    CustTicket        ticket    = new CustTicket();
                    using (var db = new EticketContext())
                    {
                        ticket = db.CustTickets.FirstOrDefault(x => x.TechSupport == null && x.Closed == false);
                    }
                    CustTicket updatedTicket = form.CustTicketFormUpdate(ticket);
                    using (var db = new EticketContext())
                    {
                        ticket = db.CustTickets.SingleOrDefault(s => s.TicketID == ticket.TicketID);
                        ticket.CustomerName  = updatedTicket.CustomerName;
                        ticket.CustomerEmail = updatedTicket.CustomerEmail;
                        ticket.CustomerPhone = updatedTicket.CustomerPhone;
                        ticket.Description   = updatedTicket.Description;
                        ticket.TechSupport   = user.Username;
                        db.SaveChanges();
                    }

                    break;

                case "2":
                    Console.Clear();
                    Console.Write("Select a function: \n 1. Search all Tickets \n 2. Search only Open Tickets \n 3.Go Back \n");
                    string selection1 = Console.ReadLine();
                    switch (selection1)
                    {
                    case "1":

                        Console.Clear();
                        Console.Write("Search by: 1. Customer Name, 2. Customer Email, 3. Go Back \n");
                        string            selection2    = Console.ReadLine();
                        CustTicketForm    resultForm    = new CustTicketForm();
                        List <CustTicket> resultTickets = new List <CustTicket>();
                        CustTicketManager resultManager = new CustTicketManager();
                        switch (selection1)
                        {
                        case "1":
                            Console.Write("What is the Customer's Name? \n");
                            string customerName = Console.ReadLine();
                            resultManager.SearchAllTicketsByName(customerName);
                            PressAnyKey();
                            break;

                        case "2":
                            Console.Write("What is the Customer's Email? \n");
                            string customerEmail = Console.ReadLine();
                            resultManager.SearchAllTicketsByEmail(customerEmail);
                            PressAnyKey();
                            break;

                        case "3":
                            break;

                        default:
                            InvalidSelection();
                            break;
                        }
                        break;

                    case "2":
                        Console.Clear();
                        Console.Write("Search by: 1. Customer Name, 2. Customer Email, 3. Go Back \n");
                        string            selection3     = Console.ReadLine();
                        CustTicketForm    resultForm2    = new CustTicketForm();
                        List <CustTicket> resultTickets2 = new List <CustTicket>();
                        CustTicketManager resultManager2 = new CustTicketManager();
                        switch (selection1)
                        {
                        case "1":
                            Console.Write("What is the Customer's Name? \n");
                            string customerName = Console.ReadLine();
                            resultManager2.FindOpenTicketsByName(customerName);
                            PressAnyKey();
                            break;

                        case "2":
                            Console.Write("What is the Customer's Email? \n");
                            string customerEmail = Console.ReadLine();
                            resultManager2.FindOpenTicketsByEmail(customerEmail);
                            PressAnyKey();
                            break;

                        case "3":
                            break;

                        default:
                            InvalidSelection();
                            break;
                        }
                        break;

                    case "3":
                        break;

                    default:
                        InvalidSelection();
                        break;
                    }
                    break;

                case "3":
                    Console.Clear();
                    Console.Write("What is the TicketID of the Customer Ticket you want to update: ");
                    if (int.TryParse(Console.ReadLine(), out int ticketID))
                    {
                        CustTicketManager updateManager = new CustTicketManager();
                        updateManager.UpdateTicket(ticketID);
                    }
                    else
                    {
                        Console.Write("Invalid TicketID, all ticket IDs are numerals.");
                    }
                    PressAnyKey();
                    break;



                case "4":
                    CustTicketForm    form1     = new CustTicketForm();
                    List <CustTicket> myTickets = new List <CustTicket>();
                    using (var db = new EticketContext())
                    {
                        myTickets = db.CustTickets.Where(x => x.TechSupport == user.Username && x.Closed == false).ToList();
                    }
                    foreach (var item in myTickets)
                    {
                        form1.CustTicketFormFilled(item);
                    }
                    Console.ReadKey();
                    break;

                case "5":
                    logout = true;
                    break;

                default:
                    InvalidSelection();
                    break;
                }
            } while (!logout);
        }