// Problem 15 - Delete Project by ID
        private static void DeleteProjectById(SoftUniContext context, int id)
        {
            var projectToRemove = context.Projects.First(p => p.ProjectID == id);

            foreach (var employee in projectToRemove.Employees)
            {
                employee.Projects.Remove(projectToRemove);
            }

            context.Projects.Remove(projectToRemove);

            context.SaveChanges();
        }
        // Problem 12 - Increase Salaries
        private static void IncreaseSalaryOfEmployeesFromDepartment(SoftUniContext context, int percentage)
        {
            var employees = context.Employees
                            .Where(e => e.Department.Name == "Engineering" ||
                                   e.Department.Name == "Tool Design" ||
                                   e.Department.Name == "Marketing" ||
                                   e.Department.Name == "Information Services");

            foreach (var employee in employees)
            {
                employee.Salary = employee.Salary * (1 + percentage * 0.01m);
                Console.WriteLine($"{employee.FirstName} {employee.LastName} (${employee.Salary:F6})");
            }

            context.SaveChanges();
        }
        // Problem 06 - Adding a New Address and Updating Employee
        private static void AddAddressToEmployeeWithLastName(SoftUniContext context, string text, int townId, string lastName)
        {
            var employee = context.Employees
                           .FirstOrDefault(e => e.LastName == lastName);

            if (employee == null)
            {
                return;
            }

            employee.Address = new Address()
            {
                AddressText = text,
                TownID      = townId
            };

            context.SaveChanges();
        }
        // Problem 16 - Remove Towns
        private static void RemoveTown(SoftUniContext context)
        {
            Console.Write("Town: ");
            string town = Console.ReadLine();

            var townToRemove = context.Towns.FirstOrDefault(t => t.Name == town);

            if (townToRemove == null)
            {
                return;
            }

            int count     = townToRemove.Addresses.Count;
            var addresses = townToRemove.Addresses.ToList();

            foreach (var address in addresses)
            {
                var employees = context.Employees.Where(e => e.AddressID == address.AddressID);
                foreach (var employee in employees)
                {
                    employee.AddressID = null;
                    employee.Address   = null;
                }

                context.Addresses.Remove(address);
            }

            context.Towns.Remove(townToRemove);

            context.SaveChanges();

            string addressStr = count == 1 ? "address" : "addresses";
            string isStr      = count == 1 ? "was" : "were";

            Console.WriteLine($"{count} {addressStr} in {town} {isStr} deleted");
        }