using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using GreenTree.Nachtragsmanagement.Core.Data; namespace GreenTree.Nachtragsmanagement.Services.Site { public class SiteService : ISiteService { #region Fields private readonly IRepository _siteRepository; #endregion #region Ctor /// /// Initializes a new instance of the SiteService class /// public SiteService( IRepository siteRepository) { _siteRepository = siteRepository; } #endregion #region Site /// /// Gets all sites /// public IList GetAllSites() { return _siteRepository.Table.ToList(); } /// /// Gets all sites where the user is assigned to if the current role only allows assigned sites /// public IList GetAllUserAssignedSites(Core.Domain.User.User user) { if (user == null || (user != null && user.CurrentRole == null)) return new List(); if (user.CurrentRole.SeeOnlyAssigned) { return _siteRepository.Table .Where(s => s.Users .Select(u => u.Id).Contains(user.Id)) .ToList(); } else return GetAllSites(); } /// /// Gets a site by specified Id /// /// Site identifier. public Core.Domain.Site.Site GetSiteById(int id) { return _siteRepository.GetById(id); } /// /// Gets all sites to the specified ids /// public IList GetSitesByIds(int[] ids) { return _siteRepository.Table .Where(u => ids.Contains(u.Id)) .ToList(); } /// /// Gets a site by specified customer number /// /// Customer number. public Core.Domain.Site.Site GetSiteByCustomNumber(string customNumber) { return _siteRepository .Table.FirstOrDefault(u => u.CustomNumber == customNumber); } /// /// Insert a site /// /// Site. public void InsertSite(Core.Domain.Site.Site site) { _siteRepository.Insert(site); } /// /// Update a site /// /// Site. public void UpdateSite(Core.Domain.Site.Site site) { _siteRepository.Update(site); } /// /// Delete a site /// /// Site. public void DeleteSite(Core.Domain.Site.Site site) { _siteRepository.Delete(site); } #endregion } }