private void CreateUserkeyPackage(string packageId, int userkeyId) {
     DateTime? registeredUtc = _clock.UtcNow;
     var existingUserkeyPackage = _userkeyPackageRepository.Fetch(up => up.PackageId == packageId).FirstOrDefault();
     if (existingUserkeyPackage != null) {
         registeredUtc = existingUserkeyPackage.RegisteredUtc;
     }
     var userkeyPackage = new UserkeyPackage { PackageId = packageId, UserkeyId = userkeyId, RegisteredUtc = registeredUtc };
     _userkeyPackageRepository.Create(userkeyPackage);
 }
 public void NotifyUserIfPackageIdIsAboutToExpire(UserkeyPackage userkeyPackage, DateTime utcNow, DateTime expirationDate,
     bool packageIdIsNotInUseOnFeed) {
     int? daysToWarn = _typeCaster.CastTo<GallerySettingsPart>(_orchardServices.WorkContext.CurrentSite).DaysInAdvanceToWarnUserOfExpiration;
     if (daysToWarn.HasValue) {
         bool packageIdAtWarnDate = utcNow.Date == expirationDate.Date.AddDays(-daysToWarn.Value);
         if (packageIdAtWarnDate && packageIdIsNotInUseOnFeed) {
             _expiredPackageIdMessenger.SendMessage(userkeyPackage, expirationDate);
         }
     }
 }
 public void SendMessage(UserkeyPackage userkeyPackage, DateTime expirationDate) {
     UserPart user = _userkeyService.GetUserForUserKey(userkeyPackage.UserkeyId);
     if (user == null) {
         return;
     }
     var terms = new Dictionary<string, string> {
         {"UserName", user.UserName},
         {"SiteName", _orchardServices.WorkContext.CurrentSite.SiteName},
         {"PackageId", userkeyPackage.PackageId},
         {"ExpirationDate", expirationDate.ToShortDateString()}
     };
     _messageManager.Send(user.ContentItem.Record, GalleryMessageTypes.PackageIdExpirationWarning, "email", terms);
 }
 private DateTime? GetExpirationDate(UserkeyPackage userkeyPackage, PackageIdStatus status) {
     int? daysBeforeExpiration = _orchardServices.WorkContext.CurrentSite.As<GallerySettingsPart>().NumberOfDaysUntilPreregisteredPackageIdExpires;
     DateTime? expirationDate = null;
     bool isPreregistered = status == PackageIdStatus.Registered || status == PackageIdStatus.Unfinished;
     if (isPreregistered && userkeyPackage.RegisteredUtc.HasValue && daysBeforeExpiration.HasValue) {
         expirationDate = userkeyPackage.RegisteredUtc.Value.AddDays(daysBeforeExpiration.Value);
     }
     return expirationDate;
 }