public List<Ticket> ParseDataForTickets(List<string[]> data) {
     var ticketList = new List<Ticket>();
     data.ForEach(dataLine => {
         TicketStatus ticketStatus;
         Priority priority;
         decimal cost;
         Ticket eTicket = new EnhancementTicket {
             TicketID = int.Parse(dataLine[0]),
             Summary = dataLine[1].ToLower(),
             TicketStatus = Enum.TryParse(dataLine[2], out ticketStatus) ? ticketStatus : TicketStatus.Error, // ticketStatus parser
             Priority = Enum.TryParse(dataLine[3], out priority) ? priority : Priority.Error, // ticketPriority parser
             Submitter = dataLine[4].ToLower(),
             Assgined = dataLine[5].ToLower(),
             Watching = dataLine[6].ToLower().Split('|').ToList(),
             Software = dataLine[7].ToLower(),
             Cost = decimal.TryParse(dataLine[8], out cost) ? cost : 0,
             Reason = dataLine[8].ToLower(),
             Estimate = dataLine[9].ToLower()
         };
         ticketList.Add(eTicket);
     });
     return ticketList; 
 }
        public static void Main(string[] args)
        {
            string file        = "tickets.csv";
            string enhancefile = "nhancement.csv";
            string taskfile    = "task.csv";

            logger.Info("Prgram Started");


            ticketFile      ticketfile  = new ticketFile(file);
            EnhancementFile enhancement = new EnhancementFile(enhancefile);
            TaskFile        task        = new TaskFile(taskfile);

            string choice;

            do
            {
                //ask question
                Console.WriteLine("1) Make a Bug Ticket file.");
                Console.WriteLine("2) Read Bug Ticket data.");
                Console.WriteLine("3) Make an Enhanced Ticket File.");
                Console.WriteLine("4) Read Enhanced Ticket data.");
                Console.WriteLine("5) Make a Task Ticket file.");
                Console.WriteLine("6) Read Task Ticket Data.");
                Console.WriteLine("Press the any key to exit");

                choice = Console.ReadLine();
                logger.Info("User choice: ", choice);

                if (choice == "1")
                {
                    Ticket ticket = new Ticket();
                    for (int i = 0; i < 10; i++)
                    {
                        Console.WriteLine("Wanna enter a ticket (Y/N)?");
                        string reply = Console.ReadLine();
                        logger.Info("User Reply: ", reply);
                        if (reply != "Y")
                        {
                            break;
                        }

                        Console.WriteLine("Please enter the TicketID: ");
                        ticket.ticketID = Console.ReadLine();

                        Console.WriteLine("Please enter the Ticket Summary: ");
                        ticket.summary = Console.ReadLine();

                        Console.WriteLine("Please enter the Ticket Status");
                        ticket.status = Console.ReadLine();

                        Console.WriteLine("What is the Level of Priority?");
                        ticket.priorityLevel = Console.ReadLine();

                        Console.WriteLine("Who was assigned to this ticket?");
                        ticket.assignee = Console.ReadLine();

                        Console.WriteLine("Who submitted the ticket?");
                        ticket.submitter = Console.ReadLine();
                        string input;

                        do
                        {
                            Console.WriteLine("Whos is watching? (Enter 'exit' to quit program): ");
                            input = Console.ReadLine();
                            if (input != "exit" && input.Length > 0)
                            {
                                ticket.watching.Add(input);
                            }
                        } while (input != "exit");
                        if (ticket.watching.Count == 0)
                        {
                            ticket.watching.Add("(Nobody's watching the ticket!)");
                        }
                        ticketfile.AddTicket(ticket);
                    }
                }
                else if (choice == "2")
                {
                    foreach (Ticket ti in ticketfile.Ticket)
                    {
                        Console.WriteLine(ti.Display());
                    }
                }
                else if (choice == "3")
                {
                    EnhancementTicket enhancementTicket = new EnhancementTicket();
                    for (int i = 0; i < 10; i++)
                    {
                        Console.WriteLine("Wanna enter a ticket (Y/N)?");
                        string reply = Console.ReadLine().ToUpper();
                        logger.Info("User Reply: ", reply);
                        if (reply != "Y")
                        {
                            break;
                        }

                        Console.WriteLine("Please enter the TicketID");
                        enhancementTicket.ticketID = Console.ReadLine();

                        Console.WriteLine("Please enter the Ticket Summary: ");
                        enhancementTicket.summary = Console.ReadLine();

                        Console.WriteLine("Please enter the Ticket Status");
                        enhancementTicket.status = Console.ReadLine();

                        Console.WriteLine("What is the Level of Priority?");
                        enhancementTicket.priorityLevel = Console.ReadLine();

                        Console.WriteLine("Who was assigned to this ticket?");
                        enhancementTicket.assignee = Console.ReadLine();

                        Console.WriteLine("Who submitted the ticket?");
                        enhancementTicket.submitter = Console.ReadLine();

                        Console.WriteLine("What's the reason for the ticket?");
                        enhancementTicket.reason = Console.ReadLine();

                        Console.WriteLine("What kind of software for the ticket?");
                        enhancementTicket.software = Console.ReadLine();

                        Console.WriteLine("How much does the ticket cost?");
                        enhancementTicket.ticketCost = double.Parse(Console.ReadLine());

                        Console.WriteLine("What the ticket estimate?");
                        enhancementTicket.ticketEstimate = Console.ReadLine();
                        string input;

                        do
                        {
                            Console.WriteLine("Who's watching? (Enter 'exit' to quit the program): ");
                            input = Console.ReadLine();
                            if (input != "exit" && input.Length > 0)
                            {
                                enhancementTicket.watching.Add(input);
                            }
                        } while (input != "done");
                        if (enhancementTicket.watching.Count == 0)
                        {
                            enhancementTicket.watching.Add("Nobody's watchin the ticket!");
                        }
                        enhancement.AddTicket(enhancementTicket);
                    }
                }

                else if (choice == "4")
                {
                    foreach (EnhancementTicket et in enhancement.EnhancedTicket)
                    {
                        Console.WriteLine(et.Display());
                    }
                }

                else if (choice == "5")
                {
                    TaskTicketing taskTickets = new TaskTicketing();
                    for (int i = 0; i < 10; i++)
                    {
                        Console.WriteLine("Wanna enter a ticket (Y/N)?: ");
                        string reply = Console.ReadLine().ToUpper();
                        logger.Info("User reply: ", reply);
                        if (reply != "Y")
                        {
                            break;
                        }

                        Console.WriteLine("Please enter the TicketID: ");
                        taskTickets.ticketID = Console.ReadLine();

                        Console.WriteLine("Please enter the Ticket Summary");
                        taskTickets.summary = Console.ReadLine();

                        Console.WriteLine("What's the Ticket Status?");
                        taskTickets.status = Console.ReadLine();

                        Console.WriteLine("What's the Level of Priority?: ");
                        taskTickets.priorityLevel = Console.ReadLine();

                        Console.WriteLine("Who's assigned to this ticket?: ");
                        taskTickets.assignee = Console.ReadLine();

                        Console.WriteLine("Who submitted the ticket?: ");
                        taskTickets.submitter = Console.ReadLine();

                        Console.WriteLine("What's the due date for this task?");
                        taskTickets.dateDue = Console.ReadLine();

                        Console.WriteLine("What is the name of the project?");
                        taskTickets.projectName = Console.ReadLine();
                        string input;

                        do
                        {
                            Console.WriteLine("Who's watching? ( Enter 'exit' to quit the program): ");
                            input = Console.ReadLine();
                            if (input != "exit" && input.Length > 0)
                            {
                                taskTickets.watching.Add(input);
                            }
                        } while (input != "exit");
                        if (taskTickets.watching.Count == 0)
                        {
                            taskTickets.watching.Add("Nobody's watching the ticket!");
                        }
                        task.AddTicket(taskTickets);
                    }
                }
                else if (choice == "6")
                {
                    foreach (TaskTicketing tt in task.TaskTicketing)
                    {
                        Console.WriteLine(tt.Display());
                    }
                }
            } while (choice == "1" || choice == "2" || choice == "3" || choice == "4" || choice == "5" || choice == "6");
            logger.Info("End of Program");
        }