/// <summary>
        /// Search NewsletterMailTranslation by id.
        /// </summary>
        /// <param name="request">The NewsletterMailTranslation Request Pivot to retrive.</param>
        /// <returns>NewsletterMailTranslation Response Pivot response.</returns>
        public NewsletterMailTranslationResponsePivot FindNewsletterMailTranslations(NewsletterMailTranslationRequestPivot request)
        {
            if (request?.NewsletterMailTranslationPivot == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            List <NewsletterMailTranslationPivot> results = new List <NewsletterMailTranslationPivot>();
            NewsletterMailTranslationPivot        result  = new NewsletterMailTranslationPivot();

            switch (request.FindNewsletterMailTranslationPivot)
            {
            case FindNewsletterMailTranslationPivot.NewsletterMailTranslationId:
                result = _unitOfWork.NewsletterMailTranslationRepository.Get(f => f.TranslationId == request.NewsletterMailTranslationPivot.TranslationId, null, "Language,NewsletterMail")?.FirstOrDefault().ToPivot();
                break;

            case FindNewsletterMailTranslationPivot.NewsletterMailId:
                results = _unitOfWork.NewsletterMailTranslationRepository.Get(f => f.NewsletterMailId == request.NewsletterMailTranslationPivot.NewsletterMailId, null, "Language,NewsletterMail")?.ToList().ToPivotList();
                break;
            }
            return(new NewsletterMailTranslationResponsePivot
            {
                NewsletterMailTranslationPivotList = results,
                NewsletterMailTranslationPivot = result
            });
        }
        /// <summary>
        /// Remove NewsletterMailTranslation.
        /// </summary>
        /// <param name="request">The NewsletterMailTranslation Request Pivot to remove.</param>
        public void DeleteNewsletterMailTranslation(NewsletterMailTranslationRequestPivot request)
        {
            if (request?.NewsletterMailTranslationPivot == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            NewsletterMailTranslation newsletterMailTranslation = _unitOfWork.NewsletterMailTranslationRepository.GetById(request.NewsletterMailTranslationPivot.TranslationId);

            _unitOfWork.NewsletterMailTranslationRepository.Delete(newsletterMailTranslation);
            _unitOfWork.Save();
        }
        /// <summary>
        /// Change NewsletterMailTranslation values.
        /// </summary>
        /// <param name="request">The NewsletterMailTranslation Request Pivot to change.</param>
        public void UpdateNewsletterMailTranslation(NewsletterMailTranslationRequestPivot request)
        {
            if (request?.NewsletterMailTranslationPivot == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            NewsletterMailTranslation newsletterMailTranslation = _unitOfWork.NewsletterMailTranslationRepository.GetById(request.NewsletterMailTranslationPivot.TranslationId);

            if (request.NewsletterMailTranslationPivot.NewsletterMailSource != null)
            {
                newsletterMailTranslation.NewsletterMailSource = request.NewsletterMailTranslationPivot.NewsletterMailSource;
            }
            newsletterMailTranslation.NewsletterMailSubject = request.NewsletterMailTranslationPivot.NewsletterMailSubject;
            _unitOfWork.Save();
        }
        /// <summary>
        /// Change NewsletterMailTranslation values.
        /// </summary>
        /// <param name="request">The NewsletterMailTranslation Request Pivot to change.</param>
        public void UpdateNewsletterMailTranslationRange(NewsletterMailTranslationRequestPivot request)
        {
            if (request?.NewsletterMailTranslationPivotList == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            foreach (var translation in request.NewsletterMailTranslationPivotList)
            {
                NewsletterMailTranslation newsletterMailTranslation = _unitOfWork.NewsletterMailTranslationRepository.GetById(translation.TranslationId);
                if (translation.NewsletterMailSource != null)
                {
                    newsletterMailTranslation.NewsletterMailSource = translation.NewsletterMailSource;
                }
                newsletterMailTranslation.NewsletterMailSubject = translation.NewsletterMailSubject;
                _unitOfWork.Save();
            }
        }
        /// <summary>
        /// Create new NewsletterMailTranslation.
        /// </summary>
        /// <param name="request">The NewsletterMailTranslation Request Pivot to add.</param>
        /// <returns>NewsletterMailTranslation Response Pivot created.</returns>
        public NewsletterMailTranslationResponsePivot CreateNewsletterMailTranslationRange(NewsletterMailTranslationRequestPivot request)
        {
            if (request?.NewsletterMailTranslationPivotList == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            List <NewsletterMailTranslation> newsletterMailTranslationList = request.NewsletterMailTranslationPivotList.ToEntityList();

            _unitOfWork.NewsletterMailTranslationRepository.Insert(newsletterMailTranslationList);
            _unitOfWork.Save();

            return(new NewsletterMailTranslationResponsePivot
            {
                NewsletterMailTranslationPivotList = newsletterMailTranslationList.ToPivotList()
            });
        }