/// <summary>
        /// Remove PublicationTheme.
        /// </summary>
        /// <param name="request">The PublicationTheme Request Pivot to remove.</param>
        public void DeletePublicationTheme(PublicationThemeRequestPivot request)
        {
            if (request?.PublicationThemePivot == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            PublicationTheme publicationTheme = _unitOfWork.PublicationThemeRepository.GetById(request.PublicationThemePivot.PublicationThemeId);

            _unitOfWork.PublicationThemeRepository.Delete(publicationTheme);
            _unitOfWork.Save();
        }
 /// <summary>
 /// From PublicationTheme To PublicationTheme Pivot.
 /// </summary>
 /// <param name="publicationTheme">publicationTheme TO ASSEMBLE</param>
 /// <returns>PublicationThemePivot result.</returns>
 public static PublicationThemePivot ToPivot(this PublicationTheme publicationTheme)
 {
     if (publicationTheme == null)
     {
         return(null);
     }
     return(new PublicationThemePivot
     {
         PublicationThemeId = publicationTheme.PublicationThemeId,
         Publication = publicationTheme.Publication?.ToPivot(),
         PublicationId = publicationTheme.PublicationId,
         Theme = publicationTheme.Theme?.ToPivot(),
         ThemeId = publicationTheme.ThemeId
     });
 }
        /// <summary>
        /// Change PublicationTheme values Range.
        /// </summary>
        /// <param name="request">The PublicationTheme Request Pivot to change.</param>
        public void UpdatePublicationThemeRange(PublicationThemeRequestPivot request)
        {
            if (request?.PublicationThemePivotList == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            foreach (PublicationThemePivot publicationThemePivot in request.PublicationThemePivotList)
            {
                PublicationTheme publicationTheme = _unitOfWork.PublicationThemeRepository.GetById(publicationThemePivot.PublicationThemeId);
                publicationTheme.PublicationId = publicationThemePivot.PublicationId;
                publicationTheme.ThemeId       = publicationThemePivot.ThemeId;
                _unitOfWork.Save();
            }
        }
        /// <summary>
        /// Create new PublicationTheme.
        /// </summary>
        /// <param name="request">The PublicationTheme Request Pivot to add.</param>
        /// <returns>PublicationTheme Response Pivot created.</returns>
        public PublicationThemeResponsePivot CreatePublicationTheme(PublicationThemeRequestPivot request)
        {
            if (request?.PublicationThemePivot == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            PublicationTheme publicationTheme = request.PublicationThemePivot.ToEntity();

            _unitOfWork.PublicationThemeRepository.Insert(publicationTheme);
            _unitOfWork.Save();
            return(new PublicationThemeResponsePivot
            {
                PublicationThemePivot = publicationTheme.ToPivot()
            });
        }