/// <summary>
        /// Function to save project artifact details.
        /// </summary>
        /// <param name="processComplianceListItem">Process compliance information</param>
        /// <param name="modifyByDeveloperId">Modified by developer id</param>
        public void InsertOrUpdate(ProcessComplianceListItem processComplianceListItem, int modifyByDeveloperId)
        {
            if (processComplianceListItem == null)
            {
                throw new ArgumentNullException(ProcessComplianceListItemConst);
            }

            var projectArtifact = new ProjectArtifact()
            {
                ArtifactID = processComplianceListItem.ArtifactID.Value,
                Comment = processComplianceListItem.Comment,
                DueDate = processComplianceListItem.DueDate,
                ModifiedByDeveloperID = modifyByDeveloperId,
                ProjectArtifactID = processComplianceListItem.ProjectArtifactID.Value,
                ProjectID = processComplianceListItem.ProjectID,
                ReleaseCalendarID = processComplianceListItem.ReleaseCalendarID,
                Status = processComplianceListItem.Status.Value,
                URL = processComplianceListItem.URL
            };

            this.projectArtifactRepository.InsertOrUpdate(projectArtifact);
            this.unitOfWork.Save();
        }
 /// <summary>
 /// Assigns the project release status.
 /// </summary>
 /// <param name="processItem">The process item.</param>
 private static void AssignProjectReleaseStatus(ProcessComplianceListItem processItem)
 {
     if (processItem != null)
     {
         var missedArtifactsCount = (from listItem in processItem.Items where listItem.DueDate < DateTimeHelper.RetrieveCurrentDate() && listItem.Status != (byte)ArtifactStatus.Completed select listItem).Count();
         if (missedArtifactsCount > 0)
         {
             processItem.ProjectArtifactsMissedCount = missedArtifactsCount;
         }
     }
 }
        /// <summary>
        /// Maps the status title.
        /// </summary>
        /// <param name="artifactStatus">The artifact status.</param>
        /// <param name="processItem">The process item.</param>
        /// <returns>Estimation Hour</returns>
        private static ProcessComplianceListItem MapProcessComplianceStatusTitle(LookupItem artifactStatus, ProcessComplianceListItem processItem)
        {
            if (processItem != null)
            {
                processItem.StatusTitle = artifactStatus.Name;
            }

            return processItem;
        }
        /// <summary>
        /// Maps the environment title
        /// </summary>
        /// <param name="releaseType">The release status.</param>
        /// <param name="processItem">The process item.</param>
        /// <returns>Estimation Hour</returns>
        private static ProcessComplianceListItem MapProcessComplianceEnvironmentTitle(LookupItem releaseType, ProcessComplianceListItem processItem)
        {
            if (processItem != null)
            {
                processItem.EnvironmentTitle = releaseType.Name;
            }

            return processItem;
        }