Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using SoftUni.Data;
- using SoftUni.Models;
- using System;
- using System.Globalization;
- using System.Linq;
- using System.Text;
- namespace SoftUni
- {
- public class StartUp
- {
- public static void Main(string[] args)
- {
- var context = new SoftUniContext();
- var result = GetEmployeesByFirstNameStartingWithSa(context);
- Console.WriteLine(result);
- }
- //Problem 03
- public static string GetEmployeesFullInformation(SoftUniContext context)
- {
- StringBuilder sb = new StringBuilder();
- var employees = context.Employees
- .OrderBy(e => e.EmployeeId)
- .Select(e => new
- {
- Name = String.Join(" ", e.FirstName, e.LastName, e.MiddleName),
- e.JobTitle,
- e.Salary
- })
- .ToList();
- foreach (var empl in employees)
- {
- sb.AppendLine($"{empl.Name} {empl.JobTitle} {empl.Salary:F2}");
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 04
- public static string GetEmployeesWithSalaryOver50000(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var employees = context.Employees
- .OrderBy(e => e.FirstName)
- .Select(e => new
- {
- e.FirstName,
- e.Salary
- })
- .Where(e => e.Salary > 50000)
- .ToList();
- foreach (var empl in employees)
- {
- sb.AppendLine($"{empl.FirstName} - {empl.Salary:F2}");
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 05
- public static string GetEmployeesFromResearchAndDevelopment(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var employees = context.Employees
- .OrderBy(e => e.Salary)
- .ThenByDescending(e => e.FirstName)
- .Select(e => new
- {
- Name = String.Join(" ", e.FirstName, e.LastName),
- DepartmentName = e.Department.Name,
- e.Salary
- })
- .Where(e => e.DepartmentName == "Research and Development")
- .ToList();
- foreach (var empl in employees)
- {
- sb.AppendLine($"{empl.Name} from {empl.DepartmentName} - ${empl.Salary:F2}");
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 06
- public static string AddNewAddressToEmployee(SoftUniContext context)
- {
- var sb = new StringBuilder();
- Address address = new Address()
- {
- AddressText = "Vitoshka 15",
- TownId = 4
- };
- Employee nakov = context.Employees
- .First(e => e.LastName == "Nakov");
- nakov.Address = address;
- context.SaveChanges();
- var addressText = context.Employees
- .OrderByDescending(e => e.AddressId)
- .Select(e => e.Address.AddressText)
- .Take(10)
- .ToList();
- foreach (var addr in addressText)
- {
- sb.AppendLine(addr);
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 07
- public static string GetEmployeesInPeriod(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var employees = context.Employees
- .Where(e => e.EmployeesProjects
- .Any(p => p.Project.StartDate.Year >= 2001
- && p.Project.StartDate.Year <= 2003))
- .Select(e => new
- {
- Name = String.Join(" ", e.FirstName, e.LastName),
- ManagerName = String.Join(" ", e.Manager.FirstName, e.Manager.LastName),
- Projects = e.EmployeesProjects
- .Select(p => p.Project)
- })
- .Take(10)
- .ToList();
- foreach (var empl in employees)
- {
- sb.AppendLine($"{empl.Name} - Manager: {empl.ManagerName}");
- foreach (var proj in empl.Projects)
- {
- var startDate = proj.StartDate.ToString("M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
- //var endDate = proj.EndDate == null ?
- // "not finished" :
- // proj.EndDate.Value.ToString("M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
- var endDate = proj.EndDate.ToString();
- if (endDate == string.Empty)
- {
- endDate = "not finished";
- }
- else
- {
- endDate = proj.EndDate.Value.ToString("M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
- }
- sb.AppendLine($"--{proj.Name} - {startDate} - {endDate}");
- }
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 08
- public static string GetAddressesByTown(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var addresses = context.Addresses
- .Select(a => new
- {
- Text = a.AddressText,
- TownName = a.Town.Name,
- CountEmpl = a.Employees.Count
- })
- .OrderByDescending(a => a.CountEmpl)
- .ThenBy(a => a.TownName)
- .ThenBy(a => a.Text)
- .Take(10)
- .ToList();
- foreach (var addr in addresses)
- {
- sb.AppendLine($"{addr.Text}, {addr.TownName} - {addr.CountEmpl} employees");
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 09
- public static string GetEmployee147(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var employee = context.Employees
- .Where(e => e.EmployeeId == 147)
- .Select(e => new
- {
- e.FirstName,
- e.LastName,
- e.JobTitle,
- Projects = e.EmployeesProjects
- .Select(p => p.Project.Name)
- .OrderBy(p => p)
- })
- .FirstOrDefault();
- var emplName = String.Join(" ", employee.FirstName, employee.LastName);
- sb.AppendLine($"{emplName} - {employee.JobTitle}");
- foreach (var proj in employee.Projects)
- {
- sb.AppendLine(proj);
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 10
- public static string GetDepartmentsWithMoreThan5Employees(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var departements = context.Departments
- .Where(d => d.Employees.Count > 5)
- .OrderBy(d => d.Employees.Count)
- .ThenBy(d => d.Name)
- .Select(d => new
- {
- d.Name,
- ManagerName = String.Join(" ", d.Manager.FirstName, d.Manager.LastName),
- Employees = d.Employees
- .Select(e => new {
- e.FirstName,
- e.LastName,
- e.JobTitle
- })
- .OrderBy(e => e.FirstName)
- .ThenBy(e => e.LastName)
- })
- .ToList();
- foreach (var dep in departements)
- {
- sb.AppendLine($"{dep.Name} - {dep.ManagerName}");
- foreach (var empl in dep.Employees)
- {
- sb.AppendLine($"{empl.FirstName} {empl.LastName} - {empl.JobTitle}");
- }
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 11
- public static string GetLatestProjects(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var projects = context.Projects
- .OrderByDescending(p => p.StartDate)
- .Take(10)
- .OrderBy(p => p.Name)
- .ToList();
- foreach (var proj in projects)
- {
- sb.AppendLine(proj.Name);
- sb.AppendLine(proj.Description);
- sb.AppendLine(proj.StartDate.ToString("M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture));
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 12
- public static string IncreaseSalaries(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var employees = context.Employees
- .Where(е => е.Department.Name == "Engineering" ||
- е.Department.Name == "Tool Design" ||
- е.Department.Name == "Marketing" ||
- е.Department.Name == "Information Services")
- .Select(e => new {
- e.FirstName,
- e.LastName,
- e.Salary
- })
- .OrderBy(e => e.FirstName)
- .ThenBy(e => e.LastName)
- .ToList();
- foreach (var e in employees)
- {
- sb.AppendLine($"{e.FirstName} {e.LastName} (${e.Salary * 1.12m:F2})");
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 13
- public static string GetEmployeesByFirstNameStartingWithSa(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var employees = context.Employees
- .Where(e => e.FirstName.StartsWith("Sa"))
- .Select(e => new
- {
- e.FirstName,
- e.LastName,
- e.JobTitle,
- e.Salary
- })
- .OrderBy(e => e.FirstName)
- .ThenBy(e => e.LastName)
- .ToList();
- foreach (var empl in employees)
- {
- sb.AppendLine($"{empl.FirstName} {empl.LastName} - {empl.JobTitle} - (${empl.Salary:F2})");
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 14
- public static string DeleteProjectById(SoftUniContext context)
- {
- var sb = new StringBuilder();
- var projectToRemove = context.Projects
- .FirstOrDefault(p => p.ProjectId == 2);
- var employeesProjects = context.EmployeesProjects
- .Where(p => p.ProjectId == 2)
- .ToList();
- foreach (var employeeProject in employeesProjects)
- {
- context.EmployeesProjects.Remove(employeeProject);
- }
- context.Projects.Remove(projectToRemove);
- context.SaveChanges();
- var projects = context.Projects
- .Select(p => p.Name)
- .Take(10)
- .ToList();
- foreach (var name in projects)
- {
- sb.AppendLine(name);
- }
- return sb.ToString().TrimEnd();
- }
- //Problem 15
- public static string RemoveTown(SoftUniContext context)
- {
- var addressIdsToRemove = context.Addresses
- .Where(a => a.Town.Name == "Seattle")
- .Select(a => a.AddressId)
- .ToList();
- var employees = context.Employees
- .ToList();
- foreach (var id in addressIdsToRemove)
- {
- foreach (var emp in employees)
- {
- emp.AddressId = null;
- }
- }
- var addressesToRemove = context.Addresses
- .Where(a => a.Town.Name == "Seattle")
- .ToList();
- foreach (var address in addressesToRemove)
- {
- context.Addresses.Remove(address);
- }
- var townToRemove = context.Towns
- .FirstOrDefault(t => t.Name == "Seattle");
- context.Towns.Remove(townToRemove);
- context.SaveChanges();
- return $"{addressesToRemove.Count} addresses in Seattle were deleted";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement