using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GreenTree.Nachtragsmanagement.Core.Data;
using GreenTree.Nachtragsmanagement.Core.Domain.Misc;

namespace GreenTree.Nachtragsmanagement.Services.Misc
{
    public class MiscService : IMiscService
    {
        #region Fields

        private readonly IRepository<MailNotification> _mailNotificationRepository;

        #endregion

        #region Ctor

        /// <summary>
        /// Initializes a new instance of the MiscService class
        /// </summary>
        public MiscService(
            IRepository<MailNotification> mailNotificationRepository)
        {
            _mailNotificationRepository = mailNotificationRepository;
        }

        #endregion

        #region MailNotification

        /// <summary>
        /// Gets all mailNotifications
        /// </summary>
        public IList<MailNotification> GetAllMailNotifications()
        {
            return _mailNotificationRepository.Table.ToList();
        }

        /// <summary>
        /// Gets a mailNotification by specified Id
        /// </summary>
        /// <param name="id">MailNotification identifier.</param>
        public MailNotification GetMailNotificationById(int id)
        {
            return _mailNotificationRepository.GetById(id);
        }

        /// <summary>
        /// Gets all mailNotifications to the specified ids
        /// </summary>
        public IList<MailNotification> GetMailNotificationsByIds(int[] ids)
        {
            return _mailNotificationRepository.Table
                .Where(u => ids.Contains(u.Id))
                .ToList();
        }

        /// <summary>
        /// Insert a mailNotification
        /// </summary>
        /// <param name="mailNotification">MailNotification.</param>
        public void InsertMailNotification(MailNotification mailNotification)
        {
            _mailNotificationRepository.Insert(mailNotification);
        }

        /// <summary>
        /// Update a mailNotification
        /// </summary>
        /// <param name="mailNotification">MailNotification.</param>
        public void UpdateMailNotification(MailNotification mailNotification)
        {
            _mailNotificationRepository.Update(mailNotification);
        }

        /// <summary>
        /// Delete a mailNotification
        /// </summary>
        /// <param name="mailNotification">MailNotification.</param>
        public void DeleteMailNotification(MailNotification mailNotification)
        {
            _mailNotificationRepository.Delete(mailNotification);
        }

        #endregion
    }
}