public List <CurrScanDTO> GenerateComplianceScanReport(int scanId)
        {
            using (var context = new WebParserEntities())
            {
                List <CurrScanDTO> data = (from item in context.ComplianceMasters
                                           join curr in context.CurrScans on item.PluginId equals curr.PluginID
                                           where item.Reportable == true && curr.Compliance == true && curr.ScanID == scanId && item.ComplianceCheckID == curr.ComplianceCheckID
                                           orderby item.RiskFactor, item.Category1, item.Category2, item.Category3
                                           select new CurrScanDTO()
                {
                    ComplianceCheckID = curr.ComplianceCheckID,

                    Description = item.Description,
                    RiskFactor = item.RiskFactor,
                    Port = curr.Port,
                    ReportHost = curr.ReportHost,
                    PluginOutput = curr.PluginOutput,
                    ComplianceActualValue = curr.ComplianceActualValue,
                    ComplianceOutPut = curr.ComplianceOutput,
                    CompliancePolicyValue = curr.CompliancePolicyValue,
                    ComplianceResult = curr.ComplianceResult
                }).ToList();
                return(data);
            }
        }
        private ReturnResultDTO CheckExistingData(int scanId)
        {
            ReturnResultDTO dto = new ReturnResultDTO();

            using (var context = new WebParserEntities())
            {
                List <int> plugins = context.MasterPlugins.Select(x => x.PluginID).Distinct().ToList();

                var plgData      = context.CurrScans.Where(c => plugins.Contains(c.PluginID) == false && c.Compliance == false && c.ScanID == scanId).ToList();
                var cntOfPlgData = plgData.Select(c => c.PluginID).Distinct().Count();
                if (cntOfPlgData > 0)
                {
                    dto.NewPluginMessage = "New Plugins found. Please update";
                    dto.NewPluginCount   = cntOfPlgData;
                }
                else
                {
                    dto.NewPluginMessage = "Ok";
                    dto.NewPluginCount   = cntOfPlgData;
                }

                List <string> complianceCheckIDList = context.ComplianceMasters.Select(c => c.ComplianceCheckID).Distinct().ToList();
                var           compData      = context.CurrScans.Where(c => complianceCheckIDList.Contains(c.ComplianceCheckID) == false && c.Compliance == true && c.ScanID == scanId).ToList();
                var           compDataCount = compData.Select(c => c.ComplianceCheckID).Distinct().Count();
                if (compDataCount > 0)
                {
                    dto.NewComplianceMessage = "New Compliance Checks found. Please update";
                    dto.NewComplianceCount   = compDataCount;
                }
                else
                {
                    dto.NewComplianceMessage = "Ok";
                    dto.NewComplianceCount   = compDataCount;
                }

                List <MasterPlugin> masterPlugindata = context.MasterPlugins.Where(v => v.PluginOutputReportable == true && v.PluginOutPut != null).ToList();
                var count = (from item in context.CurrScans
                             join plg in masterPlugindata on item.PluginID equals plg.PluginID
                             where item.PluginOutput != plg.PluginOutPut && item.ScanID == scanId && item.Compliance == false
                             select item).Count();
                if (count > 0)
                {
                    dto.NewVarianceMessage = "Plugin output variance found.Please review.";
                    dto.NewVarianceCount   = count;
                }
                else
                {
                    dto.NewVarianceMessage = "Ok";
                    dto.NewVarianceCount   = count;
                }
                dto.IsSuccess = true;
                return(dto);
            }
        }
        public ReturnResultDTO UpdateMasterPluginData(List <MasterPluginDTO> input)
        {
            //List<int> pluginIds=input.Select(c=>c.
            ReturnResultDTO dt = new ReturnResultDTO();

            try
            {
                bool isUpdated = false;
                int  plgId     = 0;
                using (var context = new WebParserEntities())
                {
                    input.ForEach(c =>
                    {
                        plgId    = int.Parse(c.PluginId.ToString());
                        var data = context.MasterPlugins.FirstOrDefault(v => v.PluginID == plgId);
                        if (data != null)
                        {
                            isUpdated                   = true;
                            data.Description            = c.Description;
                            data.Synopsis               = c.Synopsis;
                            data.PluginOutPut           = c.PluginOutPut;
                            data.RiskFactor             = c.Riskfactor;
                            data.PluginOutputReportable = c.PluginOutPutReportable;
                            data.Reportable             = c.Reportable;
                            data.Solution               = c.Solution;
                        }
                    });
                    if (isUpdated)
                    {
                        context.SaveChanges();
                        dt.Message   = "Update successfull.";
                        dt.IsSuccess = true;
                    }
                    else
                    {
                        dt.Message   = "No matchin plugin found.";
                        dt.IsSuccess = true;
                    }
                    return(dt);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public ReturnResultDTO UpdateMasterCompliance(List <MasterComplianceDTO> input)
        {
            //List<int> pluginIds=input.Select(c=>c.
            ReturnResultDTO dt        = new ReturnResultDTO();
            bool            isUpdated = false;

            try
            {
                int plgId = 0;
                using (var context = new WebParserEntities())
                {
                    input.ForEach(c =>
                    {
                        plgId    = int.Parse(c.PluginId.ToString());
                        var data = context.ComplianceMasters.FirstOrDefault(v => v.PluginId == plgId);
                        if (data != null)
                        {
                            isUpdated        = true;
                            data.Description = c.Description;
                            data.Reportable  = c.Reportable;
                            data.RiskFactor  = c.Riskfactor;
                            data.Category1   = c.Category1;
                            data.Category2   = c.Category2;
                        }
                    });
                    if (isUpdated)
                    {
                        context.SaveChanges();
                        dt.Message   = "Update successfull.";
                        dt.IsSuccess = true;
                    }
                    else
                    {
                        dt.Message   = "No matchin plugin found.";
                        dt.IsSuccess = true;
                    }
                    return(dt);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            //}
        }
 public List <CurrScanDTO> GenerateRegularScanReport(int scanId)
 {
     using (var context = new WebParserEntities())
     {
         List <CurrScanDTO> data = (from item in context.MasterPlugins
                                    join curr in context.CurrScans on item.PluginID equals curr.PluginID
                                    where item.Reportable == true && curr.Compliance == false && curr.ScanID == scanId
                                    orderby item.RiskFactor, item.Category1, item.Category2, item.Category3
                                    select new CurrScanDTO()
         {
             Synopsis = item.Synopsis,
             Description = item.Description,
             RiskFactor = item.RiskFactor,
             Solution = item.Solution,
             Port = curr.Port,
             ReportHost = curr.ReportHost
         }).ToList();
         return(data);
     }
 }
        public ReturnResultDTO UpdatePluginVariance2(List <MasterPluginDTO> input)
        {
            //List<int> pluginIds=input.Select(c=>c.
            ReturnResultDTO dt        = new ReturnResultDTO();
            bool            isUpdated = false;
            int             plgId     = 0;

            try
            {
                using (var context = new WebParserEntities())
                {
                    input.ForEach(c =>
                    {
                        plgId    = int.Parse(c.PluginId.ToString());
                        var data = context.CurrScans.FirstOrDefault(v => v.PluginID == plgId && v.ComplianceCheckID == c.ComplianceCheckID);
                        if (data != null)
                        {
                            isUpdated = true;
                            data.PluginOutputReportable = c.PluginOutPutReportable;
                        }
                    });
                    if (isUpdated)
                    {
                        context.SaveChanges();
                        dt.Message   = "Update successfull.";
                        dt.IsSuccess = true;
                    }
                    else
                    {
                        dt.Message   = "No matchin plugin found.";
                        dt.IsSuccess = true;
                    }
                    return(dt);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }