Advertisement
gabi11

Entity Framework Introduction

Nov 4th, 2019
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.82 KB | None | 0 0
  1. using SoftUni.Data;
  2. using SoftUni.Models;
  3. using System;
  4. using System.Globalization;
  5. using System.Linq;
  6. using System.Text;
  7.  
  8. namespace SoftUni
  9. {
  10.     public class StartUp
  11.     {
  12.         public static void Main(string[] args)
  13.         {
  14.             var context = new SoftUniContext();
  15.  
  16.             var result = GetEmployeesByFirstNameStartingWithSa(context);
  17.  
  18.             Console.WriteLine(result);
  19.         }
  20.  
  21.         //Problem 03
  22.         public static string GetEmployeesFullInformation(SoftUniContext context)
  23.         {
  24.             StringBuilder sb = new StringBuilder();
  25.  
  26.             var employees = context.Employees
  27.                 .OrderBy(e => e.EmployeeId)
  28.                 .Select(e => new
  29.                 {
  30.                     Name = String.Join(" ", e.FirstName, e.LastName, e.MiddleName),
  31.                     e.JobTitle,
  32.                     e.Salary
  33.  
  34.                 })
  35.                 .ToList();
  36.  
  37.             foreach (var empl in employees)
  38.             {
  39.                 sb.AppendLine($"{empl.Name} {empl.JobTitle} {empl.Salary:F2}");
  40.             }
  41.  
  42.             return sb.ToString().TrimEnd();
  43.         }
  44.  
  45.         //Problem 04
  46.         public static string GetEmployeesWithSalaryOver50000(SoftUniContext context)
  47.         {
  48.             var sb = new StringBuilder();
  49.  
  50.             var employees = context.Employees
  51.                 .OrderBy(e => e.FirstName)
  52.                 .Select(e => new
  53.                 {
  54.                     e.FirstName,
  55.                     e.Salary
  56.                 })
  57.                 .Where(e => e.Salary > 50000)
  58.                 .ToList();
  59.  
  60.             foreach (var empl in employees)
  61.             {
  62.                 sb.AppendLine($"{empl.FirstName} - {empl.Salary:F2}");
  63.             }
  64.  
  65.             return sb.ToString().TrimEnd();
  66.         }
  67.  
  68.         //Problem 05
  69.         public static string GetEmployeesFromResearchAndDevelopment(SoftUniContext context)
  70.         {
  71.             var sb = new StringBuilder();
  72.  
  73.             var employees = context.Employees
  74.                 .OrderBy(e => e.Salary)
  75.                 .ThenByDescending(e => e.FirstName)
  76.                 .Select(e => new
  77.                 {
  78.                     Name = String.Join(" ", e.FirstName, e.LastName),
  79.                     DepartmentName = e.Department.Name,
  80.                     e.Salary
  81.                 })
  82.                 .Where(e => e.DepartmentName == "Research and Development")
  83.                 .ToList();
  84.  
  85.             foreach (var empl in employees)
  86.             {
  87.                 sb.AppendLine($"{empl.Name} from {empl.DepartmentName} - ${empl.Salary:F2}");
  88.             }
  89.  
  90.             return sb.ToString().TrimEnd();
  91.  
  92.         }
  93.  
  94.         //Problem 06
  95.         public static string AddNewAddressToEmployee(SoftUniContext context)
  96.         {
  97.             var sb = new StringBuilder();
  98.  
  99.             Address address = new Address()
  100.             {
  101.                 AddressText = "Vitoshka 15",
  102.                 TownId = 4
  103.             };
  104.  
  105.             Employee nakov = context.Employees
  106.                 .First(e => e.LastName == "Nakov");
  107.  
  108.             nakov.Address = address;
  109.  
  110.             context.SaveChanges();
  111.  
  112.             var addressText = context.Employees
  113.                 .OrderByDescending(e => e.AddressId)
  114.                 .Select(e => e.Address.AddressText)
  115.                 .Take(10)
  116.                 .ToList();
  117.  
  118.             foreach (var addr in addressText)
  119.             {
  120.                 sb.AppendLine(addr);
  121.             }
  122.  
  123.             return sb.ToString().TrimEnd();
  124.         }
  125.  
  126.         //Problem 07
  127.         public static string GetEmployeesInPeriod(SoftUniContext context)
  128.         {
  129.             var sb = new StringBuilder();
  130.  
  131.             var employees = context.Employees
  132.                 .Where(e => e.EmployeesProjects
  133.                     .Any(p => p.Project.StartDate.Year >= 2001
  134.                         && p.Project.StartDate.Year <= 2003))
  135.                 .Select(e => new
  136.                 {
  137.                     Name = String.Join(" ", e.FirstName, e.LastName),
  138.                     ManagerName = String.Join(" ", e.Manager.FirstName, e.Manager.LastName),
  139.                     Projects = e.EmployeesProjects
  140.                         .Select(p => p.Project)
  141.                 })
  142.                 .Take(10)
  143.                 .ToList();
  144.  
  145.             foreach (var empl in employees)
  146.             {
  147.                 sb.AppendLine($"{empl.Name} - Manager: {empl.ManagerName}");
  148.  
  149.                 foreach (var proj in empl.Projects)
  150.                 {
  151.                     var startDate = proj.StartDate.ToString("M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
  152.                     //var endDate = proj.EndDate == null ?
  153.                     //    "not finished" :
  154.                     //    proj.EndDate.Value.ToString("M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
  155.  
  156.                     var endDate = proj.EndDate.ToString();
  157.  
  158.                     if (endDate == string.Empty)
  159.                     {
  160.                         endDate = "not finished";
  161.                     }
  162.  
  163.                     else
  164.                     {
  165.                         endDate = proj.EndDate.Value.ToString("M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
  166.                     }
  167.  
  168.                     sb.AppendLine($"--{proj.Name} - {startDate} - {endDate}");
  169.                 }
  170.             }
  171.  
  172.             return sb.ToString().TrimEnd();
  173.         }
  174.  
  175.         //Problem 08
  176.         public static string GetAddressesByTown(SoftUniContext context)
  177.         {
  178.             var sb = new StringBuilder();
  179.  
  180.             var addresses = context.Addresses
  181.                 .Select(a => new
  182.                 {
  183.                     Text = a.AddressText,
  184.                     TownName = a.Town.Name,
  185.                     CountEmpl = a.Employees.Count
  186.                 })
  187.                 .OrderByDescending(a => a.CountEmpl)
  188.                 .ThenBy(a => a.TownName)
  189.                 .ThenBy(a => a.Text)
  190.                 .Take(10)
  191.                 .ToList();
  192.  
  193.             foreach (var addr in addresses)
  194.             {
  195.                 sb.AppendLine($"{addr.Text}, {addr.TownName} - {addr.CountEmpl} employees");
  196.             }
  197.  
  198.  
  199.             return sb.ToString().TrimEnd();
  200.         }
  201.  
  202.         //Problem 09
  203.         public static string GetEmployee147(SoftUniContext context)
  204.         {
  205.             var sb = new StringBuilder();
  206.  
  207.             var employee = context.Employees
  208.                 .Where(e => e.EmployeeId == 147)
  209.                 .Select(e => new
  210.                 {
  211.                     e.FirstName,
  212.                     e.LastName,
  213.                     e.JobTitle,
  214.                     Projects = e.EmployeesProjects
  215.                     .Select(p => p.Project.Name)
  216.                     .OrderBy(p => p)
  217.                 })
  218.                 .FirstOrDefault();
  219.  
  220.             var emplName = String.Join(" ", employee.FirstName, employee.LastName);
  221.  
  222.             sb.AppendLine($"{emplName} - {employee.JobTitle}");
  223.  
  224.             foreach (var proj in employee.Projects)
  225.             {
  226.                 sb.AppendLine(proj);
  227.             }
  228.  
  229.             return sb.ToString().TrimEnd();
  230.         }
  231.  
  232.         //Problem 10
  233.         public static string GetDepartmentsWithMoreThan5Employees(SoftUniContext context)
  234.         {
  235.             var sb = new StringBuilder();
  236.  
  237.             var departements = context.Departments
  238.                 .Where(d => d.Employees.Count > 5)
  239.                 .OrderBy(d => d.Employees.Count)
  240.                 .ThenBy(d => d.Name)
  241.                 .Select(d => new
  242.                 {
  243.                     d.Name,
  244.                     ManagerName = String.Join(" ", d.Manager.FirstName, d.Manager.LastName),
  245.                     Employees = d.Employees
  246.                         .Select(e => new {
  247.                             e.FirstName,
  248.                             e.LastName,
  249.                             e.JobTitle
  250.                         })
  251.                         .OrderBy(e => e.FirstName)
  252.                         .ThenBy(e => e.LastName)
  253.                 })
  254.                 .ToList();
  255.  
  256.  
  257.             foreach (var dep in departements)
  258.             {
  259.                 sb.AppendLine($"{dep.Name} - {dep.ManagerName}");
  260.  
  261.                 foreach (var empl in dep.Employees)
  262.                 {
  263.                     sb.AppendLine($"{empl.FirstName} {empl.LastName} - {empl.JobTitle}");
  264.                 }
  265.             }
  266.  
  267.             return sb.ToString().TrimEnd();
  268.         }
  269.  
  270.         //Problem 11
  271.         public static string GetLatestProjects(SoftUniContext context)
  272.         {
  273.             var sb = new StringBuilder();
  274.  
  275.             var projects = context.Projects
  276.                 .OrderByDescending(p => p.StartDate)
  277.                 .Take(10)
  278.                 .OrderBy(p => p.Name)
  279.                 .ToList();
  280.  
  281.             foreach (var proj in projects)
  282.             {
  283.                 sb.AppendLine(proj.Name);
  284.                 sb.AppendLine(proj.Description);
  285.                 sb.AppendLine(proj.StartDate.ToString("M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture));
  286.             }
  287.  
  288.             return sb.ToString().TrimEnd();
  289.         }
  290.  
  291.         //Problem 12
  292.         public static string IncreaseSalaries(SoftUniContext context)
  293.         {
  294.             var sb = new StringBuilder();
  295.  
  296.             var employees = context.Employees
  297.                 .Where(е => е.Department.Name == "Engineering" ||
  298.                 е.Department.Name == "Tool Design" ||
  299.                 е.Department.Name == "Marketing" ||
  300.                 е.Department.Name == "Information Services")
  301.                 .Select(e => new {
  302.                     e.FirstName,
  303.                     e.LastName,
  304.                     e.Salary
  305.                 })
  306.                 .OrderBy(e => e.FirstName)
  307.                 .ThenBy(e => e.LastName)
  308.                 .ToList();
  309.  
  310.             foreach (var e in employees)
  311.             {
  312.                 sb.AppendLine($"{e.FirstName} {e.LastName} (${e.Salary * 1.12m:F2})");
  313.             }
  314.  
  315.             return sb.ToString().TrimEnd();
  316.         }
  317.  
  318.         //Problem 13
  319.         public static string GetEmployeesByFirstNameStartingWithSa(SoftUniContext context)
  320.         {
  321.             var sb = new StringBuilder();
  322.  
  323.             var employees = context.Employees
  324.                 .Where(e => e.FirstName.StartsWith("Sa"))
  325.                 .Select(e => new
  326.                 {
  327.                     e.FirstName,
  328.                     e.LastName,
  329.                     e.JobTitle,
  330.                     e.Salary
  331.                 })
  332.                 .OrderBy(e => e.FirstName)
  333.                 .ThenBy(e => e.LastName)
  334.                 .ToList();
  335.  
  336.             foreach (var empl in employees)
  337.             {
  338.                 sb.AppendLine($"{empl.FirstName} {empl.LastName} - {empl.JobTitle} - (${empl.Salary:F2})");
  339.             }
  340.  
  341.             return sb.ToString().TrimEnd();
  342.         }
  343.  
  344.         //Problem 14
  345.         public static string DeleteProjectById(SoftUniContext context)
  346.         {
  347.             var sb = new StringBuilder();
  348.  
  349.             var projectToRemove = context.Projects
  350.                 .FirstOrDefault(p => p.ProjectId == 2);
  351.  
  352.             var employeesProjects = context.EmployeesProjects
  353.                 .Where(p => p.ProjectId == 2)
  354.                 .ToList();
  355.  
  356.             foreach (var employeeProject in employeesProjects)
  357.             {
  358.                 context.EmployeesProjects.Remove(employeeProject);
  359.             }
  360.  
  361.             context.Projects.Remove(projectToRemove);
  362.  
  363.             context.SaveChanges();
  364.  
  365.             var projects = context.Projects
  366.                 .Select(p => p.Name)
  367.                 .Take(10)
  368.                 .ToList();
  369.  
  370.             foreach (var name in projects)
  371.             {
  372.                 sb.AppendLine(name);
  373.             }
  374.  
  375.             return sb.ToString().TrimEnd();
  376.         }
  377.  
  378.         //Problem 15
  379.         public static string RemoveTown(SoftUniContext context)
  380.         {
  381.             var addressIdsToRemove = context.Addresses
  382.                 .Where(a => a.Town.Name == "Seattle")
  383.                 .Select(a => a.AddressId)
  384.                 .ToList();
  385.  
  386.             var employees = context.Employees
  387.                 .ToList();
  388.  
  389.             foreach (var id in addressIdsToRemove)
  390.             {
  391.                 foreach (var emp in employees)
  392.                 {
  393.                     emp.AddressId = null;
  394.                 }
  395.             }
  396.  
  397.             var addressesToRemove = context.Addresses
  398.                 .Where(a => a.Town.Name == "Seattle")
  399.                 .ToList();
  400.  
  401.             foreach (var address in addressesToRemove)
  402.             {
  403.                 context.Addresses.Remove(address);
  404.             }
  405.  
  406.             var townToRemove = context.Towns
  407.                 .FirstOrDefault(t => t.Name == "Seattle");
  408.  
  409.             context.Towns.Remove(townToRemove);
  410.  
  411.             context.SaveChanges();
  412.  
  413.             return $"{addressesToRemove.Count} addresses in Seattle were deleted";
  414.         }
  415.     }
  416. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement