static void Main(string[] args) { signalHandler += HandleConsoleSignal; ConsoleHelper.SetSignalHandler(signalHandler, true); //create tables Department.CreateDepartmentData(); ManagerDB.CreateManagerData(); EmployeeDB.CreateEmployeeData(); Console.WriteLine("Programm begin. For help press Alt + 'h'. Enter command : "); ConsoleKeyInfo res; char r; Console.WriteLine(); //we accept commands until we press alt + q do { res = Console.ReadKey(true); r = res.KeyChar; switch (res.Modifiers) { case ConsoleModifiers.Alt: AltSelection(res); break; case ConsoleModifiers.Shift: ShiftSelection(res); break; default: Console.WriteLine("Unknown command"); break; } }while ((r != 'q') || (res.Modifiers != ConsoleModifiers.Alt)); EmployeeDB.employeeTable.WriteXml("employee.xml"); ManagerDB.managerTable.WriteXml("managerTable.xml"); Console.Clear(); Console.WriteLine("program terminated"); }
//method for deleted a row with replace public static bool DeleteRow(DataRow row) { string msg = "Manager is removed only with replacement\n" + "to replace with an a new manager press 'n'\n" + "to replace with an existing employee press 'e'\n" + "to replace with an existing manager press 'm'\n"; string CurrentManagerId = row[0].ToString(); string DepartmentName = row[5].ToString(); string CurrentManagerName = $"{row[1]} {row[2]} (id: {row[0]})"; string DepartmentID = Department.GetId(DepartmentName).ToString(); char key = DataBase.GetChar(msg); switch (key) { case 'n': //replace with a new manager if (DataBase.AddRowForReplace(managerTable, DepartmentID)) //if added a new manager { managerTable.Rows.Remove(row); //remove the existing manager //replace the value of the existing manager with the new manager in the users table EmployeeDB.ChangeManeger(manager: CurrentManagerName, newManager: GetLastManager()); return(true); } break; case 'm': // replace one existing manager with another existing manager Console.WriteLine("enter ID existing manager: "); string exManId = Console.ReadLine(); // getting id if (CheckId(exManId)) // if value valid { DataRow existingManager = GetRowById(exManId); if (row[5].Equals(existingManager[5])) // if the departments are the same { managerTable.Rows.Remove(row); //remove manager EmployeeDB.ChangeManeger(manager: CurrentManagerName, newManager: GetLastManager()); return(true); } else { Console.WriteLine("Manager departments must match\n"); } } else { Console.WriteLine("Invalid manager ID"); } break; case 'e': // replace the existing manager with an employee Console.WriteLine("enter ID existing employee: "); string exEmpId = Console.ReadLine(); // getting employee ID if (DataBase.CheckId(EmployeeDB.employeeTable, exEmpId)) // if the ID is valid { DataRow rowEmployee = EmployeeDB.GetRowById(exEmpId); //geting employee row // add an employee as a manager AddRow(new string[] { rowEmployee[1].ToString(), rowEmployee[2].ToString(), rowEmployee[3].ToString(), rowEmployee[4].ToString(), DepartmentID }); // delete an employee EmployeeDB.DeleteRow(rowEmployee); managerTable.Rows.Remove(row); EmployeeDB.ChangeManeger(manager: CurrentManagerName, newManager: GetLastManager()); return(true); } else { Console.WriteLine("Invalid employee ID"); } break; default: Console.WriteLine("Unknown command"); break; } return(false); }