namespace LaaProduction.Personalization { using LaaProduction.Personalization.Interfaces; using LaaProduction.Personalization.Models; using LaaProduction.Personalization.Repositories.Interfaces; using System; using System.Collections.Generic; public class SoftwareManager : ISoftwareManager { private readonly IFunctionsRepository functionsRepository; private readonly ISoftwareRepository softwareRepository; public SoftwareManager(IFunctionsRepository functionsRepository, ISoftwareRepository softwareRepository) { this.functionsRepository = functionsRepository; this.softwareRepository = softwareRepository; } public void AddVersion(Int16 softwareId, String assemblyName, Int32 majorV, Int32 minorV, Int32 buildV, DateTime validUntil, String description) => this.softwareRepository.AddVersion(softwareId, assemblyName, majorV, minorV, buildV, validUntil, description); public void DeleteVersion(Int32 versionId) => this.softwareRepository.Delete(versionId); public void EditVersion(Int32 versionId, DateTime? validUntil, String description) => this.softwareRepository.EditVersion(versionId, validUntil, description); public IEnumerable GetFunctions() => this.functionsRepository.All() ?? Array.Empty(); public IEnumerable GetFunctions(String token) => this.functionsRepository.Find(token) ?? Array.Empty(); public IEnumerable ListSoftwares() => this.softwareRepository.List() ?? Array.Empty(); public Object SoftwareDeteils(Int32 versionId) { var softwareDetails = this.softwareRepository.Details(versionId); if (softwareDetails != null) { softwareDetails.Versions = this.softwareRepository.Versions(softwareDetails.SoftwareId); softwareDetails.Functions = this.softwareRepository.Functions(softwareDetails.SoftwareId); } return softwareDetails; } public void UpdateFunction(Int16 softwareId, Int32 functionId, String function, IEnumerable employees) { if (this.functionsRepository.Exists(softwareId, functionId)) { this.functionsRepository.DeleteEmployeesFunctions(functionId); if (String.IsNullOrWhiteSpace(function)) { this.functionsRepository.DeleteFunction(functionId); } else { this.functionsRepository.UpdateFunction(functionId, function); this.functionsRepository.AddEmployeesFunctions(functionId, employees); } } else { if (!String.IsNullOrWhiteSpace(function)) { functionId = this.functionsRepository.AddFunction(softwareId, function); if (functionId > 0) { this.functionsRepository.AddEmployeesFunctions(functionId, employees); } } } } } }