public void UpdateDatabase(TravelAgencyDbContext db)
        {
            using (var reportsContext = new ReportsFluentModel())
            {
                var schemaHandler = reportsContext.GetSchemaHandler();
                this.EnsureDB(schemaHandler);

                var allReports = db.Excursions
                                 .Select(x => new Report()
                {
                    Id               = x.ExcursionId,
                    Name             = x.Name,
                    Duration         = (int)DbFunctions.DiffDays(x.StartDate, x.EndDate),
                    Destination      = x.Destination.Country,
                    ClientsCount     = x.Clients,
                    TotalIncome      = x.PricePerClient * x.Clients,
                    TransportCompany = x.Transport.CompanyName,
                    TransportType    = x.Transport.Type.ToString(),
                    GuideName        = x.Guide.Name,
                    ExpenseId        = x.ExpenseId
                }).ToList();

                var reportNames = reportsContext.GetAll <Report>().Select(x => x.Name).ToList();
                foreach (var report in allReports)
                {
                    if (!reportNames.Contains(report.Name))
                    {
                        reportsContext.Add(report);
                    }
                }

                reportsContext.SaveChanges();
            }
        }
        public void UpdateDatabase(TravelAgencyDbContext db)
        {
            using (var reportsContext = new ReportsFluentModel())
            {
                var schemaHandler = reportsContext.GetSchemaHandler();
                this.EnsureDB(schemaHandler);

                var allReports = db.Excursions
                .Select(x => new Report()
                {
                    Id = x.ExcursionId,
                    Name = x.Name,
                    Duration = (int)DbFunctions.DiffDays(x.StartDate, x.EndDate),
                    Destination = x.Destination.Country,
                    ClientsCount = x.Clients,
                    TotalIncome = x.PricePerClient * x.Clients,
                    TransportCompany = x.Transport.CompanyName,
                    TransportType = x.Transport.Type.ToString(),
                    GuideName = x.Guide.Name,
                    ExpenseId = x.ExpenseId
                }).ToList();

                var reportNames = reportsContext.GetAll<Report>().Select(x => x.Name).ToList();
                foreach (var report in allReports)
                {
                    if (!reportNames.Contains(report.Name))
                    {
                        reportsContext.Add(report);
                    }
                }

                reportsContext.SaveChanges();
            }
        }
        public string[,] GenerateReports(TravelAgencyDbContext db)
        {
            using (var reportsContext = new ReportsFluentModel())
            {
                var schemaHandler = reportsContext.GetSchemaHandler();

                var sqliteReports = this.sqliteReader.GetData();

                var currentReports = reportsContext.GetAll <Report>().Select(x => new
                {
                    Name      = x.Name,
                    ExpenseId = x.ExpenseId,
                    Income    = x.TotalIncome
                }).ToList();

                var finalReportsLength = currentReports.Count;

                string[,] finalReports = new string[finalReportsLength, 2];

                for (int i = 0; i < finalReportsLength; i++)
                {
                    var currentReport = currentReports[i];
                    foreach (var sqliteReport in sqliteReports)
                    {
                        if (sqliteReport.Key == currentReport.ExpenseId)
                        {
                            var expenseToAdd = currentReport.Income - sqliteReport.Value;
                            finalReports[i, 0] = currentReport.Name;
                            finalReports[i, 1] = sqliteReport.Value.ToString();
                        }
                    }
                }

                return(finalReports);
            }
        }
        public string[,] GenerateReports(TravelAgencyDbContext db)
        {
            using (var reportsContext = new ReportsFluentModel())
            {
                var schemaHandler = reportsContext.GetSchemaHandler();

                var sqliteReports = this.sqliteReader.GetData();

                var currentReports = reportsContext.GetAll<Report>().Select(x => new
                {
                    Name = x.Name,
                    ExpenseId = x.ExpenseId,
                    Income = x.TotalIncome
                }).ToList();

                var finalReportsLength = currentReports.Count;

                string[,] finalReports = new string[finalReportsLength, 2];

                for (int i = 0; i < finalReportsLength; i++)
                {
                    var currentReport = currentReports[i];
                    foreach (var sqliteReport in sqliteReports)
                    {
                        if (sqliteReport.Key == currentReport.ExpenseId)
                        {
                            var expenseToAdd = currentReport.Income - sqliteReport.Value;
                            finalReports[i, 0] = currentReport.Name;
                            finalReports[i, 1] = sqliteReport.Value.ToString();
                        }
                    }
                }

                return finalReports;
            }
        }