private static void CalculatePercentageChange() { using (CimscoPortalEntities _targetContext = new CimscoPortalEntities()) { //IFormatProvider culture = new System.Globalization.CultureInfo("en-EN", true); decimal _lastTotal; decimal _currentTotal; decimal _percentChange; DateTime _lastInvoiceDate; // = new DateTime(1970, 1, 1); // Convert.ToDateTime("01/01/2000"); ; DateTime _invoiceMonth; foreach (var _energyPointId in _targetContext.EnergyPoints.Select(i => i.EnergyPointId)) { _lastTotal = 0.00M; _currentTotal = 0.00M; _lastInvoiceDate = new DateTime(1970, 1, 1); foreach (var _invoice in _targetContext.InvoiceSummaries.Where(i => i.EnergyPointId == _energyPointId).OrderBy(i => i.InvoiceDate)) { _invoiceMonth = new DateTime(_invoice.InvoiceDate.Year, _invoice.InvoiceDate.Month, 1); if (_invoiceMonth.AddMonths(-1) == _lastInvoiceDate) { _currentTotal = _invoice.InvoiceTotal; _percentChange = 0.0M; if (_lastTotal > 0.00M) { _percentChange = ((_currentTotal - _lastTotal) / _lastTotal) * 100; } } else { _percentChange = -999.0M; } _invoice.PercentageChange = _percentChange; _lastTotal = _currentTotal; _lastInvoiceDate = _invoiceMonth; } } _targetContext.SaveChanges(); } }
private static void SyncSitesToIDE_and_Portal(CimscoNZEntities _masterDataContext) { using (CimscoIDE_dbEntities _ideDataContext = new CimscoIDE_dbEntities()) using (CimscoPortalEntities _portalDataContext = new CimscoPortalEntities()) { //var _sourceSiteIdList = _sourceSites.Select(s => s.SiteId).ToList(); using (var _transaction1 = _ideDataContext.Database.BeginTransaction()) using (var _transaction2 = _portalDataContext.Database.BeginTransaction()) { var _alreadyInTarget1 = (from _targetIds in _ideDataContext.sSites select _targetIds.SiteId).ToList(); var _alreadyInTarget2 = (from _targetIds in _portalDataContext.Sites select _targetIds.SiteId).ToList(); var _sourceMasterData = (from _sourceRecords in _masterDataContext.Sites select _sourceRecords.SiteId).ToList(); _ideDataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Sites] ON"); _portalDataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Sites] ON"); foreach (int _id in _sourceMasterData) { sSite _newRecord1 = _masterDataContext.Sites.Where(s => s.SiteId == _id).ProjectTo<sSite>().FirstOrDefault(); if (_alreadyInTarget1.Contains(_id)) { var _targetRecord = _ideDataContext.sSites.Where(s => s.SiteId == _id).FirstOrDefault(); _ideDataContext.Entry(_targetRecord).CurrentValues.SetValues(_newRecord1); _ideDataContext.SaveChanges(); } else { _ideDataContext.sSites.Add(_newRecord1); _ideDataContext.SaveChanges(); } InvoiceDataUpload.DataTarget.Site _newRecord2 = _masterDataContext.Sites.Where(s => s.SiteId == _id).ProjectTo<InvoiceDataUpload.DataTarget.Site>().FirstOrDefault(); if (_alreadyInTarget2.Contains(_id)) { var _targetRecord = _portalDataContext.Sites.Where(s => s.SiteId == _id).FirstOrDefault(); _portalDataContext.Entry(_targetRecord).CurrentValues.SetValues(_newRecord2); _portalDataContext.SaveChanges(); } else { _portalDataContext.Sites.Add(_newRecord2); _portalDataContext.SaveChanges(); } } _ideDataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Sites] OFF"); _portalDataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[Sites] OFF"); _transaction1.Commit(); _transaction2.Commit(); } } }
private static string SyncEnergySuppliersToIDE_and_Portal(CimscoNZEntities _masterDataContext) { int _updates = 0; int _adds = 0; string _dataType = "Energy Suppliers"; using (CimscoIDE_dbEntities _ideDataContext = new CimscoIDE_dbEntities()) using (CimscoPortalEntities _portalDataContext = new CimscoPortalEntities()) { //var _sourceSiteIdList = _sourceSites.Select(s => s.SiteId).ToList(); using (var _transaction1 = _ideDataContext.Database.BeginTransaction()) using (var _transaction2 = _portalDataContext.Database.BeginTransaction()) { var _alreadyInTarget1 = (from _targetIds in _ideDataContext.sEnergySuppliers select _targetIds.SupplierId).ToList(); var _alreadyInTarget2 = (from _targetIds in _portalDataContext.EnergySuppliers select _targetIds.SupplierId).ToList(); var _sourceMasterData = (from _sourceRecords in _masterDataContext.EnergySuppliers select _sourceRecords.SupplierId).ToList(); _ideDataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[EnergySuppliers] ON"); _portalDataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[EnergySuppliers] ON"); foreach (int _id in _sourceMasterData) { sEnergySupplier _newRecord1 = _masterDataContext.EnergySuppliers.Where(s => s.SupplierId == _id).ProjectTo<sEnergySupplier>().FirstOrDefault(); if (_alreadyInTarget1.Contains(_id)) { var _targetRecord = _ideDataContext.sEnergySuppliers.Where(s => s.SupplierId == _id).FirstOrDefault(); _ideDataContext.Entry(_targetRecord).CurrentValues.SetValues(_newRecord1); _ideDataContext.SaveChanges(); _updates++; } else { _ideDataContext.sEnergySuppliers.Add(_newRecord1); _ideDataContext.SaveChanges(); _adds++; } InvoiceDataUpload.DataTarget.EnergySupplier _newRecord2 = _masterDataContext.EnergySuppliers.Where(s => s.SupplierId == _id).ProjectTo<InvoiceDataUpload.DataTarget.EnergySupplier>().FirstOrDefault(); if (_alreadyInTarget2.Contains(_id)) { var _targetRecord = _portalDataContext.EnergySuppliers.Where(s => s.SupplierId == _id).FirstOrDefault(); _portalDataContext.Entry(_targetRecord).CurrentValues.SetValues(_newRecord2); _portalDataContext.SaveChanges(); _updates++; } else { _portalDataContext.EnergySuppliers.Add(_newRecord2); _portalDataContext.SaveChanges(); _adds++; } } _ideDataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[EnergySuppliers] OFF"); _portalDataContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[EnergySuppliers] OFF"); _transaction1.Commit(); _transaction2.Commit(); } } return String.Format("{2}: Additions : {0}, Updates : {1}", _adds.ToString(), _updates.ToString(), _dataType); }
private static void RemoveDeletedSitesFromIDE_and_Portal(CimscoNZEntities _masterDataContext) { using (CimscoIDE_dbEntities _ideDataContext = new CimscoIDE_dbEntities()) using (CimscoPortalEntities _portalDataContext = new CimscoPortalEntities()) { using (var transaction1 = _portalDataContext.Database.BeginTransaction()) using (var transaction2 = _ideDataContext.Database.BeginTransaction()) { var _recordsInSource = (from _targetIds in _masterDataContext.Sites select _targetIds.SiteId).ToList(); var _deleteFromTarget1 = (from _sourceRecords in _portalDataContext.Sites where !_recordsInSource.Contains(_sourceRecords.SiteId) select _sourceRecords.SiteId).ToList(); var _deleteFromTarget2 = (from _sourceRecords in _ideDataContext.sSites where !_recordsInSource.Contains(_sourceRecords.SiteId) select _sourceRecords.SiteId).ToList(); if (_deleteFromTarget1.Count != _deleteFromTarget2.Count) { // Log event, as these should match } if (_deleteFromTarget1.Count > 0) { foreach (int _id in _deleteFromTarget1) { var _removeRecord = new InvoiceDataUpload.DataTarget.Site { SiteId = _id }; _portalDataContext.Sites.Attach(_removeRecord); _portalDataContext.Sites.Remove(_removeRecord); } _portalDataContext.SaveChanges(); } if (_deleteFromTarget2.Count > 0) { foreach (int _id in _deleteFromTarget2) { var _removeRecord = new sSite { SiteId = _id }; _ideDataContext.sSites.Attach(_removeRecord); _ideDataContext.sSites.Remove(_removeRecord); } _ideDataContext.SaveChanges(); } transaction1.Commit(); transaction2.Commit(); } } }
private static string CopyNewInvoicesToTarget(int span, int invoiceId) { int _adds = 0; // IEnumerable<DataSource.sInvoiceSummary> _all = _sourceContext.sInvoiceSummaries.Where(s => s.EnergyCharge.BD0004 > 0.0M); CimscoPortalEntities _targetContext = new CimscoPortalEntities(); CimscoIDE_dbEntities _sourceContext = new CimscoIDE_dbEntities(); // IEnumerable<DataTarget.InvoiceSummary> _all2 = _targetContext.InvoiceSummaries.Where(s => s.EnergyCharge.BD0004 > 0.0M); DateTime _cutOffDate; switch (span) { case 0: _cutOffDate = new DateTime(2000, 1, 1); break; default: _cutOffDate = DateTime.Now.AddDays(span * -1); break; }; var _newInvoices = (from _source in _sourceContext.sInvoiceSummaries where _source.InvoiceDate > _cutOffDate & _source.CheckedOk == true select _source.InvoiceSummaryId).ToList(); var _invoicesAlreadyInTarget = (from _target in _targetContext.InvoiceSummaries where _newInvoices.Contains(_target.InvoiceId) select _target.InvoiceId).ToList(); foreach (int _id in _newInvoices) { if (!_invoicesAlreadyInTarget.Contains(_id)) { InvoiceSummary _new = _sourceContext.sInvoiceSummaries.Where(s => s.InvoiceSummaryId == _id) .ProjectTo<InvoiceSummary>().FirstOrDefault(); _targetContext.InvoiceSummaries.Add(_new); _targetContext.SaveChanges(); _adds++; } } return String.Format("Invoices copied : {0}\n", _adds.ToString()); }