/// <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 AppLogin SyncToDmz(AppLogin appLogin) { var encryptedLogin = Encryptor.EncryptAppLogin(appLogin); var dmzLogin = new UserAuth { UserName = encryptedLogin.UserName, GuId = encryptedLogin.GuId, Password = encryptedLogin.Password, ProfileId = encryptedLogin.PersonId, Salt = encryptedLogin.Salt }; _dmzUserRepository.Insert(dmzLogin); _dmzUserRepository.Save(); return(encryptedLogin); }
/// <summary> /// Creates a MobileToken and inserts it into the database. /// </summary> /// <param name="token">MobileToken to be created.</param> /// <returns>The created MobileToken.</returns> public MobileToken Create(MobileToken token) { var randomToken = GenerateToken(); //Check if tokens exists var exists = true; while (exists) { if (_repo.AsQueryable().Any(x => x.Token.Equals(randomToken))) { randomToken = GenerateToken(); } else { exists = false; } } token.Token = randomToken; token.Guid = Guid.NewGuid(); token.Status = MobileTokenStatus.Created; if (token.Status == MobileTokenStatus.Created) { token.StatusToPresent = "Oprettet"; } if (token.Status == MobileTokenStatus.Activated) { token.StatusToPresent = "Aktiveret"; } var createdToken = _repo.Insert(token); _repo.Save(); var dmzToken = new Token { Status = (int)createdToken.Status, GuId = createdToken.Guid.ToString(), TokenString = createdToken.Token, ProfileId = createdToken.PersonId, }; dmzToken = Encryptor.EncryptToken(dmzToken); _tokenRepo.Insert(dmzToken); _tokenRepo.Save(); return(createdToken); }
/// <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(); }
/// <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); } } }