public IActionResult Put(string existingName, [FromBody] DataSetUpdate dataSetUpdate)
        {
            var validationResultString = DataSetService.ValidateDataSetName(existingName);

            if (validationResultString.Any())
            {
                return(HttpErrorResult(StatusCodes.Status400BadRequest, validationResultString));
            }

            dataSetService.ThrowIfDataSetIsBusy(existingName);
            dataSetService.ThrowIfDataSetIsBusy(dataSetUpdate.Name);

            if (string.CompareOrdinal(existingName, dataSetUpdate.Name) == 0)
            {
                return(new StatusCodeResult(StatusCodes.Status304NotModified));
            }

            if (!dataSetService.IsExists(existingName))
            {
                return(HttpErrorResult(StatusCodes.Status404NotFound,
                                       string.Format(DataSetResources.DataSet_0_IsNotFound, existingName)));
            }

            if (dataSetService.IsExists(dataSetUpdate.Name))
            {
                return(HttpErrorResult(StatusCodes.Status409Conflict,
                                       string.Format(DataSetResources.DataSet_0_IsAlreadyExist, dataSetUpdate.Name)));
            }

            dataSetService.Update(existingName, dataSetUpdate.Name);

            return(new StatusCodeResult(StatusCodes.Status200OK));
        }
        public void GetDataSetsWithInitialCollection_ReturnsArrayWithoutChanges_IfNonEmptyArrayWasPassedAndThereWereNoDataToBeAppended()
        {
            //Arrange
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Quotations, AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            Mock <IPriceRepository>     priceRepository     = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>      priceDtos           = utf.getDefaultPriceDtosCollection();

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(new List <QuotationDto>());
            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            DataSet[] baseDataSets = new DataSet[11];
            baseDataSets[7]  = utf.getDataSet(7);
            baseDataSets[8]  = utf.getDataSet(8);
            baseDataSets[9]  = utf.getDataSet(9);
            baseDataSets[10] = utf.getDataSet(10);
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var dataSets = service.GetDataSets(queryDef, baseDataSets).ToArray();

            //Assert
            var areEqual = baseDataSets.HasEqualItemsInTheSameOrder(dataSets);

            Assert.IsTrue(areEqual);
        }
        public IActionResult Delete(string name)
        {
            dataSetService.ThrowIfDataSetIsBusy(name);

            var validationResultString = DataSetService.ValidateDataSetName(name);

            if (validationResultString.Any())
            {
                return(HttpErrorResult(StatusCodes.Status400BadRequest, validationResultString));
            }

            if (!dataSetService.IsExists(name))
            {
                return(HttpErrorResult(StatusCodes.Status404NotFound,
                                       string.Format(DataSetResources.DataSet_0_IsNotFound, name)));
            }
            if (dataSetService.HasServiceReference(name))
            {
                return(HttpErrorResult(StatusCodes.Status406NotAcceptable, DataSetResources.DataSetNotAllowedToDeleteBecauseOfDependingService));
            }

            dataSetService.Delete(name);

            return(new StatusCodeResult(StatusCodes.Status200OK));
        }
        public void GetDataSetsWithInitialCollection_ReturnsNullArray_IfNullArrayWasPassedAndThereWereNoDataToBeAppended()
        {
            //Arrange
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Quotations, AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            Mock <IPriceRepository>     priceRepository     = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>      priceDtos           = utf.getDefaultPriceDtosCollection();

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(new List <QuotationDto>());
            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            DataSet[]       previous = new DataSet[] { };
            IDataSetService service  = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var dataSets = service.GetDataSets(queryDef, previous).ToArray();

            //Assert
            var isEmpty = (dataSets.Length == 0 || (dataSets.Length == 1 && dataSets[0] == null));

            Assert.IsTrue(isEmpty);
        }
 private Version()
 {
     _weightService       = new WeightService();
     _classVersionService = new ClassVersionService();
     _dataSetService      = new DataSetService();
     InitializeComponent();
 }
        public void GetDataSets_ReturnsEmptyCollection_IfThereIsNoQuotationForGivenDateRange()
        {
            //Arrange
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Quotations, AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            Mock <IPriceRepository>     priceRepository     = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>      priceDtos           = utf.getDefaultPriceDtosCollection();

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(new List <QuotationDto>());
            priceRepository.Setup(q => q.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var dataSets = service.GetDataSets(queryDef);

            //Assert
            var isEmpty = (dataSets.Count() == 0);

            Assert.IsTrue(isEmpty);
        }
        public void GetDataSets_DoesntOverrideExistingObjectsWithNulls_IfTheyAreNotInSpecificRepositories()
        {
            //Arrange:QueryDef
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };

            //Arrange:Quotations
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            IEnumerable <QuotationDto>  quotationDtos       = new QuotationDto[] { utf.getQuotationDto(1), utf.getQuotationDto(2), utf.getQuotationDto(3), utf.getQuotationDto(4) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            //Arrange:Prices
            Mock <IPriceRepository> priceRepository = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>  priceDtos       = new PriceDto[] { utf.getPriceDto(1), utf.getPriceDto(2), utf.getPriceDto(3), utf.getPriceDto(4) };

            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var dataSets = service.GetDataSets(queryDef);

            if (dataSets == null)
            {
                throw new Exception("Collection should not be null");
            }

            DataSet baseDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 2);

            if (baseDataSet == null)
            {
                throw new Exception("Base data set shouldn't be null");
            }

            Price basePrice = (baseDataSet == null ? null : baseDataSet.GetPrice());

            if (basePrice == null)
            {
                throw new Exception("Base price shouldn't be null");
            }


            priceRepository.Setup(q => q.GetPrices(queryDef)).Returns(new PriceDto[] { });
            service.InjectPriceRepository(priceRepository.Object);
            dataSets = service.GetDataSets(queryDef);
            DataSet comparedDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 2);
            Price   comparedPrice   = (comparedDataSet == null ? null : comparedDataSet.GetPrice());

            //Assert
            var areTheSameObject = (basePrice == comparedPrice);

            Assert.IsTrue(areTheSameObject);
        }
