public void Create(Subscription subscription) { _subscriptionDbContext.Subscriptions.Add(subscription); _subscriptionDbContext.SaveChangesAsync(); _subscriptionDbContext.SubscriptionJobs.Add(new SubscriptionJob() { ExecutionDate = subscription.EndDate, IsExecuted = false, SubscriptionId = subscription.Id }); _subscriptionDbContext.Entry(subscription).State = EntityState.Detached; _subscriptionDbContext.SaveChangesAsync(); }
public void RenewSubscriptions() { var subscriptionJobsToBeRenewed = _dbContext.SubscriptionJobs .Where(s => !s.IsExecuted && s.ExecutionDate <= DateTime.Now).ToList(); foreach (var subscriptionJob in subscriptionJobsToBeRenewed) { var subscription = _dbContext.Subscriptions.FirstOrDefault(s => s.Id == subscriptionJob.SubscriptionId); subscription.StartDate = DateTime.Now; subscription.EndDate = DateTime.Now.AddDays(30); _dbContext.Subscriptions.Update(subscription); subscriptionJob.IsExecuted = true; _dbContext.SubscriptionJobs.Add(new SubscriptionJob() { ExecutionDate = subscription.EndDate, IsExecuted = false, SubscriptionId = subscription.Id }); _dbContext.SaveChangesAsync(); _logger.LogInformation($"Subscription with id {subscription.Id} renewed"); } }