/// <summary> /// Syncs all People from OS2 database to DMZ database. /// </summary> public void SyncToDmz() { var i = 0; var personList = _masterPersonRepo.AsQueryable().ToList(); var max = personList.Count; foreach (var person in personList) { i++; if (i % 10 == 0) { Console.WriteLine("Syncing person " + i + " of " + max); } var dmzPerson = _dmzProfileRepo.AsQueryable().FirstOrDefault(x => x.Id == person.Id); var homeAddress = _personService.GetHomeAddress(person); var profile = new Profile { Id = person.Id, FirstName = person.FirstName, LastName = person.LastName, HomeLatitude = homeAddress != null ? homeAddress.Latitude : "0", HomeLongitude = homeAddress != null ? homeAddress.Longitude : "0", Initials = person.Initials, FullName = person.FullName, IsActive = person.IsActive }; profile = Encryptor.EncryptProfile(profile); if (dmzPerson == null) { _dmzProfileRepo.Insert(profile); } else { dmzPerson.FirstName = profile.FirstName; dmzPerson.LastName = profile.LastName; dmzPerson.HomeLatitude = profile.HomeLatitude; dmzPerson.HomeLongitude = profile.HomeLongitude; dmzPerson.Initials = profile.Initials; dmzPerson.FullName = profile.FullName; dmzPerson.IsActive = profile.IsActive; } } _dmzProfileRepo.Save(); SyncEmployments(); }
public void RemoveFromDmz(int personId) { var users = _dmzUserRepository.AsQueryable().Where(x => x.ProfileId == personId).ToList(); _dmzUserRepository.DeleteRange(users); _dmzUserRepository.Save(); }
public void SetUp() { _dmzRateList = new List <Rate>(); _masterRateList = new List <Core.DomainModel.Rate>(); _dmzRepoMock = NSubstitute.Substitute.For <IGenericDmzRepository <Core.DmzModel.Rate> >(); _masterRepoMock = NSubstitute.Substitute.For <IGenericRepository <Core.DomainModel.Rate> >(); _dmzRepoMock.WhenForAnyArgs(x => x.Insert(new Core.DmzModel.Rate())).Do(p => _dmzRateList.Add(p.Arg <Core.DmzModel.Rate>())); _dmzRepoMock.AsQueryable().Returns(_dmzRateList.AsQueryable()); _uut = new RateSyncService(_dmzRepoMock, _masterRepoMock); }
/// <summary> /// Syncs all rates from OS2 database to DMZ database. /// </summary> public void SyncToDmz() { var i = 0; var currentYear = DateTime.Now.Year; var rateList = _masterRateRepo.AsQueryable().Where(x => x.Active && x.Year == currentYear).ToList(); var max = rateList.Count; foreach (var masterRate in rateList) { i++; if (i % 10 == 0) { Console.WriteLine("Syncing rate " + i + " of " + max); } var rate = new Core.DmzModel.Rate() { Id = masterRate.Id, Description = masterRate.Type.Description, Year = masterRate.Year.ToString() }; var dmzRate = _dmzRateRepo.AsQueryable().FirstOrDefault(x => x.Id == rate.Id); if (dmzRate == null) { _dmzRateRepo.Insert(rate); } else { dmzRate.Description = rate.Description; dmzRate.Year = rate.Year; } } _dmzRateRepo.Save(); }
public void SetUp() { _dmzRepoMock = NSubstitute.Substitute.For <IGenericDmzRepository <Profile> >(); _masterRepoMock = NSubstitute.Substitute.For <IGenericRepository <Person> >(); _personServiceMock = NSubstitute.Substitute.For <IPersonService>(); _dmzRepoMock.WhenForAnyArgs(x => x.Delete(new Profile())).Do(p => _dmzProfileList.Remove(p.Arg <Profile>())); _personServiceMock.GetHomeAddress(new Person()).ReturnsForAnyArgs(new PersonalAddress() { Latitude = "1", Longitude = "2" }); _dmzRepoMock.WhenForAnyArgs(x => x.Insert(new Profile())).Do(t => _dmzProfileList.Add(t.Arg <Profile>())); _dmzProfileList = new List <Profile>(); _masterPersonList = new List <Person>() { new Person() { Id = 1, IsActive = true, FirstName = "Test", LastName = "Testesen", Initials = "TT", FullName = "Test Testesen [TT]", Employments = new List <Employment>() { new Employment() { Id = 1, PersonId = 1, Position = "Tester", OrgUnit = new OrgUnit() { LongDescription = "IT Minds" } } } }, new Person() { Id = 2, FirstName = "Lars", IsActive = true, LastName = "Testesen", Initials = "LT", FullName = "Lars Testesen [LT]", Employments = new List <Employment>() { new Employment() { Id = 1, PersonId = 2, Position = "Tester2", OrgUnit = new OrgUnit() { LongDescription = "IT Minds" } } } }, new Person() { Id = 3, IsActive = true, FirstName = "Preben", LastName = "Testesen", Initials = "PT", FullName = "Preben Testesen [PT]", Employments = new List <Employment>() { new Employment() { Id = 1, PersonId = 3, Position = "Tester3", OrgUnit = new OrgUnit() { LongDescription = "IT Minds" } } } } }; _masterRepoMock.AsQueryable().ReturnsForAnyArgs(_masterPersonList.AsQueryable()); _dmzRepoMock.AsQueryable().ReturnsForAnyArgs(_dmzProfileList.AsQueryable()); _uut = new PersonSyncService(_dmzRepoMock, _masterRepoMock, _personServiceMock); }
/// <summary> /// Synchronizes all DriveReports from DMZ to OS2 database. /// </summary> public void SyncFromDmz() { var reports = _dmzDriveReportRepo.AsQueryable().Where(x => x.SyncedAt == null).ToList(); var max = reports.Count; for (var i = 0; i < max; i++) { var coordinatesFailed = false; var dmzReport = reports[i]; dmzReport.Profile = Encryptor.DecryptProfile(dmzReport.Profile); Console.WriteLine("Syncing report " + i + " of " + max + " from DMZ."); var rate = _rateRepo.AsQueryable().First(x => x.Id.Equals(dmzReport.RateId)); var points = new List <DriveReportPoint>(); var viaPoints = new List <DriveReportPoint>(); for (var j = 0; j < dmzReport.Route.GPSCoordinates.Count; j++) { var gpsCoord = dmzReport.Route.GPSCoordinates.ToArray()[j]; gpsCoord = Encryptor.DecryptGPSCoordinate(gpsCoord); points.Add(new DriveReportPoint { Latitude = gpsCoord.Latitude, Longitude = gpsCoord.Longitude, }); if (gpsCoord.IsViaPoint || j == 0 || j == dmzReport.Route.GPSCoordinates.Count - 1) { try { var address = _coordinates.GetAddressFromCoordinates(new Address { Latitude = gpsCoord.Latitude, Longitude = gpsCoord.Longitude }); viaPoints.Add(new DriveReportPoint() { Latitude = gpsCoord.Latitude, Longitude = gpsCoord.Longitude, StreetName = address.StreetName, StreetNumber = address.StreetNumber, ZipCode = address.ZipCode, Town = address.Town, }); } catch (AddressCoordinatesException e) { coordinatesFailed = true; _logger.Log("Indberetning tilhørende " + dmzReport.Profile.FullName + " med formål \"" + dmzReport.Purpose + "\" har ugyldige koordinater og blev ikke synkroniseret.", "dmz", e, 2); break; } } } if (coordinatesFailed) { continue; } var licensePlate = _licensePlateRepo.AsQueryable().FirstOrDefault(x => x.PersonId.Equals(dmzReport.ProfileId) && x.IsPrimary); var plate = licensePlate != null ? licensePlate.Plate : "UKENDT"; var newReport = new Core.DomainModel.DriveReport { IsFromApp = true, Distance = dmzReport.Route.TotalDistance, KilometerAllowance = dmzReport.Route.GPSCoordinates.Count > 0 ? KilometerAllowance.Calculated : KilometerAllowance.Read, // Date might not be correct. Depends which culture is delivered from app. // https://msdn.microsoft.com/en-us/library/cc165448.aspx DriveDateTimestamp = (Int32)(Convert.ToDateTime(dmzReport.Date).Subtract(new DateTime(1970, 1, 1)).TotalSeconds), CreatedDateTimestamp = (Int32)(Convert.ToDateTime(dmzReport.Date).Subtract(new DateTime(1970, 1, 1)).TotalSeconds), StartsAtHome = dmzReport.StartsAtHome, EndsAtHome = dmzReport.EndsAtHome, Purpose = dmzReport.Purpose, PersonId = dmzReport.ProfileId, EmploymentId = dmzReport.EmploymentId, KmRate = rate.KmRate, TFCode = rate.Type.TFCode, UserComment = dmzReport.ManualEntryRemark, Status = ReportStatus.Pending, FullName = dmzReport.Profile.FullName, LicensePlate = plate, Comment = "", DriveReportPoints = viaPoints }; newReport.RouteGeometry = GeoService.Encode(points); try { _driveService.Create(newReport); reports[i].SyncedAt = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; _dmzDriveReportRepo.Save(); } catch (Exception e) { _logger.Log("En ukendt fejl opstod under synkronisering af indberetning tilhørende " + reports[i].Profile.FullName + ". Indberetningen blev ikke synkroniseret.", "dmz", e, 2); } } }
public void SetUp() { _emplRepo = NSubstitute.Substitute.For <IGenericRepository <Employment> >(); _logger = NSubstitute.Substitute.For <ILogger>(); _dmzRepoMock = NSubstitute.Substitute.For <IGenericDmzRepository <Core.DmzModel.DriveReport> >(); _coordinatesMock = NSubstitute.Substitute.For <IAddressCoordinates>(); _masterRepoMock = NSubstitute.Substitute.For <IGenericRepository <Core.DomainModel.DriveReport> >(); _driveReportServiceMock = NSubstitute.Substitute.For <IDriveReportService>(); _rateRepoMock = NSubstitute.Substitute.For <IGenericRepository <Rate> >(); _licensePlateRepoMock = NSubstitute.Substitute.For <IGenericRepository <LicensePlate> >(); _routeMock = NSubstitute.Substitute.For <IRoute <RouteInformation> >(); _routeMock.GetRoute(DriveReportTransportType.Car, new List <Address>()).ReturnsForAnyArgs(new RouteInformation() { GeoPoints = "geogeo" }); _coordinatesMock.GetAddressFromCoordinates(new Address()).ReturnsForAnyArgs(new Address() { Latitude = "1", Longitude = "1", StreetName = "Katrinebjergvej", StreetNumber = "93B", ZipCode = 8200, Town = "Aarhus N" }); _dmzRepoMock.WhenForAnyArgs(x => x.Delete(new Core.DmzModel.DriveReport())).Do(p => _dmzReportList.Remove(p.Arg <Core.DmzModel.DriveReport>())); _driveReportServiceMock.WhenForAnyArgs(x => x.Create(new Core.DomainModel.DriveReport())).Do(rep => _masterReportList.Add(rep.Arg <Core.DomainModel.DriveReport>())); _dmzRepoMock.WhenForAnyArgs(x => x.Insert(new Core.DmzModel.DriveReport())).Do(t => _dmzReportList.Add(t.Arg <Core.DmzModel.DriveReport>())); _rateRepoMock.AsQueryable().ReturnsForAnyArgs(new List <Rate>() { new Rate() { Id = 1, KmRate = 12, Active = true, Year = 2015, Type = new RateType() { Id = 1, RequiresLicensePlate = true, TFCode = "1234", Description = "TestDescription" } } }.AsQueryable()); _licensePlateRepoMock.AsQueryable().ReturnsForAnyArgs(new List <LicensePlate>() { new LicensePlate() { Id = 1, PersonId = 1, Plate = "TestPlate", IsPrimary = true, Description = "TestDesc", } }.AsQueryable()); _dmzReportList = new List <DriveReport>() { new DriveReport() { Id = 1, Purpose = "Test", StartsAtHome = false, EndsAtHome = false, ManualEntryRemark = "ManualEntry", Date = "2015-05-27", EmploymentId = 1, ProfileId = 1, RateId = 1, Profile = new Profile() { FullName = "Test Testesen [TT]" }, Route = new Route() { Id = 1, GPSCoordinates = new List <GPSCoordinate>() { new GPSCoordinate() { Latitude = StringCipher.Encrypt("1", Encryptor.EncryptKey), Longitude = StringCipher.Encrypt("1", Encryptor.EncryptKey), }, new GPSCoordinate() { Latitude = StringCipher.Encrypt("2", Encryptor.EncryptKey), Longitude = StringCipher.Encrypt("2", Encryptor.EncryptKey), } } } }, new DriveReport() { Id = 2, Purpose = "Test2", StartsAtHome = true, EndsAtHome = true, ManualEntryRemark = "ManualEntry", Date = "2015-05-26", EmploymentId = 1, ProfileId = 1, RateId = 1, Profile = new Profile() { FullName = "Test Testesen [TT]" }, Route = new Route() { Id = 2, GPSCoordinates = new List <GPSCoordinate>() { new GPSCoordinate() { Latitude = StringCipher.Encrypt("1", Encryptor.EncryptKey), Longitude = StringCipher.Encrypt("1", Encryptor.EncryptKey), }, new GPSCoordinate() { Latitude = StringCipher.Encrypt("2", Encryptor.EncryptKey), Longitude = StringCipher.Encrypt("2", Encryptor.EncryptKey), } } } } }; _masterRepoMock.AsQueryable().ReturnsForAnyArgs(_masterReportList.AsQueryable()); _dmzRepoMock.AsQueryable().ReturnsForAnyArgs(_dmzReportList.AsQueryable()); _uut = new DriveReportSyncService(_dmzRepoMock, _masterRepoMock, _rateRepoMock, _licensePlateRepoMock, _driveReportServiceMock, _routeMock, _coordinatesMock, _emplRepo, _logger); }