Exemple #8
0
        public ActionResult GetDataSetsInfo(int assetId, int timeframeId)
        {
            IDataSetService dataSetService = new DataSetService();
            AnalysisInfo    info           = dataSetService.GetAnalysisInfo(assetId, timeframeId);
            var             json           = new { info = info };

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
Exemple #9
0
        public ActionResult GetDataSets(int assetId, int timeframeId)
        {
            IDataSetService   dataSetService   = new DataSetService();
            ITrendlineService trendlineService = new TrendlineService();

            IEnumerable <DataSet>       dataSets       = dataSetService.GetDataSets(assetId, timeframeId);
            IEnumerable <ExtremumGroup> extremumGroups = trendlineService.GetExtremumGroups(assetId, timeframeId);
            IEnumerable <Trendline>     trendlines     = trendlineService.GetVisibleTrendlines(assetId, timeframeId);
            var json = new { quotations = dataSets, extremumGroups = extremumGroups, trendlines = trendlines };

            return(Json(json, JsonRequestBehavior.AllowGet));
        }
 public StartupService(SiteConfig siteConfig, ILogger <StartupService> logger,
                       ElasticClientFactory elasticClientFactory, DataSetService dataSetService,
                       DBUpdateService dbUpdateService, MachineResourceService machineResourceService,
                       ServiceManager serviceManager, ILicenseManager licenseManager)
 {
     this.licenseManager         = licenseManager;
     this.serviceManager         = serviceManager;
     this.dbUpdateService        = dbUpdateService;
     this.dataSetService         = dataSetService;
     this.logger                 = logger;
     this.elasticClientFactory   = elasticClientFactory;
     this.siteConfig             = siteConfig;
     this.machineResourceService = machineResourceService;
 }
        public void UpdatePrices_OnlyExtremaFlaggedAsUpdatedAreSendToRepository()
        {
            //Arrange
            QuotationUpdateTester quotationRepository = new QuotationUpdateTester();
            PriceUpdateTester     priceRepository     = new PriceUpdateTester();

            List <DataSet> dataSets = new List <DataSet>();
            DataSet        ds1      = utf.getDataSet(1);
            Quotation      q1       = utf.getQuotation(ds1);
            Price          p1       = utf.getPrice(ds1);

            DataSet   ds2 = utf.getDataSet(2);
            Quotation q2  = utf.getQuotation(ds2);
            Price     p2  = utf.getPrice(ds2);
            Extremum  ex2 = new Extremum(p2, ExtremumType.PeakByClose);

            DataSet   ds3 = utf.getDataSet(3);
            Quotation q3  = utf.getQuotation(ds3);
            Price     p3  = utf.getPrice(ds3);
            Extremum  ex3 = new Extremum(p3, ExtremumType.PeakByHigh);

            DataSet   ds4 = utf.getDataSet(4);
            Quotation q4  = utf.getQuotation(ds4);
            Price     p4  = utf.getPrice(ds4);

            dataSets.AddRange(new DataSet[] { ds1, ds2, ds3, ds4 });

            //Act
            p2.Updated  = true;
            p3.Updated  = true;
            ex3.Updated = true;
            p4.New      = true;


            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository);
            service.InjectPriceRepository(priceRepository);
            service.UpdateDataSets(dataSets);

            //Assert
            IEnumerable <ExtremumDto> extremumDtos         = priceRepository.GetExtremumDtosPassedForUpdate();
            List <ExtremumDto>        expectedExtremumDtos = new List <ExtremumDto>();

            expectedExtremumDtos.AddRange(new ExtremumDto[] { ex3.ToDto() });
            bool areEqual = expectedExtremumDtos.HasEqualItems(extremumDtos);

            Assert.IsTrue(areEqual);
        }
        public void GetDataSets_ReturnsCollectionWithQuotationsOnly_IfGivenAnalysisTypesParameterIsInvalid()
        {
            //Arrange:QueryDef
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };

            //Arrange:Quotations
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            IEnumerable <QuotationDto>  quotationDtos       = utf.getDefaultQuotationDtosCollection();

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            //Arrange:Prices
            Mock <IPriceRepository> priceRepository = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>  priceDtos       = utf.getDefaultPriceDtosCollection();

            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var dataSets = service.GetDataSets(queryDef);

            //Assert
            DataSet ds1 = utf.getDataSet(1);

            ds1.SetQuotation(utf.getQuotation(ds1));
            DataSet ds2 = utf.getDataSet(2);

            ds2.SetQuotation(utf.getQuotation(ds2));
            DataSet ds3 = utf.getDataSet(3);

            ds3.SetQuotation(utf.getQuotation(ds3));
            DataSet ds4 = utf.getDataSet(4);

            ds4.SetQuotation(utf.getQuotation(ds4));

            IEnumerable <DataSet> expectedDataSets = new DataSet[] { ds1, ds2, ds3, ds4 };
            var areEqual = expectedDataSets.HasEqualItems(dataSets);

            Assert.IsTrue(areEqual);
        }
        public void GetDataSets_UseAlwaysExistingInstancesOfObjects_EvenIfThereIsAnotherOneInRepository()
        {
            //Arrange:QueryDef
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(1, 1)
            {
                AnalysisTypes = analysisTypes
            };

            //Arrange:Quotations
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            IEnumerable <QuotationDto>  quotationDtos       = new QuotationDto[] { utf.getQuotationDto(1), utf.getQuotationDto(2), utf.getQuotationDto(3), utf.getQuotationDto(4) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            //Arrange:Prices
            Mock <IPriceRepository> priceRepository = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>  priceDtos       = new PriceDto[] { utf.getPriceDto(1), utf.getPriceDto(2), utf.getPriceDto(3), utf.getPriceDto(4) };

            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var     dataSets    = service.GetDataSets(queryDef);
            DataSet baseDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 2);

            Quotation stubQuotation = utf.getQuotation(2);

            stubQuotation.Open = stubQuotation.Open + 3;
            IEnumerable <Quotation> quotations = new Quotation[] { utf.getQuotation(1), stubQuotation, utf.getQuotation(3), utf.getQuotation(4) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            service.InjectQuotationRepository(quotationRepository.Object);
            dataSets = service.GetDataSets(queryDef);
            DataSet comparedDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 2);

            //Assert
            var areTheSameObject = (baseDataSet.GetQuotation() == comparedDataSet.GetQuotation());

            Assert.IsTrue(areTheSameObject);
        }
        public void UpdateDataSets_OnlyQuotationsFlaggedAsUpdatedAreSendToRepository()
        {
            //Arrange
            QuotationUpdateTester quotationRepository = new QuotationUpdateTester();
            PriceUpdateTester     priceRepository     = new PriceUpdateTester();

            List <DataSet> dataSets = new List <DataSet>();
            DataSet        ds1      = utf.getDataSet(1);
            Quotation      q1       = utf.getQuotation(ds1);
            Price          p1       = utf.getPrice(ds1);

            DataSet   ds2 = utf.getDataSet(2);
            Quotation q2  = utf.getQuotation(ds2);
            Price     p2  = utf.getPrice(ds2);

            DataSet   ds3 = utf.getDataSet(3);
            Quotation q3  = utf.getQuotation(ds3);
            Price     p3  = utf.getPrice(ds3);

            DataSet   ds4 = utf.getDataSet(4);
            Quotation q4  = utf.getQuotation(ds4);
            Price     p4  = utf.getPrice(ds4);

            dataSets.AddRange(new DataSet[] { ds1, ds2, ds3, ds4 });

            //Act
            q1.Updated = true;
            q3.Updated = true;
            q4.New     = true;

            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository);
            service.InjectPriceRepository(priceRepository);
            service.UpdateDataSets(dataSets);

            //Assert
            IEnumerable <QuotationDto> passedDtos   = quotationRepository.GetQuotationDtosPassedForUpdate();
            List <QuotationDto>        expectedDtos = new List <QuotationDto>();

            expectedDtos.AddRange(new QuotationDto[] { q1.ToDto(), q3.ToDto(), q4.ToDto() });
            bool areEqual = expectedDtos.HasEqualItems(passedDtos);

            Assert.IsTrue(areEqual);
        }
        internal void UpdateClusterStatus(BaseJobBEO job)
        {
            try
            {
                dynamic       bootParameters;
                StringReader  stream;
                XmlSerializer xmlStream;
                switch (job.JobTypeId)
                {
                case 2:
                case 8:
                    stream         = new StringReader(job.BootParameters);
                    xmlStream      = new XmlSerializer(typeof(ProfileBEO));
                    bootParameters = xmlStream.Deserialize(stream);
                    stream.Close();
                    var profileBeo = bootParameters as ProfileBEO;
                    if (profileBeo != null)
                    {
                        var dataSetService = new DataSetService(EstablishSession(profileBeo.CreatedBy));
                        dataSetService.UpdateClusterStatus(profileBeo.DatasetDetails.FolderID.ToString(),
                                                           ClusterStatus.OutOfDate.ToString());
                    }
                    break;

                case 14:
                    stream         = new StringReader(job.BootParameters);
                    xmlStream      = new XmlSerializer(typeof(ImportBEO));
                    bootParameters = xmlStream.Deserialize(stream);
                    stream.Close();
                    var importBeo = bootParameters as ImportBEO;
                    if (importBeo != null)
                    {
                        var dataSetService = new DataSetService(EstablishSession(importBeo.CreatedBy));
                        dataSetService.UpdateClusterStatus(importBeo.DatasetId.ToString(),
                                                           ClusterStatus.OutOfDate.ToString());
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                ex.AddDbgMsg("Unable to update cluster status to out of date by Job Id: {0}", job.JobId);
                ex.Trace();
            }
        }
        public void GetDataSets_ReturnsCollectionWithoutSomeAnalysisType_IfThereIsNoDataForThisType()
        {
            //Arrange:QueryDef
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };

            //Arrange:Quotations
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            IEnumerable <QuotationDto>  quotationDtos       = new QuotationDto[] { utf.getQuotationDto(2), utf.getQuotationDto(3), utf.getQuotationDto(4) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            //Arrange:Prices
            Mock <IPriceRepository> priceRepository = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>  priceDtos       = new PriceDto[] { utf.getPriceDto(3), utf.getPriceDto(4), utf.getPriceDto(5), utf.getPriceDto(6) };

            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var dataSets = service.GetDataSets(queryDef);

            //Assert
            DataSet ds2 = utf.getDataSet(2);

            ds2.SetQuotation(utf.getQuotation(ds2));
            DataSet ds3 = utf.getDataSet(3);

            ds3.SetQuotation(utf.getQuotation(ds3)).SetPrice(utf.getPrice(ds3));
            DataSet ds4 = utf.getDataSet(4);

            ds4.SetQuotation(utf.getQuotation(ds4)).SetPrice(utf.getPrice(ds4));
            IEnumerable <DataSet> expectedDataSets = new DataSet[] { ds2, ds3, ds4 };
            var areEqual = expectedDataSets.HasEqualItems(dataSets);

            Assert.IsTrue(areEqual);
        }
Exemple #17
0
 private ImportData()
 {
     _dataSetService  = new DataSetService();
     _orderDictionary = new Dictionary <string, string>()
     {
         { FileHeaderConstant.No, Order.Asc },
         { FileHeaderConstant.Name, Order.Asc },
         { FileHeaderConstant.DateModified, Order.Asc },
         { FileHeaderConstant.Label, Order.Asc },
     };
     _labelFiles = new List <LabelFileModel>();
     _imageFiles = new List <ImageFileModel>();
     InitializeComponent();
     SetBorderAndGridlineStyles();
     ImageNumber.Text = "0";
     LabelNumber.Text = "0";
     TrainBtn.Enabled = false;
     //PreviousBtn.Enabled = false;
     //NextBtn.Enabled = false;
 }
        public IActionResult Get(string name)
        {
            dataSetService.ThrowIfDataSetIsBusy(name);
            var validationResultString = DataSetService.ValidateDataSetName(name);

            if (validationResultString.Any())
            {
                return(HttpErrorResult(StatusCodes.Status400BadRequest, validationResultString));
            }

            if (!dataSetService.IsExists(name))
            {
                return(HttpErrorResult(StatusCodes.Status404NotFound,
                                       string.Format(DataSetResources.DataSet_0_IsNotFound, name)));
            }

            var dataSet = dataSetService.Get(name);

            return(new OkObjectResult(dataSet));
        }
        public void GetDataSetsWithInitialCollection_ReturnsProperlyFilledAndIndexedArray_IfNullArrayWasPassedAndSomeDataWereAppended()
        {
            //Arrange
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Quotations, AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            Mock <IPriceRepository>     priceRepository     = new Mock <IPriceRepository>();

            //Act
            IDataSetService            service       = new DataSetService();
            IEnumerable <QuotationDto> quotationDtos = new QuotationDto[] { utf.getQuotationDto(101), utf.getQuotationDto(102), utf.getQuotationDto(103) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);
            IEnumerable <PriceDto> priceDtos = new PriceDto[] { utf.getPriceDto(101), utf.getPriceDto(102), utf.getPriceDto(103) };

            priceRepository.Setup(q => q.GetPrices(queryDef)).Returns(priceDtos);
            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            DataSet[] result = service.GetDataSets(queryDef, new List <DataSet>()).ToArray();

            //Assert
            DataSet[] expectedDataSets = new DataSet[104];
            DataSet   ds101            = utf.getDataSet(101);

            ds101.SetQuotation(utf.getQuotation(ds101)).SetPrice(utf.getPrice(ds101));
            DataSet ds102 = utf.getDataSet(102);

            ds102.SetQuotation(utf.getQuotation(ds102)).SetPrice(utf.getPrice(ds102));
            DataSet ds103 = utf.getDataSet(103);

            ds103.SetQuotation(utf.getQuotation(ds103)).SetPrice(utf.getPrice(ds103));
            expectedDataSets[101] = ds101;
            expectedDataSets[102] = ds102;
            expectedDataSets[103] = ds103;
            var areEqual = expectedDataSets.HasEqualItemsInTheSameOrder(result);

            Assert.IsTrue(areEqual);
        }
        public void GetDataSets_ReturnsCollectionWithExistingItems()
        {
            //Arrange:QueryDef
            IEnumerable <AnalysisType> analysisTypes = new AnalysisType[] { AnalysisType.Prices };
            DateTime startDate = new DateTime(2016, 1, 15, 22, 30, 0);
            DateTime endDate   = new DateTime(2016, 1, 15, 22, 50, 0);
            AnalysisDataQueryDefinition queryDef = new AnalysisDataQueryDefinition(1, 1)
            {
                AnalysisTypes = analysisTypes, StartDate = startDate, EndDate = endDate
            };

            //Arrange:Quotations
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            IEnumerable <QuotationDto>  quotationDtos       = new QuotationDto[] { utf.getQuotationDto(1), utf.getQuotationDto(2), utf.getQuotationDto(3), utf.getQuotationDto(4) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            //Arrange:Prices
            Mock <IPriceRepository> priceRepository = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>  priceDtos       = new PriceDto[] { utf.getPriceDto(1), utf.getPriceDto(2), utf.getPriceDto(3), utf.getPriceDto(4) };

            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var     dataSets    = service.GetDataSets(queryDef);
            DataSet baseDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 1);

            queryDef.StartDate = new DateTime(2016, 1, 15, 22, 25, 0);
            dataSets           = service.GetDataSets(queryDef);
            DataSet comparedDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 1);

            //Assert
            var areTheSameObject = (baseDataSet == comparedDataSet);

            Assert.IsTrue(areTheSameObject);
        }
Exemple #21
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            //--------------------
            // Knowledge Service
            // (Central Knowledge Service)
            IKnowledgeService knowledgeService = new KnowledgeService();

            //--------------------
            // DataSetService
            // (Central Persistence Service)
            DataSetService  dataService    = new DataSetService(knowledgeService);
            IRequestDataSet requestService = dataService as IRequestDataSet;
            ISendSymptome   sendService    = dataService as ISendSymptome;

            //--------------------
            // Data Response Service
            // provide feedback to users
            IResponseService responseService = new ResponseService(requestService, knowledgeService);

            //--------------------
            // Analyzing Data
            // PDA - Probabilistic Data Analysis
            // PGA - Probabilistic Gradient Analysis (not implemented)
            var pdaService = new pdaService(requestService, knowledgeService);

            //var pgaService = new pgaService(requestService);

            //--------------------
            // Register Services at IC-Container
            services.AddSingleton <IRequestDataSet>(dataService);
            services.AddSingleton <ISendSymptome>(dataService);
            services.AddSingleton <IKnowledgeService>(knowledgeService);
            services.AddSingleton <IResponseService>(responseService);
            services.AddHostedService <pdaService>();
            // services.AddHostedService<pgaService>();


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }
        /// <summary>
        /// Atomic work 1) Delete search sub-system Data 2) Delete Vault Data 3) Delete EVMaster Data
        /// </summary>
        /// <param name="task"></param>
        /// <param name="jobParameters"></param>
        /// <returns></returns>
        protected override bool DoAtomicWork(UpdateReviewSetTaskBEO task, UpdateReviewSetJobBEO jobParameters)
        {
            bool output = false;

            try
            {
                //Fetching the dataset details
                DataSetService.GetDataSet(task.DatasetId.ToString(CultureInfo.InvariantCulture));


                string activity = task.Activity;

                switch (activity)
                {
                case Constants.Add:
                {
                    //Assigning the reviewset id to the documents
                    IEnumerable <ReviewsetDocumentBEO> rsDocBeoList = PopulateReviewSetDocumentEntites(task, task.Documents, jobParameters.CreatedByGUID);
                    AddDocumentsBychunk(task.DatasetId.ToString(CultureInfo.InvariantCulture), task.reviewSetId, rsDocBeoList);
                    //Update Review set service
                    task.NumberOfDocuments += rsDocBeoList.Count();
                    task.StatusId           = 1;
                    task.Action             = "Add";
                    task.IsAuditable        = true;
                    ReviewSetService.UpdateReviewSetJob(task);
                    break;
                }

                case Constants.Remove:
                {
                    //Assigning the reviewset id to the documents
                    IEnumerable <ReviewsetDocumentBEO> rsDocBeoList = PopulateReviewSetDocumentEntites(task, task.Documents, jobParameters.CreatedByGUID);

                    //Remove documents from vault and search sub-system
                    RemoveDocumentsBychunk(task.DatasetId.ToString(CultureInfo.InvariantCulture), task.reviewSetId, rsDocBeoList);

                    //Update Review set service
                    task.NumberOfDocuments -= rsDocBeoList.Count();
                    task.StatusId           = 1;
                    task.Action             = "Remove";
                    task.IsAuditable        = true;
                    ReviewSetService.UpdateReviewSetJob(task);
                    break;
                }

                case Constants.Archive:
                {
                    if (task.Documents.Count > 0)
                    {
                        //Assigning the reviewset id to the documents
                        IEnumerable <ReviewsetDocumentBEO> rsDocBeoList = PopulateReviewSetDocumentEntites(task, task.Documents, jobParameters.CreatedByGUID);

                        //Remove documents from vault and search sub-system
                        RemoveDocumentsBychunk(task.DatasetId.ToString(CultureInfo.InvariantCulture), task.reviewSetId, rsDocBeoList);
                    }
                    //Update Review set service - Archiving
                    ReviewSetService.UpdateReviewSetJob(task);
                    break;
                }

                default:
                {
                    //If the reviewset is getting archived
                    if (task.StatusId.Equals(2))
                    {
                        //Assigning the reviewset id to the documents
                        IEnumerable <ReviewsetDocumentBEO> rsDocBeoList = PopulateReviewSetDocumentEntites(task, task.Documents, jobParameters.CreatedByGUID);

                        //Remove documents from vault and search sub-system
                        RemoveDocumentsBychunk(task.DatasetId.ToString(CultureInfo.InvariantCulture), task.reviewSetId, rsDocBeoList);

                        //Update Review set service - Archiving
                        ReviewSetService.UpdateReviewSetJob(task);
                    }
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                ex.AddDbgMsg("Problem in DoAtomicWork of the UpdateReviewset");
                ex.Trace().Swallow();
            }
            return(output);
        }
        /// <summary>
        /// Generates No.of Reviewsets to be created tasks
        /// </summary>
        /// <param name="jobParameters">Create Reviewset BEO</param>
        /// <param name="lastCommitedTaskCount"> </param>
        /// <returns>List of Create ReviewsetJob Tasks (BEOs)</returns>
        protected override Tasks <UpdateReviewSetTaskBEO> GenerateTasks(UpdateReviewSetJobBEO jobParameters, out int lastCommitedTaskCount)
        {
            Tasks <UpdateReviewSetTaskBEO> tasks = new Tasks <UpdateReviewSetTaskBEO>();

            lastCommitedTaskCount = 0;
            try
            {
                if (jobParameters != null)
                {
                    /* Get Dataset Details for dataset id to get know about the Collection id and the Matter ID*/
                    DatasetBEO datasetEntity    = DataSetService.GetDataSet(jobParameters.datasetId.ToString(CultureInfo.InvariantCulture));
                    string     sMatterId        = datasetEntity.Matter.FolderID.ToString(CultureInfo.InvariantCulture);
                    var        _reviewSetEntity = ReviewSetBO.GetReviewSetDetails(sMatterId, jobParameters.ReviewSetId);

                    List <FilteredDocumentBusinessEntity> qualifiedDocuments = null;
                    if (jobParameters.Activity.Equals(Constants.Add))
                    {
                        qualifiedDocuments = GetQualifiedDocuments(jobParameters, jobParameters.datasetId.ToString(CultureInfo.InvariantCulture),
                                                                   sMatterId, _reviewSetEntity.BinderId, Constants.Add);
                    }
                    else if (jobParameters.Activity.Equals(Constants.Remove) || jobParameters.Activity.Equals(Constants.Archive))
                    {
                        qualifiedDocuments = GetQualifiedDocuments(jobParameters, jobParameters.datasetId.ToString(CultureInfo.InvariantCulture),
                                                                   sMatterId, _reviewSetEntity.BinderId, Constants.Remove);
                    }
                    jobParameters.Documents.Clear();

                    if (qualifiedDocuments != null && qualifiedDocuments.Count > 0)
                    {
                        List <RVWDocumentBEO> iterationDocuments = qualifiedDocuments.
                                                                   Select(d => new RVWDocumentBEO
                        {
                            DocumentId            = d.Id,
                            MatterId              = Convert.ToInt64(d.MatterId),
                            CollectionId          = d.CollectionId,
                            FamilyId              = d.FamilyId,
                            DocumentControlNumber = d.DCN,
                            DuplicateId           = d.DuplicateId
                        }).ToList();

                        jobParameters.Documents.AddRange(iterationDocuments);
                    }
                    UpdateReviewSetTaskBEO updateReviewSetTaskBeo = ConvertToTaskBeo(jobParameters, _reviewSetEntity);
                    tasks.Add(updateReviewSetTaskBeo);
                    for (int i = 1; i <= tasks.Count; i++)
                    {
                        tasks[i - 1].TaskNumber = i;
                    }
                }
                else
                {
                    lastCommitedTaskCount = 0;
                    EvLog.WriteEntry(Constants.JobLogName + Constants.GenerateTasks, Constants.JobParamND, EventLogEntryType.Error);
                    JobLogInfo.AddParameters(Constants.JobParamND);
                    JobLogInfo.IsError = true;
                }
            }
            catch (Exception ex)
            {
                LogException(JobLogInfo, ex, LogCategory.Job, ErrorCodes.ProblemInGenerateTasks, string.Empty);
            }
            return(tasks);
        }
Exemple #24
0
 public DataSetController(DataSetService dataSetService)
 {
     _dataSetService = dataSetService;
 }
 internal void UpdateClusterStatus(BaseJobBEO job)
 {
     try
     {
         dynamic bootParameters;
         StringReader stream;
         XmlSerializer xmlStream;
         switch (job.JobTypeId)
         {
             case 2:
             case 8:
                 stream = new StringReader(job.BootParameters);
                 xmlStream = new XmlSerializer(typeof(ProfileBEO));
                 bootParameters = xmlStream.Deserialize(stream);
                 stream.Close();
                 var profileBeo = bootParameters as ProfileBEO;
                 if (profileBeo != null)
                 {
                     var dataSetService = new DataSetService(EstablishSession(profileBeo.CreatedBy));
                     dataSetService.UpdateClusterStatus(profileBeo.DatasetDetails.FolderID.ToString(),
                                                        ClusterStatus.OutOfDate.ToString());
                 }
                 break;
             case 14:
                 stream = new StringReader(job.BootParameters);
                 xmlStream = new XmlSerializer(typeof(ImportBEO));
                 bootParameters = xmlStream.Deserialize(stream);
                 stream.Close();
                 var importBeo = bootParameters as ImportBEO;
                 if (importBeo != null)
                 {
                     var dataSetService = new DataSetService(EstablishSession(importBeo.CreatedBy));
                     dataSetService.UpdateClusterStatus(importBeo.DatasetId.ToString(),
                                                        ClusterStatus.OutOfDate.ToString());
                 }
                 break;
         }
     }
     catch (Exception ex)
     {
         ex.AddDbgMsg("Unable to update cluster status to out of date by Job Id: {0}", job.JobId);
         ex.Trace();
     }
 }
Exemple #26
0
 public WeightDetail()
 {
     _dataSetService = new DataSetService();
     _weightService  = new WeightService();
     InitializeComponent();
 }
Exemple #27
0
        /// <summary>
        /// Generates DataSet Delete tasks
        /// </summary>
        /// <param name="jobParameters">DataSet Delete Job BEO</param>
        /// <param name="previouslyCommittedTaskCount">int</param>
        /// <returns>List of DataSet DeleteJob Tasks (BEOs)</returns>
        protected override Tasks <DeleteDataSetTaskBEO> GenerateTasks(DeleteDataSetJobBEO jobParameters, out int previouslyCommittedTaskCount)
        {
            Tasks <DeleteDataSetTaskBEO> tasks = null;

            previouslyCommittedTaskCount = 0;
            try
            {
                // Message that Generate Tasks called.
                LogMessage(String.Format(Constants.JobGenerateTasksInitialized, jobParameters.JobId), false, LogCategory.Job, null);
                EvLog.WriteEntry(String.Format(Constants.JobGenerateTasksInitialized, jobParameters.JobId),
                                 String.Format(Constants.JobGenerateTasksInitialized, jobParameters.JobId), EventLogEntryType.Information);


                var docCount = MatterBO.GetDocumentCount(Convert.ToInt64(jobParameters.MatterId), new List <string>()
                {
                    jobParameters.CollectionId
                });
                var dataSetDocuments = new List <ReIndexDocumentBEO>();
                if (docCount > 0)
                {
                    var nMessages = (Int32)(Math.Ceiling((double)docCount / m_ReadChunkSize));
                    //Convert.ToInt32(docCount / m_ReadChunkSize) + (docCount % m_ReadChunkSize > 0 ? 1 : 0);
                    var processed = 0;

                    //Loop through and send the request in batches
                    for (var pageIdx = 1; pageIdx <= nMessages; pageIdx++)
                    {
                        var pgSize = 0;
                        //Determine the page size and processed count
                        if (nMessages == 1)
                        {
                            pgSize = (Int32)docCount;
                        }
                        else if (nMessages > 1 && pageIdx == nMessages)
                        {
                            pgSize = (Int32)docCount - processed;
                        }
                        else
                        {
                            pgSize = m_ReadChunkSize;
                        }

                        var batchDocuments = MatterBO.GetCollectionDocuments(Convert.ToInt64(jobParameters.MatterId),
                                                                             pageIdx, m_ReadChunkSize, new List <string>()
                        {
                            jobParameters.CollectionId
                        });
                        if (batchDocuments != null && batchDocuments.Any())
                        {
                            dataSetDocuments.AddRange(batchDocuments);
                        }
                        processed += pgSize;
                    }
                }

                //Get matter details for matter id
                var matterDetail  = MatterServices.GetMatterDetails(jobParameters.MatterId);
                var dataSetDetail = DataSetBO.GetDataSetDetailForDataSetId(jobParameters.DataSetId);

                //Get all document sets for dataset id
                var lstDocumentSet = DataSetService.GetAllDocumentSet(jobParameters.DataSetId.ToString());

                tasks = GetTaskList <DeleteDataSetJobBEO, DeleteDataSetTaskBEO>(jobParameters);
                previouslyCommittedTaskCount = tasks.Count;
                var documentTaskCount = (Int32)(Math.Ceiling((double)dataSetDocuments.Count / m_WindowSize));


                m_NumberOfTasks = documentTaskCount + lstDocumentSet.Count + 1;
                double taskPercent = (100.0 / m_NumberOfTasks);

                int taskNumber = 0;
                DeleteDataSetTaskBEO deleteDataSetTaskBeo;
                // Create tasks for the documents in group
                for (taskNumber = 0; taskNumber < documentTaskCount; taskNumber++)
                {
                    deleteDataSetTaskBeo = new DeleteDataSetTaskBEO
                    {
                        TaskNumber    = taskNumber + 1,
                        TaskComplete  = false,
                        TaskPercent   = taskPercent,
                        DataSetId     = jobParameters.DataSetId,
                        DataSetName   = jobParameters.DataSetName,
                        DocumentSetId = jobParameters.CollectionId,
                        DeletedBy     = jobParameters.DeletedBy,
                        DocumentId    =
                            dataSetDocuments.GetRange(taskNumber * m_WindowSize,
                                                      Math.Min((dataSetDocuments.Count - (taskNumber * m_WindowSize)), m_WindowSize))
                            .Select(d => d.DocumentReferenceId)
                            .ToList(),
                        MatterDBName     = matterDetail.MatterDBName,
                        IsDocumentDelete = true
                    };
                    tasks.Add(deleteDataSetTaskBeo);
                }

                // Create the task for the non-native document sets (production & image sets)
                var nonNativeSets = lstDocumentSet.Where(ds => ds.DocumentSetTypeId != "2");
                foreach (var docset in nonNativeSets)
                {
                    taskNumber          += 1;
                    deleteDataSetTaskBeo = new DeleteDataSetTaskBEO
                    {
                        TaskNumber        = taskNumber,
                        TaskComplete      = false,
                        TaskPercent       = taskPercent,
                        DataSetId         = jobParameters.DataSetId,
                        DataSetName       = jobParameters.DataSetName,
                        DeletedBy         = jobParameters.DeletedBy,
                        DocumentId        = new List <string>(),
                        MatterDBName      = matterDetail.MatterDBName,
                        DocumentSetId     = docset.DocumentSetId,
                        DocumentSetTypeId = docset.DocumentSetTypeId,
                        IsDocumentDelete  = false
                    };
                    tasks.Add(deleteDataSetTaskBeo);
                }

                // Create the task for only the native document sets
                var nativeSet = lstDocumentSet.Where(ds => ds.DocumentSetTypeId == "2");
                foreach (var docset in nativeSet)
                {
                    taskNumber          += 1;
                    deleteDataSetTaskBeo = new DeleteDataSetTaskBEO
                    {
                        TaskNumber        = taskNumber,
                        TaskComplete      = false,
                        TaskPercent       = taskPercent,
                        DataSetId         = jobParameters.DataSetId,
                        DataSetName       = jobParameters.DataSetName,
                        DeletedBy         = jobParameters.DeletedBy,
                        DocumentId        = new List <string>(),
                        MatterDBName      = matterDetail.MatterDBName,
                        DocumentSetId     = docset.DocumentSetId,
                        DocumentSetTypeId = docset.DocumentSetTypeId,
                        IsDocumentDelete  = false
                    };
                    tasks.Add(deleteDataSetTaskBeo);
                }

                taskNumber          += 1;
                deleteDataSetTaskBeo = new DeleteDataSetTaskBEO
                {
                    TaskNumber        = taskNumber,
                    TaskComplete      = false,
                    TaskPercent       = 100,
                    DataSetId         = jobParameters.DataSetId,
                    DataSetName       = jobParameters.DataSetName,
                    DeletedBy         = jobParameters.DeletedBy,
                    DocumentId        = new List <string>(),
                    DocumentSetId     = jobParameters.CollectionId,
                    MatterDBName      = matterDetail.MatterDBName,
                    IsDocumentDelete  = false,
                    DocumentSets      = lstDocumentSet,
                    ExtractionPath    = dataSetDetail.CompressedFileExtractionLocation,
                    DocumentSetTypeId = string.Empty
                };
                tasks.Add(deleteDataSetTaskBeo);

                for (int i = 1; i <= tasks.Count; i++)
                {
                    tasks[i - 1].TaskNumber = i;
                }
            }
            catch (EVException ex)
            {
                LogToEventLog(ex, GetType(), MethodInfo.GetCurrentMethod().Name, jobParameters.JobId, jobParameters.JobRunId);
                HandleJobException(GetEvExceptionDescription(ex), null, ErrorCodes.ProblemInGenerateTasks);
            }
            catch (Exception ex)
            {
                // Handle exception in initialize
                HandleJobException(String.Format(Constants.JobGenerateTasksException, jobParameters.JobId), ex, ErrorCodes.ProblemInGenerateTasks);
                LogMessage(ex, GetType(), MethodInfo.GetCurrentMethod().Name, EventLogEntryType.Error, jobParameters.JobId, jobParameters.JobRunId);
            }
            return(tasks);
        }
 public DataSetsController(DataSetService dataSetService, IDocumentService documentService)
 {
     this.documentService = documentService;
     this.dataSetService  = dataSetService;
 }
Exemple #29
0
        /// <summary>
        /// Generates No.of Reviewsets to be created tasks
        /// </summary>
        /// <param name="jobParameters">Create Reviewset BEO</param>
        /// <param name="lastCommitedTaskCount">int</param>
        /// <returns>List of Create ReviewsetJob Tasks (BEOs)</returns>
        protected override Tasks <MergeReviewSetTaskBEO> GenerateTasks(MergeReviewSetJobBEO jobParameters, out int lastCommitedTaskCount)
        {
            Tasks <MergeReviewSetTaskBEO> tasks = new Tasks <MergeReviewSetTaskBEO>();

            lastCommitedTaskCount = 0;
            try
            {
                if (jobParameters != null)
                {
                    string datasetId = jobParameters.DatasetId.ToString(CultureInfo.InvariantCulture);
                    /* Get Dataset Details for dataset id to get know about the Collection id and the Matter ID*/
                    DatasetBEO datasetEntity = DataSetService.GetDataSet(datasetId);
                    string     sMatterId     = datasetEntity.Matter.FolderID.ToString(CultureInfo.InvariantCulture);
                    jobParameters.Activity = Constants.Create;

                    List <RVWDocumentBEO>        docList      = new List <RVWDocumentBEO>();
                    List <MergeReviewSetTaskBEO> mergedRsList = new List <MergeReviewSetTaskBEO>();

                    foreach (string reviewsetId in jobParameters.MergedReviewSetIds)
                    {
                        ReviewsetDetailsBEO reviewsetDetailsBeo = ReviewSetService.GetReviewSetDetails(sMatterId, reviewsetId);

                        ReviewerSearchResults qualifiedDocuments = new ReviewerSearchResults();
                        jobParameters.ReviewSetId = reviewsetId;
                        var queryContext = ConstructDocQueryEntity(jobParameters, datasetEntity);
                        queryContext.TransactionName = "MergeReviewSetJob - DoAtomicWork";
                        ReviewerSearchResults searchDocs = JobSearchHandler.GetAllDocuments(queryContext, false);

                        if (searchDocs != null)
                        {
                            searchDocs.ResultDocuments.SafeForEach(x => qualifiedDocuments.ResultDocuments.Add(x));
                        }

                        List <RVWDocumentBEO> iterationDocuments = qualifiedDocuments.ResultDocuments.
                                                                   Select(d => new RVWDocumentBEO
                        {
                            DocumentId   = d.DocumentID,
                            MatterId     = d.MatterID,
                            CollectionId = d.CollectionID,
                            FamilyId     = d.FamilyID
                        }).ToList();

                        reviewsetDetailsBeo.Documents.Clear();
                        reviewsetDetailsBeo.Documents.AddRange(iterationDocuments);
                        reviewsetDetailsBeo.StatusId = 2;
                        MergeReviewSetTaskBEO mReviewsetDetailsBeo = ConvertToTaskBeo(reviewsetDetailsBeo);
                        docList.AddRange(reviewsetDetailsBeo.Documents);
                        mergedRsList.Add(mReviewsetDetailsBeo);
                    }
                    jobParameters.Documents.AddRange(docList);
                    tasks.Add(mergedRsList);
                    MergeReviewSetTaskBEO lstUpdateReviewSetTaskBeo = ConvertToTaskBeo(jobParameters);
                    tasks.Add(lstUpdateReviewSetTaskBeo);

                    for (int i = 1; i <= tasks.Count; i++)
                    {
                        tasks[i - 1].TaskNumber = i;
                    }
                }
                else
                {
                    lastCommitedTaskCount = 0;
                    EvLog.WriteEntry(Constants.JobLogName + Constants.GenerateTasks, Constants.JobParamND, EventLogEntryType.Error);
                    JobLogInfo.AddParameters(Constants.JobParamND);
                    JobLogInfo.IsError = true;
                }
            }
            catch (Exception ex)
            {
                LogException(JobLogInfo, ex, LogCategory.Job, string.Empty, ErrorCodes.ProblemInGenerateTasks);
            }
            return(tasks);
        }