Пример #1
0
        private IEnumerable <LabelEntity> MarkLabelsAsProcessedAndGetMissing(DatabaseConnectionModel connectionModel1,
                                                                             DatabaseConnectionModel connectionModel2,
                                                                             LabelsGeneratorDbTables tables,
                                                                             DateTime date)
        {
            using (var context1 = _contextFactory.GetContext(connectionModel1, tables))
                using (var context2 = _contextFactory.GetContext(connectionModel2, tables))
                {
                    var reportId = Guid.NewGuid();

                    var startDate = date.StartOfDay();
                    var endDate   = date.EndOfDayForDatabase();

                    var labels           = context1.Set <LabelEntity>().Where(x => x.Status == 0 && x.CreateDate >= startDate && x.CreateDate <= endDate).ToArray();
                    var labelIdentifiers = labels.Select(x => x.UniqueID.Trim()).ToArray();

                    var identifiers = context2.Set <CustomerEntity>().Where(x => labelIdentifiers.Contains(x.UniqueID.Trim())).Select(x => x.UniqueID.Trim()).ToArray();
                    var foundLabels = labels.Where(x => identifiers.Contains(x.UniqueID.Trim())).ToArray();
                    foreach (var label in foundLabels)
                    {
                        label.Status = 1;
                    }
                    context1.SaveChanges();

                    var notFoundLabels = labels.Where(x => !identifiers.Contains(x.UniqueID.Trim())).ToArray();
                    return(notFoundLabels);
                }
        }
Пример #2
0
        /// <summary>
        /// Marks all labels found in dbo.isCUSTOMER table with status = 1 and generates report with not found ones
        /// </summary>
        /// <param name="connectionModel1">The labels DB connection model</param>
        /// <param name="connectionModel2">The customer DB connection model</param>
        /// <param name="date">The current date</param>
        public XLWorkbook MarkLabelsProcessedAndGenerateReport(DatabaseConnectionModel connectionModel1,
                                                               DatabaseConnectionModel connectionModel2,
                                                               LabelsGeneratorDbTables tables,
                                                               DateTime date,
                                                               out Boolean isReportContainData)
        {
            var labels = MarkLabelsAsProcessedAndGetMissing(connectionModel1, connectionModel2, tables, date);

            return(GenerateReport(labels, out isReportContainData));
        }