diff --git a/WD7UVN_HFT_2023241.Endpoint/Controllers/WhoIsResponsibleForServiceController.cs b/WD7UVN_HFT_2023241.Endpoint/Controllers/WhoIsResponsibleForServiceController.cs new file mode 100644 index 0000000..32cdf21 --- /dev/null +++ b/WD7UVN_HFT_2023241.Endpoint/Controllers/WhoIsResponsibleForServiceController.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Mvc; +using WD7UVN_HFT_2023241.Logic; +using System.Linq; +using WD7UVN_HFT_2023241.Models; + +namespace WD7UVN_HFT_2023241.Endpoint +{ + [ApiController] + [Route("api/WhoIsResponsibleForService")] + public class WhoIsReponsibleForServiceController : ControllerBase + { + public ILogicServices LogicServices { get; set; } + + public WhoIsReponsibleForServiceController(ILogicServices LogicServices) + { + this.LogicServices = LogicServices; + } + + [HttpGet("{id}")] + public Employee WhoIsResponsibleForService([FromQuery] int id) + { + return LogicServices.WhoIsResponsibleForService(id); + } + } +} diff --git a/WD7UVN_HFT_2023241.Endpoint/Controllers/WhoMaintainsServiceController.cs b/WD7UVN_HFT_2023241.Endpoint/Controllers/WhoMaintainsServiceController.cs new file mode 100644 index 0000000..fb2df87 --- /dev/null +++ b/WD7UVN_HFT_2023241.Endpoint/Controllers/WhoMaintainsServiceController.cs @@ -0,0 +1,25 @@ +using Microsoft.AspNetCore.Mvc; +using WD7UVN_HFT_2023241.Logic; +using System.Linq; +using WD7UVN_HFT_2023241.Models; + +namespace WD7UVN_HFT_2023241.Endpoint +{ + [ApiController] + [Route("api/WhoMaintainsService")] + public class WhoMaintainsServiceController : ControllerBase + { + public ILogicServices LogicServices { get; set; } + + public WhoMaintainsServiceController(ILogicServices LogicServices) + { + this.LogicServices = LogicServices; + } + + [HttpGet("{id}")] + public IQueryable WhoUsesService([FromQuery] int id) + { + return LogicServices.WhoUsesService(id); + } + } +} diff --git a/WD7UVN_HFT_2023241.Logic/LogicServices.cs b/WD7UVN_HFT_2023241.Logic/LogicServices.cs index 0b0d338..dfb406c 100644 --- a/WD7UVN_HFT_2023241.Logic/LogicServices.cs +++ b/WD7UVN_HFT_2023241.Logic/LogicServices.cs @@ -13,6 +13,8 @@ namespace WD7UVN_HFT_2023241.Logic public IQueryable WhoWorksInMaintainerTeam(int maintainerTeamId); public IQueryable GetSubordinates(int managerId); public IQueryable WhoUsesService(int serviceId); + public Employee WhoIsResponsibleForService(int serviceId); + public IQueryable WhoMaintainsService(int serviceId); } public class LogicServices : ILogicServices @@ -24,7 +26,30 @@ namespace WD7UVN_HFT_2023241.Logic this.CRUDOperations = CRUDOperations; } - public IQueryable WhoWorksInMaintainerTeam(int maintainerTeamId) + public IQueryable WhoMaintainsService(int serviceId) + { + IQueryable query = + from employee in CRUDOperations.ReadAllEmployees() + join service in CRUDOperations.ReadAllServices() on employee.MAINTAINER_ID equals service.MAINTAINER_ID + where service.ID == serviceId + select employee; + + return query; + } + + public Employee WhoIsResponsibleForService(int serviceId) + { + var query = + from service in CRUDOperations.ReadAllServices() + join team in CRUDOperations.ReadAllMaintainerTeams() on service.MAINTAINER_ID equals team.ID + join employee in CRUDOperations.ReadAllEmployees() on team.LEADER_ID equals employee.ID + where service.ID == serviceId + select employee; + + return query.FirstOrDefault(); + } + +public IQueryable WhoWorksInMaintainerTeam(int maintainerTeamId) { return CRUDOperations .ReadAllEmployees()